Ceph + OpenStack :: Part-2
配置 OpenStack
OpenStack 的两部分与 Ceph 的块设备集成
- 镜像: OpenStack Glance 管理 VM 的镜像。
- 卷: 卷是块设备。OpenStack 使用卷来启动 VM,或将卷附加到正在运行的 VM。OpenStack 使用 Cinder 服务来管理卷。
- 为卷和镜像创建池
ceph osd pool create volumes 128
ceph osd pool create images 128
- 配置 OpenStack Ceph 客户端 - 运行 glance-api 和 cinder-volume 的节点充当 Ceph 客户端。每个节点都需要 ceph.conf 文件
[root@ceph-mon1 ceph]# scp ceph.conf openstack:/etc/ceph
- 在 openstack 节点上安装 ceph 客户端包
- 首先安装 librbd 的 Python 绑定
yum install python-ceph
- 安装 ceph
[root@ceph-mon1 ceph]# ceph-deploy install openstack
- 为两个池以及密钥环设置 Ceph 客户端身份验证
- 为 Nova/Cinder 和 Glance 创建一个新用户。
ceph auth get-or-create client.volumes mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images'
ceph auth get-or-create client.images mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
- 将这些密钥环添加到 glance-api 和 cinder-volume 节点。
ceph auth get-or-create client.images | ssh openstack tee /etc/ceph/ceph.client.images.keyring
ssh openstack chown glance:glance /etc/ceph/ceph.client.images.keyring
ceph auth get-or-create client.volumes | ssh openstack tee /etc/ceph/ceph.client.volumes.keyring
ssh openstack chown cinder:cinder /etc/ceph/ceph.client.volumes.keyring
- 运行 nova-compute 的主机不需要密钥环。相反,它们将密钥存储在 libvirt 中。要创建 libvirt 密钥,您需要 client.volumes 的密钥。
ceph auth get-key client.volumes | ssh openstack tee client.volumes.key
- 在计算节点上,将密钥添加到
libvirt create a secret.xml file
- 在计算节点上,将密钥添加到
cat > secret.xml < <EOF
EOF
- 从创建的 secret.xml 文件生成密钥,记下密钥输出的 uuid
# virsh secret-define --file secret.xml
- 使用上述密钥设置 libvirt 密钥
# virsh secret-set-value --secret {uuid of secret} --base64 $(cat client.volumes.key) && rm client.volumes.key secret.xml
- 配置 OpenStack-Glance 以使用 CEPH
- Glance 可以使用多个后端来存储镜像。要默认使用 Ceph 块设备,请编辑
/etc/glance/glance-api.conf并添加
- Glance 可以使用多个后端来存储镜像。要默认使用 Ceph 块设备,请编辑
default_store=rbd
rbd_store_user=images
rbd_store_pool=images
- 如果想要启用镜像到卷的复制写入克隆,还添加
show_image_direct_url=True
- 配置 OpenStack - Cinder 以使用 CEPH
- OpenStack 需要一个驱动程序来与 Ceph 块设备交互。您必须指定块设备的池名称。在您的 OpenStack 节点上,编辑
/etc/cinder/cinder.conf并添加
- OpenStack 需要一个驱动程序来与 Ceph 块设备交互。您必须指定块设备的池名称。在您的 OpenStack 节点上,编辑
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_pool=volumes
glance_api_version=2
- 如果您正在使用 cephx 身份验证,还配置用户和添加到
libvirt的密钥的 uuid
rbd_user=volumes
rbd_secret_uuid={uuid of secret}
- 重启 Openstack
service glance-api restart
service nova-compute restart
service cinder-volume restart
- 一旦 OpenStack 启动并运行,您应该能够使用 OpenStack 在 Ceph 块设备上创建一个卷。
- 注意: 确保 /etc/ceph/ceph.conf 文件具有足够的权限,以便 cinder 和 glance 用户读取。