OpenStack有3个组件可以使用Ceph:
1. Glance:Glance可以把镜像存储在Ceph上;
2. Cinder:Cinder负责管理volume,把volume挂载给instance使用或者直接从volume启动instance。集成Ceph后可以让Cinder在Ceph上创建volume;
3. Nova:在OpenStack Havana版本开始,Nova可以直接把instance的disk存放在Ceph上。
下面记录了如何把这些组件改造为使用Ceph。
环境介绍:
OpenStack Queens版本,1台控制节点controller,1台计算节点compute;
操作系统:CentOS 7.5
Ceph版本12.2.4,luminous
第一步,创建存储池
在Ceph集群上总共创建3个存储池,分别给Glance,Cinder和Nova使用,
[root@ceph1 ~]# ceph osd pool create images 192 #Glance的存储池
[root@ceph1 ~]# ceph osd pool create volumes 192 #Cinder的存储池
[root@ceph1 ~]# ceph osd pool create vms 192 #Nova的存储池
| 第二步,配置OpenStack的Ceph客户端
1. 拷贝ceph.conf
把Ceph的配置文件/etc/ceph/ceph.conf拷贝到2台OpenStack节点上,控制节点和计算节点都需要,因为他们都要跟Ceph通信。
2. 安装软件包
在控制节点安装python-rbd和ceph软件包:
[root@controller ~]# yum install -y python-rbd ceph
| 在计算节点安装ceph:
[root@compute ~]# yum install -y ceph
| 如果不安装ceph,OpenStack在使用Ceph时会报找不到ceph命令。
3. 配置cephx认证
#创建client.cinder用户给Cinder和Nova使用,cinder用户有存储池volumes、vms和images的所有权限
[root@ceph1 ~]# 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'
#创建client.glance用户给Glance使用,glance用户有存储池images的所有权限
[root@ceph1 ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
| 生成2个用户的密钥文件,
[root@ceph1 ~]# ceph auth get-or-create client.cinder > /etc/ceph/ceph.client.cinder.keyring
[root@ceph1 ~]# ceph auth get-or-create client.glance > /etc/ceph/ceph.client.glance.keyring
| 然后把/etc/ceph/ceph.client.cinder.keyring和/etc/ceph/ceph.client.glance.keyring拷到controller的/etc/ceph下,并且修改文件权限:
[root@controller ~]# chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller ~]# chown glance:glance /etc/ceph/ceph.client.glance.keyring
| 把/etc/ceph/ceph.client.cinder.keyring拷到compute的/etc/ceph下,并且修改文件权限:
[root@compute ~]# chown nova:nova /etc/ceph/ceph.client.cinder.keyring
| 4. 配置compute节点的libvirt
在ceph上获取client.cinder的key
[root@ceph1 ~]# ceph auth get-key client.cinder > client.cinder.key
| 把client.cinder.key拷到compute节点的/etc/ceph下,在compute节点上执行以下步骤:
[table][tr][td=1,1,553][root@compute ~]# cat > secret.xml |