准备好了吗,DevStack Ceph 来了!
在过去的一年多里,Ceph 变得越来越流行,并在 OpenStack 内部和外部进行了多次部署。对于那些不了解 Ceph 的人来说,它是一种统一的、分布式的、可大规模扩展的开源存储技术,它提供了多种访问和使用数据的途径,例如对象存储、块存储和文件系统。社区和 Ceph 本身已经得到了极大的发展。更多的开发者也加入了这个项目。自从我加入 eNovance 以来,我就一直在考虑为 DevStack 构建 Ceph 支持。DevStack 是一系列文档化的 shell 脚本,用于构建完整的 OpenStack 开发环境。我终于有时间来实现这一点。这并不容易,经过 7 个月和 42 个补丁集(我想答案是 42),我的补丁被合并到了 DevStack 中。这是 review 的链接:https://review.openstack.org/#/c/65113/
虽然花了一段时间才将它集成到 DevStack 中,但是由于这个补丁,DevStack 获得了一些改进和新功能,我们将在本文中讨论这些改进和新功能。
它做了什么?
基本上,这个补丁会为你配置所有内容。所以它将启动一个 Ceph 集群,然后配置所有的 OpenStack 服务,这意味着:Glance、Cinder、Cinder 备份和 Nova。许多事情都可以配置,例如 Ceph 大小、池名称、用户名、副本级别。将副本计数设置为大于 1 除非你想查看 Ceph 的复制,否则没有意义。使用副本计数 2,将在完全相同的环回设备内启动 2 个 OSD。因此 Ceph 会报告有两倍于存储对象的空间,这并不真实。所以要小心。我相信这可能会在未来得到改进,但再次强调,DevStack 是一个开发平台,而不是生产环境。DevStack Swift 对复制也做了同样的事情。
这个补丁依赖于最近进入 DevStack 的一个补丁,即 Cinder 多后端支持。因此,感谢 Dean Troyer,我们现在可以使用多个后端来支持 Cinder。这个补丁对于将 Ceph 集成到 DevStack 中至关重要。要使用它,只需将 CINDER_ENABLED_BACKENDS 标志添加到你的 localrc 文件中。然后附加逗号分隔的后端名称。
由于 Ceph,还引入了一个新的功能,即为 extras.d 插件执行预安装阶段的能力。一个额外的钩子调用 extras.d 插件,在任何服务安装发生之前调用。这在列出先决条件系统包的安装和实际服务的安装之间调用。
./stack.sh
下面你将找到一个完整的 localrc 示例,其中包含你可以使用的每个变量。当然,每个变量,例如 USERS、POOL、PG 都是非强制性的,我们为这些变量提供了默认值
# 杂项 DATABASE_PASSWORD=password ADMIN_PASSWORD=password SERVICE_PASSWORD=password SERVICE_TOKEN=password RABBIT_PASSWORD=password
启用日志记录
LOGFILE=/opt/stack/logs/stack.sh.log VERBOSE=True LOG_COLOR=True SCREEN_LOGDIR=/opt/stack/logs
先决条件
ENABLED_SERVICES=rabbit,mysql,key
Ceph!
ENABLED_SERVICES+=,ceph CEPH_LOOPBACK_DISK_SIZE=10G CEPH_CONF=/etc/ceph/ceph.conf CEPH_REPLICAS=1
Glance - 镜像服务
ENABLED_SERVICES+=,g-api,g-reg GLANCE_CEPH_USER=glancy GLANCE_CEPH_POOL=imajeez
Cinder - 块设备服务
ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak CINDER_DRIVER=ceph CINDER_CEPH_USER=cindy CINDER_CEPH_POOL=volumeuh CINDER_CEPH_UUID=6d52eb95-12f3-47e3-9eb9-0c1fe4142426 CINDER_BAK_CEPH_POOL=backeups CINDER_BAK_CEPH_USER=cind-backeups CINDER_ENABLED_BACKENDS=ceph,lvm
Nova - 计算服务
ENABLED_SERVICES+=,n-api,n-crt,n-cpu,n-cond,n-sch,n-net NOVA_CEPH_POOL=vmz
为什么它有用?
正如在介绍中提到的,许多组织对 Ceph 感兴趣,因此他们致力于新的功能。由于 DevStack 是 OpenStack 中进行编程的事实平台,因此对 DevStack Ceph 的需求是自然而然的。
这个补丁是我对 Juno 周期 Ceph 集成到 OpenStack 工作的一部分。我感谢社区对这个补丁的支持。看到许多人希望 Ceph 能够集成到 DevStack 中很重要,这对我帮助很大,并给了我坚持下去的动力。更多内容正在到来,我们目前正在努力将 Ceph 集成到 CI 网关中,以便我们可以更轻松地接受我们的补丁,并且也适用于 Cinder,因为它需要每个卷后端进行 CI。
祝你 DevStack 使用愉快!