配置指导:Ceph存储对接OpenStack开源云平台
Ceph存储对接OpenStack开源云平台
1 目标
本文档使用Stein版OpenStack开源云平台与Nautilus版Ceph存储集群,实现OpenStack与Ceph的集成。
2 Ceph简介
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(RDB)、对象存储服务(RGW)以及文件系统存储服务(CephFS)。目前也是OpenStack的主流后端存储,为OpenStack提供统一共享的存储服务。
Ceph的整体架构如下图所示:

3 OpenStack简介
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,而不是一个软件。由NASA(美国国家航空航天局)和Rackspace合作研发,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)进行开源授权。我们可以使用OpenStack来管理一个数据中心的大量硬件资源,起初它主要有计算、存储、网络三大子项目,面向IaaS服务。发展至今,整个生态已经涉及到PaaS服务、SaaS服务和FaaS服务等层面。
OpenStack项目的整体框架如下图所示:

4 OpenStack集成Ceph做存储后端的优势
使用Ceph作为OpenStack后端存储,具有如下优点:
- 计算节点共享存储,可以保证实例运行时的健壮性,也可以实现各节点间实例的快速迁移;
- 统一平台提供多种类型存储,减轻部署复杂度与工作量,可在运行时灵活扩展;
- 利用COW特性,从而可以实现云平台秒级创建实例;
5 实验环境
5.1 系统与软件版本
- CEPH:Nautilus 14.2.9(鹦鹉螺)稳定版;
- OpenStack:Stein (April 2019);
- 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo);
5.2 节点配置与部署架构
本次实验共使用了4台节点,OpenStack与Ceph已经提前部署完成,为节省资源进行了角色融合。其中,node-01、node-02、node-03为3个节点的N版Ceph存储集群,同时也是OpenStack的计算节点。在部署OpenStack时,考虑到现有3个节点的承载能力,新加入一台节点node-00作为OpenStack的云控节点。
各节点的配置与角色设置如下表所示:
主机名 | IP地址 | 处理器 | 内存 | 硬盘 | 节点角色 |
---|---|---|---|---|---|
node-00 | 192.168.2.80 管理网 | 8C | 16G | 200G 系统盘 | 云控节点 |
node-01 | 192.168.2.81 管理网 192.168.20.81 存储网 | 8C | 32G | 100G 系统盘 200G*5 OSD | 计算节点/存储节点 |
node-02 | 192.168.2.82 管理网 192.168.20.82 存储网 | 8C | 32G | 100G 系统盘 200G*5 OSD | 计算节点/存储节点 |
node-03 | 192.168.2.83 管理网 192.168.20.83 存储网 | 8C | 32G | 100G 系统盘 200G*5 OSD | 计算节点/存储节点 |
表5-1:节点配置与角色
部署架构如下图所示:

6 集成步骤
6.1 创建所需存储池
- 为OpenStack创建所需的RBD存储池:
[root@node-01 ~]# ceph osd pool create volumes
[root@node-01 ~]# ceph osd pool create images
[root@node-01 ~]# ceph osd pool create vms
- 初始化RBD存储池:
[root@node-01 ~]# rbd pool init volumes
[root@node-01 ~]# rbd pool init images
[root@node-01 ~]# rbd pool init vms
- 设置存储池类型:
[root@node-01 ~]# ceph osd pool application enable volumes rbd
[root@node-01 ~]# ceph osd pool application enable images rbd
[root@node-01 ~]# ceph osd pool application enable vms rbd
- 检查存储池创建结果:
[root@node-01 ~]# ceph osd pool ls
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data
default.rgw.buckets.non-ec
volumes
images
vms
CFS_Data
CFS_Metadata
6.2 配置Ceph客户端
- 导出Ceph配置文件到OpenStack中的所有节点,对于本文档,仅需导出至云控节点(node-00):
[root@node-00 ~]# mkdir /etc/ceph/
[root@node-00 ~]# scp node-01:/etc/ceph/ceph.conf /etc/ceph/
- 在云控节点上(node-00):
[root@node-00 ~]# yum install python-rbd
[root@node-00 ~]# yum install ceph-common
6.3 配置Glance使用Ceph RBD
- 在Glance的控制节点中(node-00),修改 /etc/glance/glance-api.conf 配置文件:
[DEFAULT]
……
show_image_direct_url = True
show_multiple_locations = True
......
[glance_store]
stores = rbd,file
filesystem_store_datadir = /var/lib/glance/images
default_store = rbd
rbd_store_pool = images
rbd_store_user = admin
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
6.4 配置Cinder使用Ceph RBD
- 在所有存储节点中(node-00、node-01、node-02、node-03),修改 /etc/cinder/cinder.conf 配置文件:
[DEFAULT]
……
enabled_backends = ceph
glance_api_version = 2
……
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
6.5 配置Nova使用Ceph RBD
- 在所有计算节点中,向配置文件/etc/nova/nova.conf中增加如下部分:
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2
6.6 重启OpenStack服务使生效
- 在云控节点中(node-00):
[root@node-00 ~]# systemctl restart openstack-glance-api.service
- 在各个计算/存储节点中(node-01/node-02/node-03):
[root@node-01 ~]# systemctl restart openstack-nova-compute.service
[root@node-01 ~]# systemctl restart openstack-cinder-volume.service
[root@node-02 ~]# systemctl restart openstack-nova-compute.service
[root@node-02 ~]# systemctl restart openstack-cinder-volume.service
[root@node-03 ~]# systemctl restart openstack-nova-compute.service
[root@node-03 ~]# systemctl restart openstack-cinder-volume.service
7 结果验证
- Glance:

[root@node-00 ~]# rbd ls images
……
75978fcd-1f18-477b-8ce4-9ce7ac47b353
- Cinder:

[root@node-00 ~]# rbd ls volumes
……
volume-62bc9247-8f4a-4604-990c-10c42c9ee48e
- Nova:

[root@node-00 ~]# rbd ls volumes
……
volume-c0387940-3bd9-47c5-942f-38e287722bfb
8 参考资料
【1】 官方文档:BLOCK DEVICES AND OPENSTACK
【2】 Glance&Cinder集成Ceph
【3】 Nova集成Ceph
如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com