Ceph RBD Mirror Charm

问题描述

RBD 镜像可用于提供 Ceph 集群灾难恢复解决方案。Ceph 有一个名为 rbd-mirror 的守护进程,可以放置在主集群和备份集群上,并提供给定池中 RBD 镜像的异步复制。

rbd-mirror 可以工作在两种模式下

  • 池(同步给定池中的所有镜像);

  • 镜像(逐镜像同步)。

此规范的目标场景涉及操作员执行提升/降级操作,并且 DR 过程由操作员驱动,而不是在主站点发生故障时进行完全自动故障转移。

注意

池的提升/降级将由操作员驱动

注意

RADOS 对象不会被镜像,因此对于镜像使用 RADOS 对象或存储在 RADOS 对象中的 gnocchi 指标,需要不同的备份机制 - 此规范仅涵盖 RBD 镜像。

注意

RBD 镜像依赖于 RBD 的独占锁和日志记录功能的使用;这些仅在 libvirt 和 qemu 用于本机 KVM 虚拟化时,才在用户空间集成库中支持。此要求排除了在基于 LXD 的云中使用此功能,因为它们为了与 Linux 内核 RBD 驱动程序兼容而禁用了大多数 RBD 功能。

注意

最初的 RBD 镜像 charm 将仅支持镜像整个池。

提议的变更

高级设计

由于 rbd-mirror 是一个单独的软件包,并且服务本身充当 RBD 客户端,因此在单独的 principle charm (ceph-rbd-mirror) 中实现目标功能是有意义的。该 charm 将接受有关要复制的池的参数,并且能够与单独集群中的多个 ceph-mon 应用程序相关联。

该 charm 将与本地 Ceph 集群和远程 Ceph 集群相关联,通常使用跨模型关系。

将创建一个新的接口类型(‘rbd-mirror’)来支持此集成;这将由 ceph-mon charm 提供,并由新的 ceph-rbd-mirror charm 用于本地和远程集群连接。

每个 rbd-mirror 守护进程需要一个密钥才能连接到本地集群(为守护进程唯一命名),以及一个密钥才能连接到远程集群(为所有 rbd-mirror 守护进程全局命名)。Ceph-rbd-mirror 单元上还将维护多个 Ceph 配置 - ‘ceph’ 用于引用本地集群,‘remote’ 用于引用远程集群。配置文件和密钥将以这种命名方式内联前缀 - 例如

$ ls /etc/ceph
    ceph.conf
    ceph.client.rbd-mirror.<hostname>.keyring
    remote.conf
    remote.client.rbd-mirror.keyring

为了支持 RBD 镜像的弹性和扩展,可以部署多个 charm 单元;因此,此功能仅支持 Ceph Luminous 或更高版本(支持 rbd-mirror 服务的多个实例)。

部署和可扩展性考虑因素

从部署的角度来看,该 charm 单元应具有高带宽和低延迟的 L3 连接,才能访问和复制要尝试复制的 Ceph 池的两个集群的网络。至少,需要在运行 rbd-mirror 守护进程的节点上配置静态路由,但这超出了此规范的范围。

可以使用多个 ceph-rbd-mirror charm 单元来扩展复制流量。

备选方案

没有考虑替代解决方案。

依赖项

此功能依赖于使用支持跨模型关系的 Juju 版本。

实现

负责人

主要负责人

<tbd>

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题“rbd-mirror”。

git-review -t rbd-mirror

工作项

  • 实现一个新的 reactive charm,名为 ceph-rbd-mirror。

  • 实现以下关系:* rbd-mirror - ceph-mon(本地和跨模型)。

  • 将“cluster”端点添加到 metadata.yaml 中的 extra-bindings 中,以允许将“cluster”端点绑定到 Ceph 复制空间。

  • ceph-mon 关系应通过 Ceph charms 中实现的 broker 协议检索集群详细信息和 cephx 密钥(代码重用)。

  • 添加配置选项以指定用于复制的池名称。

  • 如果备份集群上不存在,则自动创建池。

  • 添加操作以提升和降级池。

  • 启用 RBD 日志记录功能,如 rbd-mirror 文档中所述。

  • 编写单元测试。

  • 通过 zaza 框架编写功能测试。

仓库

将需要一个新的 git 存储库来用于 ceph-rbd-mirror charm

https://git.openstack.org/openstack/charm-ceph-rbd-mirror

文档

ceph-rbd-mirror charm 应包含一个 README,其中包含有关部署 charm 以及有关可扩展性和网络限制的说明。

安全性

  • 为复制创建的用户不应具有管理员权限 - 他们只需要能够在目标集群上写入他们需要的池。这通过 ceph-mon broker 中现有的基于组的权限系统使用 mon 和 osd 权限的“rbd”配置文件来支持。

测试

编写或更改的代码将涵盖在单元测试中;功能测试将使用 Zaza 完成。