ceph集群与openstackt通过rbd方式对接

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 客户端。

配置用户鉴权
(以下操作如无特别说明,全部在任意一个存储节点执行。)

  1. 在 Ceph 集群创建三个存储池 images、vms、volumes。
  2. 在 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
  1. 将 client.cinder 用户的密钥导出到文件(后面配置 libvirt 密钥时需要,临时用)。
ceph auth get-key client.cinder | tee /etc/ceph/client.cinder.key 1
  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
  1. 修改 Ceph 配置文件所属用户组。
    在所有 OpenStack 节点执行如下两条命令,并检查配置文件(conf 及 keyring 文件)权限是否为
    644,若不是,则权限也需修改。
chown glance:glance /etc/ceph/ceph.client.glance.keyring
chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
  1. 检查 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步需在所有计算节点执行)

  1. 使用 uuidgen 生成一个随机 uuid,只需在任一节点执行一次,其余节点都用该 uuid。
[root@xxx ~]# uuidgen
fc7772dc-6632-44d1-8453-9fd97bdfacc1
  1. 将 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
  1. 通过 xml 文件定义一个密钥。
[root@xxx ~]# virsh secret-define --file secret.xml 
Secret fc7772dc-6632-44d1-8453-9fd97bdfacc1 created
  1. 设置密钥值,并删除 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"

重启服务

  1. 在控制节点重启 Glance、Cinder 服务。
systemctl restart openstack-glance-api.service 
systemctl restart openstack-cinder-volume.service 
systemctl restart openstack-cinder-scheduler.service
  1. 在所有计算节点重启 Nova 服务。
systemctl restart openstack-nova-compute.service

检查对接是否成功

  1. source 进入 keystone 后,查看 cinder-volume 服务是否 up,并查看能否查到后端存储信息。
[root@Control-VM1 ~(keystone_admin_v3)]# cinder service-list
...... 
[root@Control-VM1 ~(keystone_admin_v3)]# cinder get-pools --detail
  1. 创建一个空白云盘,并在存储侧 volumes 池中查看是否有对应卷生成。
  2. 上传一个镜像,并在存储侧 images 池中查看是否有对应卷生成。
  3. 从镜像起一个虚拟机,并在存储侧 vms 池中查看是否有对应卷生成。
    若以上4步均能正常执行并获得预期结果,则说明 Glance、Nova、Cinder 均对接成功。
    一套 OpenStack 环境的 Glance、Nova 只能对接一个存储集群,Cinder 可以对接 N 套存储集群。
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值