首页 OpenStack-Train云平台部署之“ceph与cinder对接”

OpenStack-Train云平台部署之“ceph与cinder对接”

技术张儿 2020-7-25 0 22
标签: OpenStack

具体目标:实现ceph存储

准备环境:首先需要配置好cinder的控制节点和计算节点,在这个基础之上在配置ceph与cinder的集成
Cinder是openstack中的块存储服务。Cinder提供了关于块存储的抽象,并允许供应商通过提供驱动程序进行集成。在ceph中,每个存储池可以映射到不同的cinder后端。

5.5.1 所有cinder-vloume节点安装ceph(所有节点)

[root@controller ~]# yum -y install ceph python-rbd

5.5.2 ceph mon节点创建池

作用就是存放cinder卷
[root@controller ~]# cd /etc/ceph/
[root@controller ceph]# ceph osd pool create volumes 128
pool 'volumes' created

5.5.3 创建一个密钥环授予cinder访问权限

[root@controller ceph]# 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' -o /etc/ceph/ceph.client.volumes.keyring
[root@controller ceph]# ll *v*
-rw-r--r-- 1 root root 65 Feb 24 20:44 ceph.client.volumes.keyring

5.5.4 将密钥与配置文件复制到compute01compute02计算节点

[root@controller ceph]# scp ceph.client.volumes.keyring ceph.conf compute01:/etc/ceph/
[root@controller ceph]# scp ceph.client.volumes.keyring ceph.conf compute02:/etc/ceph/

5.5.5 分发key

创建一个只包含openstack计算节点上的身份验证密钥文件
(输完密码回车之后会在计算节点把key都发过去)
[root@controller ceph]# cd /etc/ceph/
[root@controller ceph]# ceph auth get-key client.volumes |ssh controller tee /etc/ceph/client.volumes.key
AQDobEJevunqFhAAq7+8GeNuQmsKxnvE9LdC4Q==[root@controller ceph]#

[root@controller ceph]# ceph auth get-key client.volumes |ssh compute01 tee /etc/ceph/client.volumes.key
[root@controller ceph]# ceph auth get-key client.volumes |ssh compute02 tee /etc/ceph/client.volumes.key

5.5.6 设置密钥环访问权限

# 在所有节点上设置密钥环文件的权限,以便cinder可以访问

[root@controller ~]# chgrp cinder /etc/ceph/ceph.client.volumes.keyring 
[root@controller ~]# chmod 0640 /etc/ceph/ceph.client.volumes.keyring

5.5.7 将密钥环添加到ceph配置文件中

# 在所有节点上将密钥环添加到ceph配置文件中,注意如果不用再次添加

[root@controller ~]# vim /etc/ceph/ceph.conf 
[client.volumes]
keyring = /etc/ceph/ceph.client.volumes.keyring

[root@controller ceph]# scp /etc/ceph/ceph.conf controller:/etc/ceph/
scp /etc/ceph/ceph.conf compute01:/etc/ceph/
scp /etc/ceph/ceph.conf compute02:/etc/ceph/

5.5.8 使KVM Hypervisor访问ceph

# 所有节点都需要操作
(可以使用这个也可以自己生成)
[root@controller ~]# vim /etc/ceph/cinder.uuid.txt
82934e3a-65a1-4f89-8b4c-a413ecc039c3

[root@controller ~]# scp /etc/ceph/cinder.uuid.txt compute01:/etc/ceph/
[root@controller ~]# scp /etc/ceph/cinder.uuid.txt compute02:/etc/ceph/

5.5.9 在virsh中创建一个密钥,使kvm可以访问ceph池的cinder

后期虚拟机和cinder卷对接的时候需要使用kvm,kvm能访问才行
[root@controller ~]# vim /etc/ceph/cinder.xml
<secret ephemeral='no' private='no'>
  <uuid>82934e3a-65a1-4f89-8b4c-a413ecc039c3</uuid>
  <usage type='ceph'>
    <name>client.volumes secret</name>
  </usage>
</secret>


[root@controller ~]# scp /etc/ceph/cinder.xml compute01:/etc/ceph/
[root@controller ~]# scp /etc/ceph/cinder.xml compute02:/etc/ceph/

5.5.10 插入cinder.xml

# 所有节点都需要操作
# 控制节点插入需要安装kvm,启动libvird进行插入
[root@controller ~]# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install -y
[root@controller ~]# systemctl enable libvirtd && systemctl start libvirtd
[root@controller ~]# virsh secret-define --file /etc/ceph/cinder.xml
Secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 created


# 其余计算节点依次进行插入
[root@compute01 ~]# virsh secret-define --file /etc/ceph/cinder.xml
Secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 created
[root@compute02 ~]# virsh secret-define --file /etc/ceph/cinder.xml
Secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 created


5.5.11 让kvm支持cinder

# 每个节点都需要操作(控制节点和计算节点都需要操作)
[root@controller ~]# virsh secret-set-value --secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 --base64 $(cat /etc/ceph/client.volumes.key)
Secret value set

5.5.12 修改cinder配置文件对接ceph存储

# 在所有节点上为cinder添加一个ceph后端存储(修改ceinder的配置文件)
# 所有节点都需要操作
[root@controller ~]# vim /etc/cinder/cinder.conf 
[DEFAULT]
enabled_backends = rbd

#在最下面添加
[rbd]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = volumes
rbd_secret_uuid = 82934e3a-65a1-4f89-8b4c-a413ecc039c3
volume_backend_name = Ceph-Storage #便于区分

5.5.13 所有节点重启cinder卷服务

[root@controller ~]# systemctl restart openstack-cinder-volume.service 
[root@controller ~]# tail -f /var/log/cinder/volume.log
出现如下字眼为成功
Driver post RPC initialization completed successfully.
(驱动程序后RPC初始化成功完成。)


5.5.14 查看cinder状态

在控制节点查看cinder节点信息,状态(多出来一个rbd,也就是ceph客户端,必须全部为up状态)

[root@controller ~]# openstack volume service list 
1.png


5.5.15 创建类型:一定要创建类型,否则创建卷过不去

[root@controller ~]# cinder type-create ceph
+--------------------------------------+------+-------------+-----------+
| ID                                   | Name | Description | Is_Public |
+--------------------------------------+------+-------------+-----------+
| f45a8ae6-3119-4bab-af4e-3e4679c67eb3 | ceph | -           | True      |
+--------------------------------------+------+-------------+-----------+
[root@controller ~]# cinder type-key ceph set volume_backend_name=Ceph-Storage

5.5.16 验证

2.png

3.png

4.png

5.5.17 核对uuid

ceph mon节点查看有没有创建卷的记录(核对UUID

5.png
[root@controller ~]# rbd ls volumes
volume-6ec267e2-8d45-40ab-b92d-723b58fddbf1

5.5.18 查看卷

[root@controller ~]# openstack volume list
6.png


5.5.19 使用命令行创建块存储

cinder create --display-name="test02" --volume-type=ceph 10

# 注意
删除卷,做卷快照都可以在此实现


作者: 技术张儿 本文发布于2020-7-25 12:41:07
免责声明:本文仅代表作者个人观点。