5.4. 在池中启用三个可用区


使用这些信息在常规扩展集群配置中启用和集成三个可用区。

先决条件

开始之前,请确保您有以下先决条件:Ceph Root 级别对节点的访问权限。* CRUSH 位置设置为主机。

流程

  1. 获取最新的 CRUSH map,并将 map 解译为文本文件。

    语法

    ceph osd getcrushmap > COMPILED_CRUSHMAP_FILENAME
    crushtool -d COMPILED_CRUSHMAP_FILENAME -o DECOMPILED_CRUSHMAP_FILENAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph osd getcrushmap > crush.map.bin
    [ceph: root@host01 /]# crushtool -d crush.map.bin -o crush.map.txt
    Copy to Clipboard Toggle word wrap

  2. 将新的 CRUSH 规则添加到上一文件中解译的 CRUSH map 文件中。在本例中,规则名称为 3az_rule

    语法

    rule 3az_rule {
             id 1
             type replicated
             step take default
             step choose firstn 3 type datacenter
             step chooseleaf firstn 2 type host
             step emit
     }
    Copy to Clipboard Toggle word wrap

    使用这个规则,放置组将复制三个数据中心中的每个副本。

  3. 注入 CRUSH map,使规则可供集群使用。

    语法

    crushtool -c DECOMPILED_CRUSHMAP_FILENAME -o COMPILED_CRUSHMAP_FILENAME
    ceph osd setcrushmap -i COMPILED_CRUSHMAP_FILENAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# crushtool -c crush.map.txt -o crush2.map.bin
    [ceph: root@host01 /]# ceph osd setcrushmap -i crush2.map.bin
    Copy to Clipboard Toggle word wrap

    您可以按照以下步骤验证规则是否已成功注入。

    1. 列出集群中的规则。

      语法

      ceph osd crush rule ls
      Copy to Clipboard Toggle word wrap

      示例

      [ceph: root@host01 /]# ceph osd crush rule ls
      replicated_rule
      ec86_pool
      3az_rule
      Copy to Clipboard Toggle word wrap

  4. 转储 CRUSH 规则。

    语法

    ceph osd crush rule dump CRUSH_RULE
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph osd crush rule dump 3az_rule
    {
        "rule_id": 1,
        "rule_name": "3az_rule",
        "type": 1,
        "steps": [
            {
                "op": "take",
                "item": -1,
                "item_name": "default"
            },
            {
                "op": "choose_firstn",
                "num": 3,
                "type": "datacenter"
            },
            {
                "op": "chooseleaf_firstn",
                "num": 2,
                "type": "host"
            },
            {
                "op": "emit"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  5. 将 MON 选择策略设置为 connectivity。

    语法

    ceph mon set election_strategy connectivity
    Copy to Clipboard Toggle word wrap

    成功更新后,election_strategy 被更新为 3。默认的 election_strategy 为 1

  6. 可选:验证上一步中设置的选择策略。

    语法

    ceph mon dump
    Copy to Clipboard Toggle word wrap

    检查输出中是否添加了所有 mon 守护进程,并且是否添加了正确的 CRUSH 位置。

    示例

    [ceph: root@host01 /]# ceph mon dump
    epoch 19
    fsid b556497a-693a-11ef-b9d1-fa163e841fd7
    last_changed 2024-09-03T12:47:08.419495+0000
    created 2024-09-02T14:50:51.490781+0000
    min_mon_release 19 (squid)
    election_strategy: 3
    0: [v2:10.0.67.43:3300/0,v1:10.0.67.43:6789/0] mon.host01-installer; crush_location {datacenter=DC1}
    1: [v2:10.0.67.20:3300/0,v1:10.0.67.20:6789/0] mon.host02; crush_location {datacenter=DC1}
    2: [v2:10.0.64.242:3300/0,v1:10.0.64.242:6789/0] mon.host03; crush_location {datacenter=DC1}
    3: [v2:10.0.66.17:3300/0,v1:10.0.66.17:6789/0] mon.host06; crush_location {datacenter=DC2}
    4: [v2:10.0.66.228:3300/0,v1:10.0.66.228:6789/0] mon.host09; crush_location {datacenter=DC3}
    5: [v2:10.0.65.125:3300/0,v1:10.0.65.125:6789/0] mon.host05; crush_location {datacenter=DC2}
    6: [v2:10.0.66.252:3300/0,v1:10.0.66.252:6789/0] mon.host07; crush_location {datacenter=DC3}
    7: [v2:10.0.64.145:3300/0,v1:10.0.64.145:6789/0] mon.host08; crush_location {datacenter=DC3}
    8: [v2:10.0.64.125:3300/0,v1:10.0.64.125:6789/0] mon.host04; crush_location {datacenter=DC2}
    dumped monmap epoch 19
    Copy to Clipboard Toggle word wrap

  7. 将池设置为与三个可用区扩展集群关联。有关可用池值的更多信息,请参阅 Red Hat Ceph Storage 策略指南中的池

    语法

    ceph osd pool stretch set _POOL_NAME_ _PEERING_CRUSH_BUCKET_COUNT_ _PEERING_CRUSH_BUCKET_TARGET_ _PEERING_CRUSH_BUCKET_BARRIER_ _CRUSH_RULE_ _SIZE_ _MIN_SIZE_ [--yes-i-really-mean-it]
    Copy to Clipboard Toggle word wrap

    按如下方式替换变量:

    POOL_NAME
    池的名称。它必须是现有的池,此命令不会创建新池。
    PEERING_CRUSH_BUCKET_COUNT
    该值与 peering_crush_bucket_barrier 一起使用,以确定所选执行集合中 OSD 集合是否可以相互对等,具体取决于操作集合中的不同 bucket 的数量。
    PEERING_CRUSH_BUCKET_TARGET
    这个值与 peering_crush_bucket_barrier 和 size 一起使用,以计算值 bucket_max,限制同一 bucket 中的 OSD 数量被选择处于 PG 执行的集合中。
    PEERING_CRUSH_BUCKET_BARRIER
    池在其中扩展的 bucket 类型。例如,机架、行或数据中心。
    CRUSH_RULE
    用于扩展池的 crush 规则。池的类型必须与 crush_rule (replicated 或 erasure)的类型匹配。
    SIZE
    扩展池中对象的副本数量。
    MIN_SIZE

    扩展池中 I/O 所需的最小副本数。

    重要

    当将 PEERING_CRUSH_BUCKET_COUNT 和 PEERING_CRUSH_BUCKET_COUNT 和 PEERING_CRUSH_BUCKET_TARGET 设置为 CRUSH 映射中的 bucket 数量时,需要 '--yes-i-really-mean-it 标志。使用可选标志确认您要绕过安全检查并为扩展池设置值。

    示例

    [ceph: root@host01 /]# ceph osd pool stretch set pool01 2 3 datacenter 3az_rule 6 3
    Copy to Clipboard Toggle word wrap

    注意

    要将池恢复到非扩展集群,请使用 ceph osd pool stretch unset POOL_NAME 命令。使用此命令不会取消设置 crush_rule大小、和 min_size 值。如果需要,需要手动重置它们。

    发出了一个成功消息,说明池扩展值设置正确。

  8. 可选:使用 ceph osd pool stretch show show 命令,验证与扩展集群关联的池。

    示例

    [ceph: root@host01 /]# ceph osd pool stretch show pool01
    pool: pool01
    pool_id: 1
    is_stretch_pool: 1
    peering_crush_bucket_count: 2
    peering_crush_bucket_target: 3
    peering_crush_bucket_barrier: 8
    crush_rule: 3az_rule
    size: 6
    min_size: 3
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat