20.3. 为 Controller 节点替换准备集群


在替换该节点前,请确保 Pacemaker 没有在该节点上运行,然后从 Pacemaker 集群中删除该节点。

流程

  1. 要查看 Controller 节点的 IP 地址列表,请运行以下命令:

    (undercloud)$ metalsmith -c Hostname -c "IP Addresses" list
    +------------------------+-----------------------+
    | Hostname               | IP Addresses          |
    +------------------------+-----------------------+
    | overcloud-compute-0    | ctlplane=192.168.0.44 |
    | overcloud-controller-0 | ctlplane=192.168.0.47 |
    | overcloud-controller-1 | ctlplane=192.168.0.45 |
    | overcloud-controller-2 | ctlplane=192.168.0.46 |
    +------------------------+-----------------------+
  2. 登录节点,并确认 pacemaker 状态。如果 pacemaker 正在运行,请使用 pcs cluster 命令来停止 pacemaker。本例在 overcloud-controller-0 上停止 pacemaker:

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs status | grep -w Online | grep -w overcloud-controller-0"
    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster stop overcloud-controller-0"
    注意

    如果节点物理不可用或停止,则不需要执行前面的操作,因为 pacemaker 已在该节点上停止。

  3. 在节点上停止 Pacemaker 后,从 pacemaker 集群中删除该节点。以下示例登录到 overcloud-controller-1,以删除 overcloud-controller-0

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0"

    如果要替换的节点无法访问(例如,由于硬件故障),请运行 pcs 命令并使用附加 --skip-offline--force 选项从集群中强制删除该节点:

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0 --skip-offline --force"
  4. 从 pacemaker 集群中删除节点后,从 pacemaker 中的已知主机列表中删除该节点:

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"

    无论节点是否可访问,都可运行该命令。

  5. 要确保新 Controller 节点在替换后使用正确的 STONITH 隔离设备,请输入以下命令从节点中删除设备:

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs stonith delete <stonith_resource_name>"
    • <stonith_resource_name > 替换为与节点对应的 STONITH 资源的名称。资源名称使用 <resource_agent>-<host_mac> 格式。您可以在 fence.yaml 文件的 FencingConfig 部分查找资源代理和主机 MAC 地址。
  6. overcloud 数据库必须在替换过程中继续运行。为了确保 Pacemaker 不会在此过程中停止 Galera,可选择一个运行中的 Controller 节点,然后使用该 Controller 节点的 IP 地址在 undercloud 上运行以下命令:

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"
  7. 从集群中删除替换 Controller 节点的 OVN 北向数据库服务器:

    1. 获取要替换的 OVN 北向数据库服务器的服务器 ID:

      $ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound 2>/dev/null|grep -A4 Servers:

      <controller_ip > 替换为任何活跃 Controller 节点的 IP 地址。

      您应该看到类似如下的输出:

      Servers:
      96da (96da at tcp:172.17.1.55:6643) (self) next_index=26063 match_index=26063 466b (466b at tcp:172.17.1.51:6643) next_index=26064 match_index=26063 last msg 2936 ms ago
      ba77 (ba77 at tcp:172.17.1.52:6643) next_index=26064 match_index=26063 last msg 2936 ms ago

      在本例中,172.17.1.55 是被替换的 Controller 节点的内部 IP 地址,因此北向数据库服务器 ID 为 96da

    2. 使用您在上一步中获得的服务器 ID,运行以下命令来删除 OVN 北向数据库服务器:

      $ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/kick OVN_Northbound 96da

      在本例中,您要将 172.17.1.52 替换为任何活跃的 Controller 节点的 IP 地址,并将 96da 替换为 OVN 北向数据库服务器的服务器 ID。

  8. 从集群中移除替换 Controller 节点的 OVN 南向数据库服务器:

    1. 获取要替换的 OVN 南向数据库服务器的服务器 ID:

      $ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Southbound 2>/dev/null|grep -A4 Servers:

      <controller_ip > 替换为任何活跃 Controller 节点的 IP 地址。

      您应该看到类似如下的输出:

      Servers:
      e544 (e544 at tcp:172.17.1.55:6644) last msg 42802690 ms ago
      17ca (17ca at tcp:172.17.1.51:6644) last msg 5281 ms ago
      6e52 (6e52 at tcp:172.17.1.52:6644) (self)

      在本例中,172.17.1.55 是要替换的 Controller 节点的内部 IP 地址,因此南向数据库服务器 ID 为 e544

    2. 使用您在上一步中获得的服务器 ID,运行以下命令来删除 OVN 南向数据库服务器:

      $ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/kick OVN_Southbound e544

      在本例中,您要将 172.17.1.52 替换为任何活跃的 Controller 节点的 IP 地址,并将 e544 替换为 OVN 南向数据库服务器的服务器 ID。

  9. 运行以下清理命令以防止重新加入集群。

    <replaced_controller_ip > 替换为您要替换的 Controller 节点的 IP 地址:

    $ ssh tripleo-admin@<replaced_controller_ip> sudo systemctl disable --now tripleo_ovn_cluster_south_db_server.service tripleo_ovn_cluster_north_db_server.service
    
    $ ssh tripleo-admin@<replaced_controller_ip> sudo rm -rfv /var/lib/openvswitch/ovn/.ovn* /var/lib/openvswitch/ovn/ovn*.db
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.