Cinder HA¶
https://blueprints.launchpad.net/tripleo/+spec/tripleo-kilo-cinder-ha
确保 Cinder 卷在运行 Cinder 服务或托管卷的一个或多个节点发生故障时仍然可用。
问题描述¶
TripleO 当前部署 Cinder 时不使用共享存储,而是在节点之间平衡请求。如果运行 cinder-volume 的一个节点发生故障,则该节点托管的卷的请求也会失败。此外,如果没有共享存储,如果任何 cinder-volume 节点的磁盘发生故障,则该节点托管的卷将永久丢失。
提议的变更¶
概述¶
我们的目标是引入对 Cinder 的 Ceph 后端驱动程序配置的支持,以及部署 Ceph 存储以与 Cinder 一起使用。
这种方案将在任意数量的 Ceph 存储节点上安装 ceph-osd,并在控制器节点上安装 cinder-api、cinder-scheduler、cinder-volume 和 ceph-mon,允许用户独立于控制器节点扩展 Ceph 存储节点。
为了确保卷的 HA,这些卷将在 Ceph 存储上托管,为了实现 cinder-volume 服务的 HA,所有 Cinder 节点将使用共享字符串作为其 host 配置设置,以便能够操作整个(共享)卷集。
以后可以添加对更多驱动程序配置的支持。
替代方案¶
另一种方法是将 cinder-volume 服务部署为主动/待机配置。这将允许我们支持存储在 Cinder 节点之间不共享的场景,其中之一例如是在共享 Fiber Channel LUN 上的 LVM。但是,这种方案会存在缺点,它不会允许像在存储节点上轻松扩展和平衡流量,并且容易受到故障转移时 iSCSI 会话管理相关的问题的影响。
也可以想象另一种基于 LVM 和 DRBD 组合的方案。但这也将存在缺点。部署程序将负责管理副本,可能还需要了解副本状态。这些很容易由 Ceph 本身覆盖,Ceph 会负责更多相关问题,例如数据重新平衡或副本重建。
安全影响¶
通过引入对 Ceph 工具部署的支持,我们将不得不保护 Ceph 服务。
我们将仅允许通过使用 cephx 进行身份验证,并将 cephx 密钥环分发到相关节点,从而允许访问 Ceph 托管的数据。控制器节点将配置有 ceph.mon 密钥环、client.admin 密钥环和 client.cinder 密钥环,计算节点将配置有 libvirt 中的 client.cinder 密钥,最后 Ceph 存储节点将配置有 client.admin 密钥环。
需要说明的是,尽管监视器托管在控制器上,但它们不应从公共网络访问。此外,Cinder 不需要访问监视器的密钥环或 client.admin 密钥环,但这些密钥环将托管在与控制器运行 Ceph 监视器服务的同一主机上;Cinder 配置不会提供关于这些的任何知识。
其他最终用户影响¶
Cinder 卷以及 Cinder 服务将在一个或多个(取决于缩放设置)控制器节点或 Ceph 存储节点发生故障时仍然可用。
性能影响¶
cinder-api 服务将保持平衡,并且控制器节点将卸载 LVM 文件开销和 iSCSI 流量,因此这种拓扑结构应该可以作为附加好处提高性能。
其他部署者影响¶
Cinder HA 的自动化设置需要部署 Ceph。
为了利用现有的 Ceph 安装而不是通过 TripleO 部署它,部署者必须提供配置 Cinder 后端驱动程序所需的数据。
将能够随时扩展 Ceph 存储节点的数量,以及运行 cinder-volume 的控制器的数量,但更改后端驱动程序将不受支持,因为没有计划支持卷迁移。
并非所有 Cinder 驱动程序都支持多个 cinder-volume 服务实例使用共享 host 字符串的场景,特别是默认的 LVM 驱动程序不支持。我们将仅在 Heat 模板中找到适当的配置参数时才使用此设置,就像今天使用名为 include_nfs_backend 的参数一样。
运行 ceph-osd 服务的 Ceph 存储节点使用网络来维护副本的一致性,因此可能会通过网络传输大量数据。Ceph 允许 OSD 服务区分公共网络和集群网络以用于此目的。此规范不会引入对使用专用集群网络的支持,但我们希望后续规范能够实施对该的支持。
开发人员影响¶
Cinder 将继续默认配置为使用 LVM 后端驱动程序。
有兴趣使用 Ceph 共享存储测试 Cinder 的开发人员必须使用 Ceph 存储节点的适当缩放设置。
实现¶
负责人¶
- 主要负责人
gfidente
- 其他贡献者
jprovazn
工作项¶
添加对部署 Cinder 的 Ceph 后端驱动程序的支持
添加对部署 Ceph 服务支持
添加对 Cinder 的 Ceph 后端驱动程序的外部配置支持
依赖项¶
无。
测试¶
当 TripleO 本身支持部署共享 Ceph 存储节点时,将在 CI 中进行测试。
文档影响¶
我们需要提供关于用户如何与 Ceph 存储节点一起部署 Cinder,以及如何使用一些预先存在的 Ceph 部署的文档。
参考资料¶
juno mid-cycle meetup kilo design session, https://etherpad.openstack.org/p/tripleo-kilo-l3-and-cinder-ha