第 15 章 使用 Ceph 配置多站点、容错的消息传递系统
大型企业消息传递系统通常具有分散的代理集群,位于地理分布的数据中心上。如果数据中心中断,系统管理员可能需要保留现有的消息传递数据,并确保客户端应用程序能够继续生成和使用消息。您可以使用特定的代理拓扑和 Red Hat Ceph Storage(一种软件定义的存储平台),在数据中心停机期间确保消息传递系统的连续性。这种类型的解决方案称为 多站点容错架构。
如果您只需要 AMQP 协议的支持,请考虑 第 16 章 使用代理连接配置多站点、容错的消息传递系统。
以下小节解释了如何使用 Red Hat Ceph Storage 保护消息传递系统不受数据中心故障的影响:
多站点容错并不取代 数据中心内的 高可用性(HA)代理冗余。基于 live-backup 组的代理冗余提供了对单个集群中的单个代理故障进行自动保护。相比之下,多站点容错可以保护大规模数据中心故障。
要使用 Red Hat Ceph Storage 以确保消息传递系统的连续性,您必须将代理配置为使用共享存储高可用性(HA)策略。您不能将代理配置为使用复制 HA 策略。有关这些策略的更多信息,请参阅 实施高可用性。
15.1. Red Hat Ceph Storage 集群如何工作
Red Hat Ceph Storage 是一个集群对象存储系统。Red Hat Ceph Storage 使用对象的数据分片和基于策略的复制来保证数据完整性和系统可用性。
Red Hat Ceph Storage 使用名为 CRUSH(可扩展哈希下的受控复制)的算法,以确定如何通过自动计算数据存储位置存储和检索数据。您可以配置名为 CRUSH map 的 Ceph 项,它详细说明集群拓扑,并且指定如何在存储集群之间复制数据。
CRUSH map 包含对象存储设备(OSD)的列表、将设备聚合到故障域层次结构的"bucket"列表,以及告知 CRUSH 如何在 Ceph 集群池中复制数据的规则。
通过反映安装的底层物理组织,libvirt 映射可以建模,从而解决了关联设备故障的潜在源,如物理不可变、共享电源源和共享网络。通过将此信息编码到集群映射中,libvirt 可在不同的故障域(如数据中心)之间分离对象副本,同时仍然维护存储集群中的伪随机数据分布。这有助于防止数据丢失并让集群以降级状态运行。
Red Hat Ceph Storage 集群需要有多个节点(物理或虚拟)。集群必须包括以下类型的节点:
监控节点
每个 monitor(MON)节点运行 monitor 守护进程(ceph-mon
),它维护 cluster map 的 master 副本。集群映射包含集群拓扑。连接到 Ceph 集群的客户端从监控器检索 cluster map 的当前副本,这使客户端可以从集群读取和写入数据。
Red Hat Ceph Storage 集群可以使用一个监控器节点运行;但是,为了确保生产集群中的高可用性,红帽仅支持至少含有三个 monitor 节点的部署。最少三个 monitor 节点意味着,如果一个 monitor 出现故障或不可用,则集群中剩余的 monitor 节点存在仲裁,以选择新的领导。
Manager 节点
每个管理器(MGR)节点运行 Ceph 管理器守护进程(ceph-mgr
),它负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。通常,管理器节点与 monitor 节点处于共同位置(即位于同一主机上)。
Object Storage Device 节点
每个对象存储设备(OSD)节点运行 Ceph OSD 守护进程(ceph-osd
),它与附加到节点的逻辑卷交互。Ceph 在 OSD 节点上存储数据。Ceph 可以在非常少的 OSD 节点时运行(默认为三个),但生产集群在某一存储集群中具有 50 个 OSD 以更优的性能。通过存储集群中有多个 OSD,系统管理员可以在 CRUSH map 内定义隔离故障域。
元数据服务器节点
每个元数据服务器(MDS)节点运行 MDS 守护进程(ceph-mds
),后者管理与 Ceph 文件系统(CephFS)中存储的文件相关的元数据。MDS 守护进程也协调对共享集群的访问。
其他资源
有关 Red Hat Ceph Storage 的更多信息,请参阅什么是 Red Hat Ceph Storage?