OpenStack-Queens详细安装部署(十一)集成Ceph准备

  • A+
所属分类:OpenStack

Openstack环境中,数据存储可分为临时性存储与永久性存储。

临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储glance上传的系统镜像;

永久性存储:主要由cinder提供的块存储与swift提供的对象存储构成,以cinder提供的块存储应用最为广泛,块存储通常以云盘的形式挂载到虚拟机中使用。

Openstack中需要进行数据存储的三大项目主要是nova项目(虚拟机镜像文件),glance项目(共用模版镜像)与cinder项目(块存储)。

下图为cinder,glance与nova访问ceph集群的逻辑图:

ceph与openstack集成主要用到ceph的rbd服务,ceph底层为rados存储集群,ceph通过librados库实现对底层rados的访问;
openstack各项目客户端调用librbd,再由librbd调用librados访问底层rados;
实际使用中,nova需要使用libvirtdriver驱动以通过libvirt与qemu调用librbd;cinder与glance可直接调用librbd;
写入ceph集群的数据被条带切分成多个object,object通过hash函数映射到pg(构成pg容器池pool),然后pg通过几圈crush算法近似均匀地映射到物理存储设备osd(osd是基于文件系统的物理存储设备,如xfs,ext4等)。
OpenStack-Queens详细安装部署(十一)集成Ceph准备

1. 创建pool

# Ceph默认使用pool的形式存储数据,pool是对若干pg进行组织管理的逻辑划分,pg里的对象被映射到不同的osd,因此pool分布到整个集群里。
# 可以将不同的数据存入1个pool,但如此操作不便于客户端数据区分管理,因此一般是为每个客户端分别创建pool。
# 为cinder,nova,glance分别创建pool,命名为:volumes,vms,images
# 创建pool,需要覆盖默认的pg num,官方文档对pg num的数量有如下建议:http://docs.ceph.com/docs/master/rados/operations/placement-groups/;
# 同时综合考量全部pool的pg num总和的上限:pg num * 副本数量 < mon_max_pg_per_osd(默认200) * num_in_osds(osd总进程数);
# pool创建在monitor节点操作,以controller01节点为例;
# 这里volumes池是永久性存储,vms是实例临时后端存储,images是镜像存储
#PG 计算在线工具 https://ceph.com/pgcalc/
[root@DT_Node-172_17_7_1 ~]# ceph osd pool create cinder-backup 64
[root@DT_Node-172_17_7_1 ~]# ceph osd pool set cinder-backup size 3
[root@DT_Node-172_17_7_1 ~]# while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done

[root@DT_Node-172_17_7_1 ~]# ceph osd pool create cinder-volumes 256
[root@DT_Node-172_17_7_1 ~]# ceph osd pool set cinder-volumes size 3
[root@DT_Node-172_17_7_1 ~]# while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done

[root@DT_Node-172_17_7_1 ~]# ceph osd pool create ephemeral-vms 128
[root@DT_Node-172_17_7_1 ~]# ceph osd pool set ephemeral-vms size 3
[root@DT_Node-172_17_7_1 ~]# while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done

[root@DT_Node-172_17_7_1 ~]# ceph osd pool create glance-images 64
[root@DT_Node-172_17_7_1 ~]# ceph osd pool set glance-images size 3

OpenStack-Queens详细安装部署(十一)集成Ceph准备

# 删除pool
[root@DT_Node-172_17_7_1 ~]# ceph osd pool delete glance-images glance-images  --yes-i-really-really-mean-it 
pool 'glance-images' removed
#删除所有资源池
[root@DT_Node-172_17_7_1 ~]# for i in `ceph osd lspools|awk '{print $2}'`;do ceph osd pool delete $i $i  --yes-i-really-really-mean-it && sleep 0.3;done

OpenStack-Queens详细安装部署(十一)集成Ceph准备

# 查看状态
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# ceph pg stat
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# ceph osd lspools

OpenStack-Queens详细安装部署(十一)集成Ceph准备

2. 安装Ceph客户端
# 这里glance-api服务运行在3个控制节点 (所有controller节点操作)

# glance-api服务所在节点需要安装python-rbd;
[root@DT_Node-172_17_7_1 ~]# yum install python-rbd -y

# cinder-volume与nova-compute服务所在节点需要安装ceph-common;

# 这里cinder-volume与nova-compute服务运行在4个计算(存储)节点,以compute1节点为例
[root@compute01 ~]# yum install ceph-common -y

3. 秘钥分发
1)创建用户

# ceph默认启用cephx authentication(见ceph.conf),需要为nova/cinder与glance客户端创建新的用户并授权;
# 可在管理节点上分别为运行cinder-volume与glance-api服务的节点创建client.glance-images与client.cinder-volumes用户并设置权限;
# 针对pool设置权限,pool名对应创建的pool
[root@DT_Node-172_17_7_1 ~]# ceph auth get-or-create client.glance-images mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=glance-images' -o /etc/ceph/ceph.client.glance-images.keyring
[root@DT_Node-172_17_7_1 ~]# ceph auth get-or-create client.cinder-volumes mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-volumes, allow rwx pool=glance-images' -o /etc/ceph/ceph.client.cinder-volumes.keyring
[root@DT_Node-172_17_7_1 ~]# ceph auth get-or-create client.ephemeral-vms mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-volumes, allow rwx pool=glance-images, allow rwx pool=ephemeral-vms' -o /etc/ceph/ceph.client.nova-ephemeral.keyring
[root@DT_Node-172_17_7_1 ~]# ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-backup' -o /etc/ceph/ceph.client.cinder-backup.keyring
[root@DT_Node-172_17_7_1 ~]# ceph auth ls | grep -EA3 'client.(glance-images|cinder-volumes|nova-ephemeral|cinder-backup)'

OpenStack-Queens详细安装部署(十一)集成Ceph准备

2) 分发glance-images的秘钥到controller节点上

[root@DT_Node-172_17_7_1 ~]# for i in controller1 controller2 controller3;do ceph auth get-or-create client.glance-images | ssh -t root@$i 'tee /etc/ceph/ceph.client.glance-images.keyring && chown glance:glance /etc/ceph/ceph.client.glance-images.keyring'; done

# 修改ceph配置

[root@DT_Node-172_17_7_1 ~]# cd /data/ceph/deploy/
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# echo '
[client.glance-images]
keyring = /etc/ceph/ceph.client.glance-images.keyring' >> /data/ceph/deploy/ceph.conf
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# ceph-deploy --overwrite-conf admin controller1 controller2 controller3

OpenStack-Queens详细安装部署(十一)集成Ceph准备

3) 分发cinder-volumes秘钥到controller和compute节点上

[root@DT_Node-172_17_7_1 ~]# for i in controller1 controller2 controller3;do ceph auth get-or-create client.cinder-volumes | ssh -t root@$i 'tee /etc/ceph/ceph.client.cinder-volumes.keyring && chown cinder.cinder /etc/ceph/ceph.client.cinder-volumes.keyring && chmod 0640 /etc/ceph/ceph.client.cinder-volumes.keyring'; done
[root@DT_Node-172_17_7_1 ~]# for i in compute1 compute2 compute3 compute4;do ceph auth get-or-create client.cinder-volumes | ssh -t root@$i 'tee /etc/ceph/ceph.client.cinder-volumes.keyring'; done

#修改ceph配置

[root@DT_Node-172_17_7_1 ~]# cd /data/ceph/deploy/
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# echo '
[client.cinder-volumes]
keyring = /etc/ceph/ceph.client.cinder-volumes.keyring' >> /data/ceph/deploy/ceph.conf
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# ceph-deploy --overwrite-conf admin controller1 controller2 controller3

OpenStack-Queens详细安装部署(十一)集成Ceph准备

4) 分发ephemeral-vms秘钥

[root@DT_Node-172_17_7_1 ~]# for i in controller1 controller2 controller3;do ceph auth get-or-create client.ephemeral-vms | ssh -t root@$i 'tee /etc/ceph/ceph.client.ephemeral-vms.keyring && chown cinder.cinder /etc/ceph/ceph.client.ephemeral-vms.keyring && chmod 0640 /etc/ceph/ceph.client.ephemeral-vms.keyring'; done
[root@DT_Node-172_17_7_1 ~]# for i in compute1 compute2 compute3 compute4;do ceph auth get-or-create client.ephemeral-vms | ssh -t root@$i 'tee /etc/ceph/ceph.client.ephemeral-vms.keyring && chown nova.nova /etc/ceph/ceph.client.ephemeral-vms.keyring && chmod 0640 /etc/ceph/ceph.client.ephemeral-vms.keyring'; done

OpenStack-Queens详细安装部署(十一)集成Ceph准备

#修改ceph配置

[root@DT_Node-172_17_7_1 ~]# cd /data/ceph/deploy/                                                 
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# echo '
[client.nova-ephemeral]
keyring = /etc/ceph/ceph.client.ephemeral-vms.keyring' >> /data/ceph/deploy/ceph.conf
[root@DT_Node-172_17_7_1 /data/ceph/deploy]# ceph-deploy --overwrite-conf admin controller1 controller2 controller3 compute1 compute2 compute3 compute4

OpenStack-Queens详细安装部署(十一)集成Ceph准备

# 所有节点生成key文件 (所有节点)

for i in `ls /etc/ceph/*.keyring`;do cat $i | awk 'NR==2{print $3}' > $(sed 's/keyring/key/' <<< $i);done

4、libvirt秘钥
1) 生成

[root@DT_Node-172_17_7_1 ~]# echo "<secret ephemeral='no' private='no'>
<uuid>$(uuidgen)</uuid>
<usage type='ceph'>
<name>client.cinder-volumes secret</name>
</usage>
</secret>" > /etc/ceph/secret.xml && awk  -F'>|<' 'NR==2{print $3}' /etc/ceph/secret.xml
92f87f28-cf15-4866-b5b6-5217e39d791e
[root@DT_Node-172_17_7_1 ~]#

OpenStack-Queens详细安装部署(十一)集成Ceph准备

2) 分发到compute节点上

[root@DT_Node-172_17_7_1 ~]# for i in compute1 compute2 compute3 compute4;do scp /etc/ceph/secret.xml root@$i:/etc/ceph/secret.xml;done

OpenStack-Queens详细安装部署(十一)集成Ceph准备

# 所有compute节点执行

[root@DT_Node-172_17_7_4 ~]# virsh secret-define --file /etc/ceph/secret.xml
生成 secret 92f87f28-cf15-4866-b5b6-5217e39d791e
[root@DT_Node-172_17_7_4 ~]# virsh secret-define --file /etc/ceph/secret.xml && virsh secret-set-value --secret $(awk  -F'>|<' 'NR==2{print $3}' /etc/ceph/secret.xml)  --base64 $(cat /etc/ceph/ceph.client.cinder-volumes.key)
secret 值设定

[root@DT_Node-172_17_7_4 ~]# 

OpenStack-Queens详细安装部署(十一)集成Ceph准备

lookback

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: