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

2023-10-12 19:58:09 首页 > 操作系统

  今天我要给大家介绍一下OpenStack的安装部署,特别是和Ceph的集成。

  首先,我们知道在OpenStack环境中,数据存储可以分为临时性存储和永久性存储。临时性存储主要是由本地文件系统提供的,用于虚拟机的本地系统和临时数据盘,以及存储glance上传的系统镜像。而永久性存储主要是由Cinder提供的块存储和Swift提供的对象存储构成。其中,Cinder提供的块存储应用最为广泛,通常以云盘的形式挂载到虚拟机中来使用。

  在OpenStack中,需要进行数据存储的三个主要项目是nova项目(虚拟机镜像文件)、glance项目(共享模板镜像)和cinder项目(块存储)。

  接下来,让我们看一下Ceph和OpenStack集成的逻辑图。Ceph主要通过其rbd服务来与OpenStack集成。Ceph的底层是一个rados存储集群,而Ceph通过librados库来访问底层的rados。在OpenStack中,各个项目的客户端通过调用librbd来访问Ceph。具体来说,nova需要使用libvirtdriver驱动通过libvirt和qemu来调用librbd;而cinder和glance可以直接调用librbd。

  现在,让我们来了解一下数据是如何被写入Ceph集群的。数据首先会被切分成多个object,然后通过hash函数映射到pg(构成pg容器池)。接着,pg通过crush算法近似均匀地映射到物理存储设备osd(如xfs、ext4等文件系统形式的物理存储设备)。

  在创建Ceph池之前,我们需要设置每个OSD的最大PG数量。根据官方计算公式,可以计算出新的PG数量:PG总数= ((OSD总数*100)/最大副本数)/池数。比如,如果是3个OSD,最大副本数是3,池数是3,则根据公式计算出PG总数为32。

  接下来,我们需要在OpenStack集群上进行Ceph客户端的环境配置。首先,在所有控制和计算节点上安装Ceph Octopus源码包。需要注意的是,版本一定要和连接的Ceph版本一致。然后,在3个控制节点上安装glance-api服务,在3个计算(存储)节点上安装cinder-volume和nova-compute服务。

  接着,我们需要将配置文件和密钥复制到OpenStack集群的各个节点上。配置文件就是生成的ceph.conf,而密钥是ceph.client.admin.keyring。当使用Ceph客户端连接到Ceph集群时,需要使用这个密钥。所以,我们需要在所有节点上复制这个配置文件和密钥。

  此外,还需要考虑到Glance和Nova在和Ceph集成时的一些特殊情况。对于Glance来说,它支持多种适配器,包括本地文件系统、http服务器、Ceph分布式文件系统等。目前,Glance默认采用本地文件系统来存储镜像,存放在默认路径/var/lib/glance/images下。如果我们将本地文件系统修改为分布式的文件系统Ceph后,原本在系统中的镜像将无法使用,所以我们建议在部署好Ceph之后,再统一将镜像上传至Ceph中进行存储。

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

  最后,Cinder为OpenStack提供卷服务,支持广泛的后端存储类型。Cinder的集成也非常重要,在这里我们与Ceph进行对接,使其作为Cinder的一个后端存储。

最近发表
标签列表
最新留言