7.5. 将 Red Hat Ceph Storage RBD 迁移到外部 RHEL 节点


对于运行 Red Hat Ceph Storage 7 或更高版本的超融合基础架构(HCI)或专用存储节点,您必须将 Red Hat OpenStack Platform control plane 中包含的守护进程迁移到现有的外部 Red Hat Enterprise Linux (RHEL)节点。外部 RHEL 节点通常包括 HCI 环境或专用存储节点的 Compute 节点。

先决条件

您必须将 Ceph Manager 守护进程从 Red Hat OpenStack Platform (RHOSP) Controller 节点迁移到一组目标节点。如果使用 Hyperconverged Infrastructure (HCI)拓扑部署 Red Hat Ceph Storage,则目标节点可以是现有的 Red Hat Ceph Storage 节点,或 RHOSP Compute 节点。

注意

以下流程使用 cephadm 和 Ceph Orchestrator 来驱动 Ceph Manager 迁移,使用 Ceph spec 修改放置并重新调度 Ceph Manager 守护进程。Ceph 管理器以主动/被动状态运行。它还提供许多模块,包括 Ceph 编排器。ceph-mgr 提供的每个潜在的模块(如 Ceph 控制面板)都会隐式迁移 Ceph Manager。

流程

  1. SSH 到目标节点,并启用访问 Ceph Manager 服务所需的防火墙规则:

    dports="6800:7300"
    ssh heat-admin@<target_node> sudo iptables -I INPUT \
        -p tcp --match multiport --dports $dports -j ACCEPT;
    Copy to Clipboard Toggle word wrap
    • <target_node > 替换为 Red Hat Ceph Storage 环境中列出的主机的主机名。运行 ceph orch host ls 以查看主机列表。

      为每个目标节点重复此步骤。

  2. 检查规则是否已正确应用到目标节点并保留它们:

    $ sudo iptables-save
    $ sudo systemctl restart iptables
    Copy to Clipboard Toggle word wrap
  3. 如果在现有部署中使用了 nftables,请编辑 /etc/nftables/tripleo-rules.nft 并添加以下内容:

    # 113 ceph_mgr {'dport': ['6800-7300', 8444]}
    add rule inet filter TRIPLEO_INPUT tcp dport { 6800-7300,8444 } ct state new counter accept comment "113 ceph_mgr"
    Copy to Clipboard Toggle word wrap
  4. 保存该文件。
  5. 重启 nftables 服务:

    $ sudo systemctl restart nftables
    Copy to Clipboard Toggle word wrap
  6. 验证是否应用了规则:

    $ sudo nft list ruleset | grep ceph_mgr
    Copy to Clipboard Toggle word wrap
  7. 准备目标节点以托管新的 Ceph Manager 守护进程,并将 mgr 标签添加到目标节点:

    $ sudo cephadm shell -- ceph orch host label add <target_node> mgr
    Copy to Clipboard Toggle word wrap
  8. 对托管 Ceph Manager 守护进程的每个目标节点重复步骤 1-7。
  9. 获取 Ceph Manager 规格:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ mkdir -p ${SPEC_DIR}
    $ sudo cephadm shell -- ceph orch ls --export mgr > ${SPEC_DIR}/mgr
    Copy to Clipboard Toggle word wrap
  10. 编辑检索到的 spec,并将 label: mgr 部分添加到 placement 部分:

    service_type: mgr
    service_id: mgr
    placement:
      label: mgr
    Copy to Clipboard Toggle word wrap
  11. 保存 spec。
  12. 使用 Ceph 编排器应用带有 cephadm 的 spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -m ${SPEC_DIR}/mgr -- ceph orch apply -i /mnt/mgr
    Copy to Clipboard Toggle word wrap

验证

  1. 验证目标节点上是否创建了新的 Ceph Manager 守护进程:

    $ sudo cephadm shell -- ceph orch ps | grep -i mgr
    $ sudo cephadm shell -- ceph -s
    Copy to Clipboard Toggle word wrap

    Ceph 管理器守护进程计数应当与添加 mgr 标签的主机数量匹配。

    注意

    迁移不会缩小 Ceph Manager 守护进程。计数由目标节点数量增加,并将 Ceph Monitor 守护进程迁移到 Red Hat Ceph Storage 节点停用 Ceph 管理器实例。有关更多信息,请参阅将 Ceph Monitor 守护进程迁移到 Red Hat Ceph Storage 节点

您必须将 Ceph Monitor 守护进程从 Red Hat OpenStack Platform (RHOSP) Controller 节点移到一组目标节点。如果使用 Hyperconverged Infrastructure (HCI)拓扑部署 Red Hat Ceph Storage,则目标节点可以是现有的 Red Hat Ceph Storage 节点,或 RHOSP Compute 节点。额外的 Ceph 监控器部署到目标节点上,它们被提升为 _admin 节点,您可以使用它们来管理 Red Hat Ceph Storage 集群并执行第 2 天操作。

要迁移 Ceph Monitor 守护进程,您必须执行以下高级别步骤:

对托管 Ceph 监控器的任何其他 Controller 节点重复这些步骤,直到您将所有 Ceph Monitor 守护进程迁移到目标节点。

7.5.2.1. 为 Ceph 监控迁移配置目标节点

通过执行以下操作,为 Ceph Monitor 迁移准备目标 Red Hat Ceph Storage 节点:

  1. 在目标节点中启用防火墙规则并保留它们。
  2. 创建一个基于标签的 spec,并使用 cephadm 应用它。
  3. 确保在迁移过程中维护 Ceph Monitor 仲裁。

流程

  1. SSH 到目标节点,并启用访问 Ceph 监控服务所需的防火墙规则:

    $ for port in 3300 6789; {
        ssh heat-admin@<target_node> sudo iptables -I INPUT \
        -p tcp -m tcp --dport $port -m conntrack --ctstate NEW \
        -j ACCEPT;
    }
    Copy to Clipboard Toggle word wrap
    • <target_node > 替换为托管新 Ceph Monitor 的节点的主机名。
  2. 检查规则是否已正确应用到目标节点并保留它们:

    $ sudo iptables-save
    $ sudo systemctl restart iptables
    Copy to Clipboard Toggle word wrap
  3. 如果在现有部署中使用了 nftables,请编辑 /etc/nftables/tripleo-rules.nft 并添加以下内容:

    # 110 ceph_mon {'dport': [6789, 3300, '9100']}
    add rule inet filter TRIPLEO_INPUT tcp dport { 6789,3300,9100 } ct state new counter accept comment "110 ceph_mon"
    Copy to Clipboard Toggle word wrap
  4. 保存该文件。
  5. 重启 nftables 服务:

    $ sudo systemctl restart nftables
    Copy to Clipboard Toggle word wrap
  6. 验证是否应用了规则:

    $ sudo nft list ruleset | grep ceph_mon
    Copy to Clipboard Toggle word wrap
  7. 要将现有的 Ceph Monitor 迁移到目标 Red Hat Ceph Storage 节点,请从第一个 Ceph Monitor 或第一个 Controller 节点检索 Red Hat Ceph Storage mon spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ mkdir -p ${SPEC_DIR}
    $ sudo cephadm shell -- ceph orch ls --export mon > ${SPEC_DIR}/mon
    Copy to Clipboard Toggle word wrap
  8. placement 部分添加 label:mon 部分:

    service_type: mon
    service_id: mon
    placement:
      label: mon
    Copy to Clipboard Toggle word wrap
  9. 保存 spec。
  10. 使用 Ceph 编排器应用带有 cephadm 的 spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -m ${SPEC_DIR}/mon -- ceph orch apply -i /mnt/mon
    Copy to Clipboard Toggle word wrap
  11. mon 标签扩展到剩余的 Red Hat Ceph Storage 目标节点,以确保在迁移过程中维护仲裁:

    for item in $(sudo cephadm shell --  ceph orch host ls --format json | jq -r '.[].hostname'); do
        sudo cephadm shell -- ceph orch host label add  $item mon;
        sudo cephadm shell -- ceph orch host label add  $item _admin;
    done
    Copy to Clipboard Toggle word wrap
    注意

    应用 mon spec 允许现有策略 使用标签,而不是主机 。因此,任何具有 mon 标签的节点都可以托管 Ceph Monitor 守护进程。仅执行此步骤一次,以避免在迁移多个 Ceph monitor 时进行多次迭代。

  12. 检查 Red Hat Ceph Storage 和 Ceph 编排器守护进程列表的状态。确保 Ceph 监控器位于仲裁中,并由 ceph orch 命令列出:

    $ sudo cephadm shell -- ceph -s
      cluster:
        id:     f6ec3ebe-26f7-56c8-985d-eb974e8e08e3
        health: HEALTH_OK
    
      services:
        mon: 6 daemons, quorum controller-0,controller-1,controller-2,ceph-0,ceph-1,ceph-2 (age 19m)
        mgr: controller-0.xzgtvo(active, since 32m), standbys: controller-1.mtxohd, controller-2.ahrgsk
        osd: 8 osds: 8 up (since 12m), 8 in (since 18m); 1 remapped pgs
    
      data:
        pools:   1 pools, 1 pgs
        objects: 0 objects, 0 B
        usage:   43 MiB used, 400 GiB / 400 GiB avail
        pgs:     1 active+clean
    Copy to Clipboard Toggle word wrap
    $ sudo cephadm shell -- ceph orch host ls
    HOST              ADDR           LABELS          STATUS
    ceph-0        192.168.24.14  osd mon mgr _admin
    ceph-1        192.168.24.7   osd mon mgr _admin
    ceph-2        192.168.24.8   osd mon mgr _admin
    controller-0  192.168.24.15  _admin mgr mon
    controller-1  192.168.24.23  _admin mgr mon
    controller-2  192.168.24.13  _admin mgr mon
    Copy to Clipboard Toggle word wrap
  13. 在剩余的流程过程中使用的第一个 Controller 节点设置 Ceph 客户端,以便与 Red Hat Ceph Storage 交互。在存储网络上设置一个额外的 IP 地址,在第一个 Controller 节点停用时用于与 Red Hat Ceph Storage 交互:

    1. 备份 ceph_client_backup 目录中 /etc/ceph 的内容。

      $ mkdir -p $HOME/ceph_client_backup
      $ sudo cp -R /etc/ceph/* $HOME/ceph_client_backup
      Copy to Clipboard Toggle word wrap
    2. 在属于存储网络的 VLAN 上的 IP 地址后,编辑 /etc/os-net-config/config.yaml 和 add - ip_netmask: 172.17.3.200。将 172.17.3.200 替换为存储网络上的任何其他可用 IP 地址,这些 IP 地址可静态分配给 controller-0
    3. 保存文件并刷新 controller-0 网络配置:

      $ sudo os-net-config -c /etc/os-net-config/config.yaml
      Copy to Clipboard Toggle word wrap
    4. 验证 Controller 节点中是否存在 IP 地址:

      $ ip -o a | grep 172.17.3.200
      Copy to Clipboard Toggle word wrap
    5. Ping IP 地址,并确认它可以访问:

      $ ping -c 3 172.17.3.200
      Copy to Clipboard Toggle word wrap
    6. 验证您可以与 Red Hat Ceph Storage 集群交互:

      $ sudo cephadm shell -c $HOME/ceph_client_backup/ceph.conf -k $HOME/ceph_client_backup/ceph.client.admin.keyring -- ceph -s
      Copy to Clipboard Toggle word wrap

后续步骤

继续下一步 Draining 源节点

7.5.2.2. 排空源节点

排空源节点,并从 Red Hat Ceph Storage 集群中删除源节点主机。

流程

  1. 在源节点上,备份 /etc/ceph/ 目录,以运行 cephadm,并从源节点获取 Red Hat Ceph Storage 集群的 shell:

    $ mkdir -p $HOME/ceph_client_backup
    $ sudo cp -R /etc/ceph $HOME/ceph_client_backup
    Copy to Clipboard Toggle word wrap
  2. 确定活跃的 ceph-mgr 实例:

    $ sudo cephadm shell -- ceph mgr stat
    Copy to Clipboard Toggle word wrap
  3. 如果 ceph-mgr 在源节点上活跃,则失败:

    $ sudo cephadm shell -- ceph mgr fail <mgr_instance>
    Copy to Clipboard Toggle word wrap
    • <mgr_instance > 替换为 Ceph Manager 守护进程失败。
  4. cephadm shell 中,删除源节点上的标签:

    $ for label in mon mgr _admin; do
        sudo cephadm shell -- ceph orch host label rm <source_node> $label;
    done
    Copy to Clipboard Toggle word wrap
    • <source_node > 替换为源节点的主机名。
  5. 可选:如果 Ceph Monitor 守护进程仍在运行,请确保从源节点中删除 Ceph Monitor 守护进程:

    $ sudo cephadm shell -- ceph orch daemon rm mon.<source_node> --force
    Copy to Clipboard Toggle word wrap
  6. 排空源节点以删除所有剩余的守护进程:

    $ sudo cephadm shell -- ceph orch host drain <source_node>
    Copy to Clipboard Toggle word wrap
  7. 从 Red Hat Ceph Storage 集群中删除源节点主机:

    $ sudo cephadm shell -- ceph orch host rm <source_node> --force
    Copy to Clipboard Toggle word wrap
    注意

    源节点不再是集群的一部分,在运行 sudo cephadm shell -- ceph orch host ls 时,不应出现在 Red Hat Ceph Storage 主机列表中。但是,如果您在源节点上运行 sudo podman ps,则列表可能会显示 Ceph 监控器和 Ceph 管理器仍然在运行。

    [root@controller-1 ~]# sudo podman ps
    CONTAINER ID  IMAGE                                                                                        COMMAND               CREATED         STATUS             PORTS       NAMES
    5c1ad36472bc  registry.redhat.io/ceph/rhceph@sha256:320c364dcc8fc8120e2a42f54eb39ecdba12401a2546763b7bef15b02ce93bc4  -n mon.contro...  35 minutes ago  Up 35 minutes ago              ceph-f6ec3ebe-26f7-56c8-985d-eb974e8e08e3-mon-controller-1
    3b14cc7bf4dd  registry.redhat.io/ceph/rhceph@sha256:320c364dcc8fc8120e2a42f54eb39ecdba12401a2546763b7bef15b02ce93bc4  -n mgr.contro...  35 minutes ago  Up 35 minutes ago              ceph-f6ec3ebe-26f7-56c8-985d-eb974e8e08e3-mgr-controller-1-mtxohd
    Copy to Clipboard Toggle word wrap

    要清理现有容器并从源节点中删除 cephadm 数据,请联系红帽支持。

  8. 确认 mons 仍在仲裁中:

    $ sudo cephadm shell -- ceph -s
    $ sudo cephadm shell -- ceph orch ps | grep -i mon
    Copy to Clipboard Toggle word wrap

后续步骤

继续下一步 迁移 Ceph Monitor IP 地址

7.5.2.3. 迁移 Ceph 监控 IP 地址

您必须将 Ceph Monitor IP 地址迁移到目标 Red Hat Ceph Storage 节点。IP 地址迁移假定目标节点最初由 director 部署,并且网络配置由 os-net-config 管理。

流程

  1. mon_host 行上的 $HOME/ceph_client_backup/ceph.conf 文件获取原始 Ceph Monitor IP 地址,例如:

    mon_host = [v2:172.17.3.60:3300/0,v1:172.17.3.60:6789/0] [v2:172.17.3.29:3300/0,v1:172.17.3.29:6789/0] [v2:172.17.3.53:3300/0,v1:172.17.3.53:6789/0]
    Copy to Clipboard Toggle word wrap
  2. 将上一步中检索到的 IP 地址与源节点上的存储网络 IP 地址匹配,并查找 Ceph Monitor IP 地址:

    [tripleo-admin@controller-0 ~]$ ip -o -4 a | grep 172.17.3
    9: vlan30    inet 172.17.3.60/24 brd 172.17.3.255 scope global vlan30\       valid_lft forever preferred_lft forever
    9: vlan30    inet 172.17.3.13/32 brd 172.17.3.255 scope global vlan30\       valid_lft forever preferred_lft forever
    Copy to Clipboard Toggle word wrap
  3. 确认位于源节点上的 /etc/ os-net-config 目录中的 os-net-config 配置中存在 Ceph Monitor IP 地址:

    [tripleo-admin@controller-0 ~]$ grep "172.17.3.60" /etc/os-net-config/config.yaml
        - ip_netmask: 172.17.3.60/24
    Copy to Clipboard Toggle word wrap
  4. 编辑 /etc/os-net-config/config.yaml 文件并删除 ip_netmask 行。
  5. 保存文件并刷新节点网络配置:

    $ sudo os-net-config -c /etc/os-net-config/config.yaml
    Copy to Clipboard Toggle word wrap
  6. 验证源节点中不存在 IP 地址,例如:

    [controller-0]$ ip -o a | grep 172.17.3.60
    Copy to Clipboard Toggle word wrap
  7. SSH 到目标节点,如 cephstorage-0,再为新 Ceph 监控器添加 IP 地址。
  8. 在目标节点上,编辑 /etc/os-net-config/config.yaml,并添加您在源节点中删除的 ip_netmask: 172.17.3.60 行。
  9. 保存文件并刷新节点网络配置:

    $ sudo os-net-config -c /etc/os-net-config/config.yaml
    Copy to Clipboard Toggle word wrap
  10. 验证目标节点中是否存在 IP 地址。

    $ ip -o a | grep 172.17.3.60
    Copy to Clipboard Toggle word wrap
  11. 从 Ceph 客户端节点 controller-0,ping 迁移到目标节点的 IP 地址,并确认它仍然可以被访问:

    [controller-0]$ ping -c 3 172.17.3.60
    Copy to Clipboard Toggle word wrap

后续步骤

继续下一步 ,在目标节点上重新部署 Ceph Monitor

7.5.2.4. 在目标节点上重新部署 Ceph Monitor

您可以使用迁移到目标节点的 IP 地址在目标节点上重新部署 Ceph Monitor。

流程

  1. 从 Ceph 客户端节点(如 controller-0 )获取 Ceph mon spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -- ceph orch ls --export mon > ${SPEC_DIR}/mon
    Copy to Clipboard Toggle word wrap
  2. 编辑检索到的 spec,并添加 unmanaged: true 关键字:

    service_type: mon
    service_id: mon
    placement:
      label: mon
    unmanaged: true
    Copy to Clipboard Toggle word wrap
  3. 保存 spec。
  4. 使用 Ceph 编排器应用带有 cephadm 的 spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -m ${SPEC_DIR}/mon -- ceph orch apply -i /mnt/mon
    Copy to Clipboard Toggle word wrap

    Ceph 监控守护进程标记为 非受管,您现在可以重新部署现有的守护进程并将其绑定到迁移的 IP 地址。

  5. 删除目标节点上现有的 Ceph Monitor:

    $ sudo cephadm shell -- ceph orch daemon rm mon.<target_node> --force
    Copy to Clipboard Toggle word wrap
    • <target_node > 替换为 Red Hat Ceph Storage 集群中包含的目标节点的主机名。
  6. 使用迁移的 IP 地址在目标节点上重新部署新的 Ceph Monitor:

    $ sudo cephadm shell -- ceph orch daemon add mon <target_node>:<ip_address>
    Copy to Clipboard Toggle word wrap
    • <ip_address > 替换为迁移的 IP 地址的 IP 地址。
  7. 获取 Ceph Monitor 规格:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -- ceph orch ls --export mon > ${SPEC_DIR}/mon
    Copy to Clipboard Toggle word wrap
  8. 编辑检索到的 spec,并将 unmanaged 关键字设置为 false

    service_type: mon
    service_id: mon
    placement:
      label: mon
    unmanaged: false
    Copy to Clipboard Toggle word wrap
  9. 保存 spec。
  10. 使用 Ceph 编排器应用带有 cephadm 的 spec:

    $ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"}
    $ sudo cephadm shell -m ${SPEC_DIR}/mon -- ceph orch apply -i /mnt/mon
    Copy to Clipboard Toggle word wrap

    新的 Ceph 监控器在带有原始 IP 地址的目标节点上运行。

  11. 确定正在运行的 mgr

    $ sudo cephadm shell -- ceph mgr stat
    Copy to Clipboard Toggle word wrap
  12. 通过强制失败来刷新 Ceph Manager 信息:

    $ sudo cephadm shell -- ceph mgr fail
    Copy to Clipboard Toggle word wrap
  13. 刷新 OSD 信息:

    $ sudo cephadm shell -- ceph orch reconfig osd.default_drive_group
    Copy to Clipboard Toggle word wrap

将 Ceph Monitor 守护进程迁移到目标节点后,验证 Red Hat Ceph Storage 集群是否正常运行。

流程

  1. 验证 Red Hat Ceph Storage 集群是否健康:

    $ ceph -s
      cluster:
        id:     f6ec3ebe-26f7-56c8-985d-eb974e8e08e3
        health: HEALTH_OK
    ...
    ...
    Copy to Clipboard Toggle word wrap
  2. 验证 Red Hat Ceph Storage mons 是否使用旧 IP 地址运行。SSH 到目标节点,并验证 Ceph 监控守护进程是否已绑定到预期的 IP 和端口:

    $ netstat -tulpn | grep 3300
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat