openstack外接ceph
一、概述
在实际交付过程中,由于某些原因,可能会碰到不需要kolla部署ceph,而是集成一套已存在ceph集群的情况,这种需求也是合理的。 在这种情况下,需要调整部分kolla的配置。
二、环境准备
1. 已存在的ceph集群(关于ceph的安装部署请参考http://blog.csdn.net/dylloveyou/article/details/79054120)
2. openstack需要的pool已经创建完成,集成之后各个project的数据会保存在对应的pool中
- cinder-volumes (Cinder-volume)
- glance-images (Glance)
- cinder-backups (Cinder-Backup)
- nova-vms (Nova)
三、开启外接ceph功能
使用外接ceph意味着不需要通过kolla去部署ceph。因此需要在全局配置中关闭ceph组件。编辑 /etc/kolla/globals.yml
,配置如下:
enable_ceph: “no
glance_backend_ceph: "yes"
cinder_backend_ceph: "yes"
nova_backend_ceph: "yes"
enable_ceph: "no"
和 <service>_backend_ceph:"yes"
会触发kolla的外接ceph集群的机制。
四、配置Kolla
Glance
1.为 glance-api.conf
配置RBD 后端
编辑 /etc/kolla/config/glance/glance-api.conf
文件,加入如下配置:
[glance_store]
stores = rbd
default_store = rbd
rbd_store_pool = glance-images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
以上配置会被kolla自动合并到glance的配置文件中。
2.拷贝ceph集群配置文件(/etc/ceph/ceph.conf
)到 /etc/kolla/config/glance/ceph.conf
cat /etc/kolla/config/glance/ceph.conf
[global]
fsid = 9c424511-ade9-45e3-be88-24d72232dd7a
mon_initial_members = ceph-node01, ceph-node02, ceph-node03
mon_host = 11.10.37.85,11.10.37.86,11.10.37.87
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_journal_size = 10000
osd_pool_default_size = 2
osd_pool_default_pg_num = 512
osd_pool_default_pgp_num = 512
rbd_default_features = 3
3.生成ceph.client.glance.keyring
文件,并保存到 /etc/kolla/config/glance
目录
在存储mon节点执行命令:
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=glance-images'
为 glance 生成 glance.keyring 文件,并将回显保存在 /etc/kolla/config/glance/ceph.client.glance.keyring
cat /etc/kolla/config/glance/ceph.client.glance.keyring
[client.glance]
key = AQD6gVRasWreLRAAPSlTc1LPIayGjPtvuK1FCw==
Kolla会将所有名称为ceph*的文件拷贝到对应容器中的 /etc/ceph目录中。
Cinder
1. 编辑 /etc/kolla/config/cinder/cinder-volume.conf
,并配置如下内容:
[DEFAULT]
enabled_backends=rbd-1
[rbd-1]
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=cinder
backend_host=storage01
rbd_pool=cinder-volumes
volume_backend_name=rbd-1
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_secret_uuid = {{ cinder_rbd_secret_uuid}}
注: cinder_rbd_secret_uuid
被定义在 /etc/kolla/passwords.yml
中,用来解决虚拟机boot from volume 的bug。
2. 编辑 /etc/kolla/config/cinder/cinder-backup.conf
,并配置如下内容:
[DEFAULT]
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user=cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool=cinder-backups
backup_driver = cinder.backup.drivers.ceph
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true
3. 拷贝ceph的配置文件(/etc/ceph/ceph.conf
)到 /etc/kolla/config/glance/ceph.conf
4. 生成 ceph.client.cinder.keyring
文件
在 ceph mon 节点运行:
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-volumes, allow rwx pool=nova-vms ,allow rx pool=glance-images'
为 cinder 生成 cephx keyring,将回显结果保存在 /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring
和 /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder.keyring
中
在ceph mon节点继续运行:
ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-bakcups'
为 cinder-backu p生成 cephx keyring,将回显结果保存在 /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder-backup.keyring
注: cinder-backup 需要两个 keyring 去连接 cinder-volumes 和 cinder-backups pool
Nova
1. 编辑 /etc/kolla/config/nova/nova-compute.conf
,配置如下内容:
[libvirt]
images_rbd_pool=nova-vms
images_type=rbd
images_rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=nova
2. 生成 ceph.client.nova.keyring 文件
ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=nova-vms'
拷贝ceph.conf, nova client keyring, 和cinder client keyring 到 /etc/kolla/config/nova
ls /etc/kolla/config/nova
ceph.client.cinder.keyring ceph.client.nova.keyring ceph.conf nova-compute.conf
五、部署
kolla使用外接ceph,意味着没有储存节点,而默认情况下cinder-volume和cinder-backup运行在存储节点,外接ceph存储需要指定主机去运行cinder-volume和cinder-backup容器。
编辑multinode文件,修改配置如下(这里把cinder-volume和cinder-backup安装到controller节点):
[storage]
controller01
执行kolla-ansible命令,完成部署
kolla-ansible -i /home/multimode deploy