OpenStack Train版-16.对接Ceph存储


1.集群创建OpenStack所需的存储池和用户(Ceph Mon节点)
创建 OpenStack所需的存储池

ceph osd pool create volumes 128
ceph osd pool create images 32
ceph osd pool create vms 128

同步配置文件

cd /etc/ceph
ceph-deploy --overwrite-conf admin controller compute01 compute02

创建用户并授权

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

同步用户秘钥并修改属主

ceph auth get-or-create client.glance | ssh controller tee /etc/ceph/ceph.client.glance.keyring
ssh controller chown glance:glance /etc/ceph/ceph.client.glance.keyring

ceph auth get-or-create client.cinder | ssh controller tee /etc/ceph/ceph.client.cinder.keyring
ssh controller chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
ceph auth get-or-create client.cinder | ssh compute01 tee /etc/ceph/ceph.client.cinder.keyring
ssh compute01 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
ceph auth get-or-create client.cinder | ssh compute02 tee /etc/ceph/ceph.client.cinder.keyring
ssh compute02 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

2.各计算节点使用相同的UUID增加秘钥到libvirt
生成UUID

UUID=$(uuidgen)
echo $UUID
02aa5663-b0b5-453d-a0ce-1f24c61716c6

生成并同步secret.xml到所有计算节点(同步及增加秘钥部分略)

cd /etc/ceph
cat > secret.xml <
${UUID}

client.cinder secret


EOF

添加密钥到libvirt

virsh secret-define --file secret.xml
Secret 02aa5663-b0b5-453d-a0ce-1f24c61716c6 created

virsh secret-set-value --secret ${UUID} --base64 $(cat /etc/ceph/ceph.client.cinder.keyring | grep key | awk -F ' ' '{ print $3 }')
Secret value set

查看添加后的密钥key和value

virsh secret-list
UUID Usage
--------------------------------------------------------------------------------
02aa5663-b0b5-453d-a0ce-1f24c61716c6 ceph client.cinder secret

查看value

virsh secret-get-value $UUID

3.配置Glance集成Ceph作为后端存储并验证(控制节点)

vim /etc/glance/glance-api.conf
[DEFAULT]
show_image_direct_url = True
[glance_store]
stores = rbd,file,http
default_store = rbd
filesystem_store_datadir = /var/lib/glance/images/
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
#rbd_store_chunk_size = 8
[paste_deploy]
flavor = keystone

重启glance-api服务

systemctl restart openstack-glance-api.service

4.配置Cinder集成Ceph作为后端存储并验证(控制节点和存储节点)

vim /etc/cinder/cinder.conf # 控制节点
[DEFAULT]
default_volume_type = ceph

重启cinder-api和cinder-scheduler服务

systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

存储节点一般会部署到控制节点上,根据实际环境而定

vim /etc/cinder/cinder.conf # 存储节点
[DEFAULT]
enabled_backends = ceph,lvm
[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
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = cinder
rbd_secret_uuid = 02aa5663-b0b5-453d-a0ce-1f24c61716c6 # rbd_secret_uuid的值即为配置Ceph环境保存的UUID值

重启cinder-api和cinder-volume服务

systemctl restart openstack-cinder-volume.service

5.配置Nova集成Ceph(计算节点)

vim /etc/nova/nova.conf
[DEFAULT]
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
[libvirt]
virt_type = kvm
inject_partition=-2
virt_type = kvm
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
disk_cachemodes="network=writeback"
rbd_user = cinder
rbd_secret_uuid = 02aa5663-b0b5-453d-a0ce-1f24c61716c6 # rbd_secret_uuid的值即为配置Ceph环境保存的UUID值

重启nova-compute服务

systemctl restart openstack-nova-compute.service