OpenStack 节点安装 Ceph 客户端
安装方式:
rpm 安装;
yum 安装;
推荐使用 yum 安装,需要为 OpenStack 节点(特指控制节点和计算节点)配置 yum 源。若使用 TECS CloveStorage 部署的 Ceph,可以将 Ceph 管理节点的 /opt/zstor/zagent/zstor-install.repo 文件拷贝到 OpenStack 节点作为源使用,当然前提是里边的网络能通。yum 源配好后,执行 yum install ceph-common -y 安装 Ceph 客户端。
配置用户鉴权
(以下操作如无特别说明,全部在任意一个存储节点执行。)
- 在 Ceph 集群创建三个存储池 images、vms、volumes。
- 在 Ceph 集群创建 client.glance 和 client.cinder 两个用户,并将密钥导出。
ceph auth get-or-create client.glance mgr 'profile rbd pool=images' mon 'profile rbd' osd 'profile rbd pool=images' -o /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder mgr 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images' mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images' -o /etc/ceph/ceph.client.cinder.keyring
权限的配置,是为不同的用户赋予权限访问不通的存储池,如可以使某一用户对指定存储池只具备
可读权限。顾名思义,client.glance、client.cinder 用户分别是给 Glance、Cinder 组件使用,实
际上 Nova 组件也是使用 client.cinder 用户。存储池 images 作为 Glance 的后端存储池,vms 作 为 Nova 的后端存储池,volumes 作为 Cinder 的后端存储池,三个池名可以自定义,对接时注意输入正确的存储池名即可。
ceph auth get-or-create client.glance mgr 'allow *' mon 'allow *' osd 'allow *' -o /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder mgr 'allow *' mon 'allow *' osd 'allow *' -o /etc/ceph/ceph.client.cinder.keyring
- 将 client.cinder 用户的密钥导出到文件(后面配置 libvirt 密钥时需要,临时用)。
ceph auth get-key client.cinder | tee /etc/ceph/client.cinder.key 1
- 将 Ceph 集群配置文件及导出 client.cinder 用户密钥拷贝到所有 OpenStack 节点的 /etc/ceph/
目录。
scp /etc/ceph/ceph.conf /etc/ceph/ceph.client.glance.keyring /etc/ceph/ceph.client.cinder.keyring /etc/ceph/client.cinder.key xxx@xx.xx.xx.xx:/etc/ceph
- 修改 Ceph 配置文件所属用户组。
在所有 OpenStack 节点执行如下两条命令,并检查配置文件(conf 及 keyring 文件)权限是否为
644,若不是,则权限也需修改。
chown glance:glance /etc/ceph/ceph.client.glance.keyring
chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
- 检查 OpenStack 环境是否可以连 Ceph 集群。
在任意 OpenStack 节点执行如下两条命令,看是否成功,若失败,则表明连 Ceph 集群失败。
ceph -s --id cinder --cluster ceph ceph -s --id glance --cluster ceph
–id 指客户端用户名字,不用前缀 client. ;–cluster 指 Ceph 集群名,即第4步拷贝的三个配置
文件名前缀,默认为 ceph,可以自定义。
配置 libvirt 密钥
(以下操作,如无特别说明,均在计算节点执行,其中第2-4步需在所有计算节点执行)
- 使用 uuidgen 生成一个随机 uuid,只需在任一节点执行一次,其余节点都用该 uuid。
[root@xxx ~]# uuidgen
fc7772dc-6632-44d1-8453-9fd97bdfacc1
- 将 uuid 写入 xml 文件。
新建 secret.xml 文件,并输入如下内容(注意替换 uuid)。
[root@xxx ~]# cat secret.xml
<secret ephemeral='no' private='no'>
<uuid>fc7772dc-6632-44d1-8453-9fd97bdfacc1</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
也可整段复制以下内容,自动创建 secret.xml 文件。
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>fc7772dc-6632-44d1-8453-9fd97bdfacc1</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
- 通过 xml 文件定义一个密钥。
[root@xxx ~]# virsh secret-define --file secret.xml
Secret fc7772dc-6632-44d1-8453-9fd97bdfacc1 created
- 设置密钥值,并删除 xml 文件及 client.cinder 用户的临时密钥文件。
[root@xxx ~]# virsh secret-set-value --secret fc7772dc-6632-44d1-8453- 9fd97bdfacc1 --base64 $(cat /etc/ceph/client.cinder.key) && rm -f /etc/ceph/client.cinder.key secret.xml
Glance 对接
在所有控制节点执行以下命令,若前面创建存储池时未使用 images 名字,则将第4行中的 images 替换
成实际存储池名。若客户端自定义了集群名,则第5行需替换正确的集群配置文件。
openstack-config --set /etc/glance/glance-api.conf DEFAULT "show_image_direct_url" "True"
openstack-config --set /etc/glance/glance-api.conf glance_store "default_store" "rbd"
openstack-config --set /etc/glance/glance-api.conf glance_store "rbd_store_user" "glance"
openstack-config --set /etc/glance/glance-api.conf glance_store "rbd_store_pool" "images"
openstack-config --set /etc/glance/glance-api.conf glance_store "rbd_store_ceph_conf" "/etc/ceph/ceph.conf"
openstack-config --set /etc/glance/glance-api.conf glance_store "stores" "glance.store.filesystem.Store, glance.store.http.Store, glance.store.rbd.Store"
openstack-config --set /etc/glance/glance-api.conf paste_deploy "flavor" "keystone"
Nova 对接
在所有计算节点执行以下命令,注意第2、3、5行内容。
openstack-config --set /etc/nova/nova.conf libvirt "images_type" "rbd"
openstack-config --set /etc/nova/nova.conf libvirt "images_rbd_pool" "vms"
openstack-config --set /etc/nova/nova.conf libvirt "images_rbd_ceph_conf" "/etc/ceph/ceph.conf"
openstack-config --set /etc/nova/nova.conf libvirt "rbd_user" "cinder"
openstack-config --set /etc/nova/nova.conf libvirt "rbd_secret_uuid" "fc7772dc-6632-44d1-8453-9fd97bdfacc1"
openstack-config --set /etc/nova/nova.conf libvirt "inject_password" "false"
openstack-config --set /etc/nova/nova.conf libvirt "inject_key" "false"
openstack-config --set /etc/nova/nova.conf libvirt "inject_partition" "-2"
openstack-config --set /etc/nova/nova.conf libvirt "live_migration_flag" "VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_LIVE, VIR_MIGRATE_PERSIST_DEST"
假如 nova 不使用 Ceph 存储,使用计算节点本地资源创建虚拟机,但需要挂载 Cinder 提供的云盘(使用 Ceph 存储)到虚拟机上,则 nova 也需要对接,不过只需执行以下命令即可。
openstack-config --set /etc/nova/nova.conf libvirt "rbd_user" "cinder"
openstack-config --set /etc/nova/nova.conf libvirt "rbd_secret_uuid" "fc7772dc-6632-44d1-8453-9fd97bdfacc1"
Cinder 对接
在所有控制节点执行以下命令,注意第4、5行内容。
openstack-config --set /etc/cinder/cinder.conf DEFAULT "enabled_backends" "ceph"
openstack-config --set /etc/cinder/cinder.conf ceph "volume_driver" "cinder.volume.drivers.rbd.RBDDriver"
openstack-config --set /etc/cinder/cinder.conf ceph "volume_backend_name" "ceph"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_pool" "volumes"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_ceph_conf" "/etc/ceph/ceph.conf"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_flatten_volume_from_snapshot" "false"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_max_clone_depth" "5"
openstack-config --set /etc/cinder/cinder.conf ceph "rados_connect_timeout" "-1"
openstack-config --set /etc/cinder/cinder.conf ceph "glance_api_version" "2"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_user" "cinder"
openstack-config --set /etc/cinder/cinder.conf ceph "rbd_secret_uuid" "fc7772dc-6632-44d1-8453-9fd97bdfacc1"
重启服务
- 在控制节点重启 Glance、Cinder 服务。
systemctl restart openstack-glance-api.service
systemctl restart openstack-cinder-volume.service
systemctl restart openstack-cinder-scheduler.service
- 在所有计算节点重启 Nova 服务。
systemctl restart openstack-nova-compute.service
检查对接是否成功
- source 进入 keystone 后,查看 cinder-volume 服务是否 up,并查看能否查到后端存储信息。
[root@Control-VM1 ~(keystone_admin_v3)]# cinder service-list
......
[root@Control-VM1 ~(keystone_admin_v3)]# cinder get-pools --detail
- 创建一个空白云盘,并在存储侧 volumes 池中查看是否有对应卷生成。
- 上传一个镜像,并在存储侧 images 池中查看是否有对应卷生成。
- 从镜像起一个虚拟机,并在存储侧 vms 池中查看是否有对应卷生成。
若以上4步均能正常执行并获得预期结果,则说明 Glance、Nova、Cinder 均对接成功。
一套 OpenStack 环境的 Glance、Nova 只能对接一个存储集群,Cinder 可以对接 N 套存储集群。