⑩ OpenStack高可用集群部署方案(train版)—OpenStack对接Ceph存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⑩ OpenStack高可用集群部署方案(train版)—OpenStack对接Ceph存储相关的知识,希望对你有一定的参考价值。

参考技术A

参考Ceph官方安装文档

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等)。

CEPH PG数量设置与详细介绍

在创建池之前要设置一下每个OSD的最大PG 数量

PG PGP官方计算公式计算器

参数解释:

依据参数使用公式计算新的 PG 的数目:
PG 总数= ((OSD总数*100)/最大副本数)/池数
3x100/3/3=33.33 ;舍入到2的N次幕为32

openstack集群作为ceph的客户端;下面需要再openstack集群上进行ceph客户端的环境配置

在openstack所有控制和计算节点安装ceph Octopus源码包,centos8有默认安装,但是版本一定要跟连接的ceph版本一致

glance-api 服务运行在3个控制节点, 因此三台控制节点都必须安装

cinder-volume 与 nova-compute 服务运行在3个计算(存储)节点; 因此三台计算节点都必须安装

将配置文件和密钥复制到openstack集群各节点

配置文件就是生成的ceph.conf;而密钥是 ceph.client.admin.keyring ,当使用ceph客户端连接至ceph集群时需要使用的密默认密钥,这里我们所有节点都要复制,命令如下

※Glance 作为openstack中镜像服务,支持多种适配器,支持将镜像存放到本地文件系统,http服务器,ceph分布式文件系统,glusterfs和sleepdog等开源的分布式文件系统上。目前glance采用的是本地filesystem的方式存储,存放在默认的路径 /var/lib/glance/images 下,当把本地的文件系统修改为分布式的文件系统ceph之后,原本在系统中镜像将无法使用,所以建议当前的镜像删除,部署好ceph之后,再统一上传至ceph中存储。

※Nova 负责虚拟机的生命周期管理,包括创建,删除,重建,开机,关机,重启,快照等,作为openstack的核心,nova负责IaaS中计算重要的职责,其中nova的存储格外重要,默认情况下,nova将instance的数据存放在/var/lib/nova/instances/%UUID目录下,使用本地的存储空间。使用这种方式带来的好处是:简单,易实现,速度快,故障域在一个可控制的范围内。然而,缺点也非常明显:compute出故障,上面的虚拟机down机时间长,没法快速恢复,此外,一些特性如热迁移live-migration,虚拟机容灾nova evacuate等高级特性,将无法使用,对于后期的云平台建设,有明显的缺陷。对接 Ceph 主要是希望将实例的系统磁盘文件储存到 Ceph 集群中。与其说是对接 Nova,更准确来说是对接 QEMU-KVM/libvirt,因为 librbd 早已原生集成到其中。

※Cinder 为 OpenStack 提供卷服务,支持非常广泛的后端存储类型。对接 Ceph 后,Cinder 创建的 Volume 本质就是 Ceph RBD 的块设备,当 Volume 被虚拟机挂载后,Libvirt 会以 rbd 协议的方式使用这些 Disk 设备。除了 cinder-volume 之后,Cinder 的 Backup 服务也可以对接 Ceph,将备份的 Image 以对象或块设备的形式上传到 Ceph 集群。

使用ceph的rbd接口,需要通过libvirt,所以需要在客户端机器上安装libvirt和qemu,关于ceph和openstack结合的结构如下,同时,在openstack中,需要用到存储的地方有三个:

为 Glance、Nova、Cinder 创建专用的RBD Pools池

需要配置hosts解析文件,这里最开始已经配置完成,如未添加hosts解析需要进行配置

在cephnode01管理节点上操作 ;命名为:volumes,vms,images

记录:删除存储池的操作

在cephnode01管理节点上操作

针对pool设置权限,pool名对应创建的pool

nova-compute与cinder-volume都部署在计算节点 ,不必重复操作,如果计算节点与存储节点分离需要分别推送;

全部计算节点配置;以compute01节点为例;

Glance 为 OpenStack 提供镜像及其元数据注册服务,Glance 支持对接多种后端存储。与 Ceph 完成对接后,Glance 上传的 Image 会作为块设备储存在 Ceph 集群中。新版本的 Glance 也开始支持 enabled_backends 了,可以同时对接多个存储提供商。

写时复制技术(copy-on-write) :内核只为新生成的子进程创建虚拟空间结构,它们复制于父进程的虚拟空间结构,但是不为这些段分配物理内存,它们共享父进程的物理空间,当父子进程中有更改相应的段的行为发生时,再为子进程相应的段分配物理空间。写时复制技术大大降低了进程对资源的浪费。

全部控制节点进行配置;以controller01节点为例;
只修改涉及glance集成ceph的相关配置

变更配置文件,重启服务

ceph官网介绍 QEMU和块设备

对接 Ceph 之后,通常会以 RAW 格式创建 Glance Image,而不再使用 QCOW2 格式,否则创建虚拟机时需要进行镜像复制,没有利用 Ceph RBD COW 的优秀特性。

总结

将openstack集群中的glance镜像的数据存储到ceph中是一种非常好的解决方案,既能够保障镜像数据的安全性,同时glance和nova在同个存储池中,能够基于copy-on-write(写时复制)的方式快速创建虚拟机,能够在秒级为单位实现vm的创建。

全部计算节点进行配置; 以compute01节点为例;只修改glance集成ceph的相关配置

全部计算节点重启cinder-volume服务;

任意openstack控制节点上查看;

在任意控制节点为cinder的ceph后端存储创建对应的type,在配置多存储后端时可区分类型;

为ceph type设置扩展规格,键值 volume_backend_name ,value值 ceph

任意控制节点上创建一个1GB的卷 ;最后的数字1代表容量为1G

查看创建好的卷

openstack创建一个空白 Volume,Ceph相当于执行了以下指令

从镜像创建 Volume 的时候应用了 Ceph RBD COW Clone 功能,这是通过 glance-api.conf [DEFAULT] show_image_direct_url = True 来开启。这个配置项的作用是持久化 Image 的 location,此时 Glance RBD Driver 才可以通过 Image location 执行 Clone 操作。并且还会根据指定的 Volume Size 来调整 RBD Image 的 Size。

一直存在的cirros_qcow2镜像为对接ceph之前的镜像,现在已无法使用,所以将之删除

在openstack上从镜像创建一个Volume,Ceph相当于执行了以下指令

任意控制节点操作;

查看快照详细信息

在openstack上对镜像的卷创建快照,Ceph相当于执行了以下指令

如果说快照时一个时间机器,那么备份就是一个异地的时间机器,它具有容灾的含义。所以一般来说 Ceph Pool backup 应该与 Pool images、volumes 以及 vms 处于不同的灾备隔离域。

https://www.cnblogs.com/luohaixian/p/9344803.html

https://docs.openstack.org/zh_CN/user-guide/backup-db-incremental.html

一般的,备份具有以下类型:

在虚拟磁盘映像的计算节点上使用本地存储有一些缺点:

Nova 为 OpenStack 提供计算服务,对接 Ceph 主要是希望将实例的系统磁盘文件储存到 Ceph 集群中。与其说是对接 Nova,更准确来说是对接 QEMU-KVM/libvirt ,因为 librbd 早已原生集成到其中。

如果需要从ceph rbd中启动虚拟机,必须将ceph配置为nova的临时后端;
推荐在计算节点的配置文件中启用rbd cache功能;
为了便于故障排查,配置admin socket参数,这样每个使用ceph rbd的虚拟机都有1个socket将有利于虚拟机性能分析与故障解决;
相关配置只涉及全部计算节点ceph.conf文件的[client]与[client.cinder]字段,以compute163节点为例

全部计算节点配置 ceph.conf文件相关的 [client] 与 [client.cinder] 字段,以compute01节点为例;

在全部计算节点配置nova后端使用ceph集群的vms池,以compute01节点为例;

在全部计算节点操作;

在全部计算节点操作,以compute01节点为例;
以下给出libvirtd.conf文件的修改处所在的行num

以上是关于⑩ OpenStack高可用集群部署方案(train版)—OpenStack对接Ceph存储的主要内容,如果未能解决你的问题,请参考以下文章

K3S 离线安装部署高可用集群

B10-openstack高可用(t版)-nova计算节点节点集群部署

用Kolla在阿里云部署10节点高可用OpenStack

如何在Kubernetes中部署一个高可用的PostgreSQL集群环境

Ceph高可用部署和主要组件介绍

私有云Rabbitmq 集群部署