15.3. 配置 Red Hat Ceph Storage 集群
本例步骤演示了如何为容错配置 Red Hat Ceph Storage 集群。您可以创建 CRUSH 存储桶,将对象存储设备(OSD)节点聚合到反映您的现实物理安装的数据中心。此外,您还可创建一个规则,告知 CRUSH 如何在存储池中复制数据。这些步骤更新 Ceph 安装创建的默认 CRUSH map。
先决条件
- 已安装 Red Hat Ceph Storage 集群。有关更多信息,请参阅安装 Red Hat Ceph Storage。
- 您应该了解 Red Hat Ceph Storage 如何使用放置组(PG)在池中组织大量数据对象,以及如何计算池中要使用的 PG 数量。如需更多信息,请参阅 放置组(PG)。
- 您应该了解如何在池中设置对象副本数量。如需更多信息,请参阅设置对象副本的数量。
流程
创建 CRUSH 存储桶以组织 OSD 节点。bucket 是 OSD 列表,基于数据中心等物理位置。在 Ceph 中,这些物理位置称为 故障域。
ceph osd crush add-bucket dc1 datacenter ceph osd crush add-bucket dc2 datacenter
将 OSD 节点的主机机器移到您创建的数据中心 CRUSH 存储桶。将主机名
host1
-host4
替换为您的主机机器的名称。ceph osd crush move host1 datacenter=dc1 ceph osd crush move host2 datacenter=dc1 ceph osd crush move host3 datacenter=dc2 ceph osd crush move host4 datacenter=dc2
确保您创建的 CRUSH 存储桶
是默认
CRUSH 树的一部分。ceph osd crush move dc1 root=default ceph osd crush move dc2 root=default
创建一条规则来映射数据中心中的存储对象副本。这有助于防止数据丢失,并使集群在单个数据中心中断时保持运行。
创建规则的命令使用以下语法:
ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
。下面是一个示例。ceph osd crush rule create-replicated multi-dc default datacenter hdd
注意在前面的命令中,如果您的存储集群使用固态驱动器(SSD),请指定
ssd
而不是hdd
(硬磁盘驱动器)。配置 Ceph 数据和元数据池,以使用您创建的规则。最初,这可能会导致数据回填到由 CRUSH 算法决定的存储目的地。
ceph osd pool set cephfs_data crush_rule multi-dc ceph osd pool set cephfs_metadata crush_rule multi-dc
为您的元数据和数据池指定放置组(PG)和放置组的数量。PGP 值应当等于 PG 值。
ceph osd pool set cephfs_metadata pg_num 128 ceph osd pool set cephfs_metadata pgp_num 128 ceph osd pool set cephfs_data pg_num 128 ceph osd pool set cephfs_data pgp_num 128
指定数据和元数据池使用的副本数。
ceph osd pool set cephfs_data min_size 1 ceph osd pool set cephfs_metadata min_size 1 ceph osd pool set cephfs_data size 2 ceph osd pool set cephfs_metadata size 2
下图显示了前面的示例步骤创建的 Red Hat Ceph Storage 集群。存储集群的 OSD 整理到与数据中心对应的 CRUSH bucket 中。
图 15.1. Red Hat Ceph Storage Custer 示例
下图显示了第一个数据中心(包括您的代理服务器)的可能布局。具体来说,数据中心主机:
- 两个 live-backup 代理对的服务器
- 在前面的步骤中分配给第一个数据中心的 OSD 节点
- 单个元数据服务器、监控和管理器节点。monitor 和 Manager 节点通常位于同一个机器上。
图 15.2. 带有 Ceph Storage 集群和两个 live-backup 代理对的单一数据中心
您可以在相同或单独的物理或虚拟机上运行 OSD、MON、MGR 和 MDS 节点。但是,为了确保 Red Hat Ceph Storage 集群中的容错,最好在不同的数据中心中分发这些类型的节点。特别是,您必须确保在单个数据中心停机时,您的存储集群仍至少有两个可用的 MON 节点。因此,如果集群中有三个 MON 节点,则这些节点都必须在独立数据中心的单独主机上运行。
下图显示了完整的示例拓扑。为确保存储集群中的容错,MON、MGR 和 MDS 节点分布在三个单独的数据中心中。
图 15.3. 带有 Ceph 存储集群的多个数据中心,以及两个 live-backup 代理对
在与代理服务器相同的数据中心中为某些 OSD 节点查找主机机器并不意味着您将消息传递数据存储在这些特定的 OSD 节点上。您可以配置代理,将消息传递数据存储在 Ceph 文件系统的指定目录中。然后,集群中的元数据服务器节点决定如何在数据中心的所有可用 OSD 之间分发存储的数据,并在数据中心间处理此数据的复制。以下章节演示了如何配置代理以在 Ceph 文件系统中存储消息传递数据。
下图展示了在具有代理服务器的两个数据中心之间复制数据。
图 15.4. Ceph 在具有代理服务器的两个数据中心之间代表
其他资源
有关以下内容的更多信息:
- 为您的 Red Hat Ceph Storage 集群管理 CRUSH,请参阅 CRUSH 管理。
- 您可以在存储池上设置的完整属性,请参阅池 值。