20.8. Controller 节点替换后清理


完成节点替换后,您可以完成 Controller 集群。

流程

  1. 登录 Controller 节点。
  2. 启用 Galera 集群的 Pacemaker 管理,并在新节点上启动 Galera:

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle
    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundle
    Copy to Clipboard Toggle word wrap
  3. 启用隔离:

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true
    Copy to Clipboard Toggle word wrap
  4. 执行最后的状态检查来确保服务在正确运行:

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
    Copy to Clipboard Toggle word wrap
    注意

    如果有任何服务失败,请使用 pcs resource refresh 命令来解决问题并重新启动失败的服务。

  5. 退出 director:

    [tripleo-admin@overcloud-controller-0 ~]$ exit
    Copy to Clipboard Toggle word wrap
  6. 查找 overcloudrc 文件,以便您可以跟 overcloud 交互:

    $ source ~/overcloudrc
    Copy to Clipboard Toggle word wrap
  7. 检查 overcloud 环境中的网络代理:

    (overcloud) $ openstack network agent list
    Copy to Clipboard Toggle word wrap
  8. 如果出现任何旧节点的代理,请删除它们:

    (overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
    Copy to Clipboard Toggle word wrap
  9. 如有必要,将您的路由器添加到新节点上的 3 层代理主机。使用以下示例命令,通过 UUID 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 将名为 r1 的路由器添加到 L3 代理中:

    (overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
    Copy to Clipboard Toggle word wrap
  10. 清理 Cinder 服务。

    1. 列出 cinder 服务:

      (overcloud) $ openstack volume service list
      Copy to Clipboard Toggle word wrap
    2. 登录到控制器节点,连接到 cinder-api 容器,并使用 cinder-manage service remove 命令删除 leftover 服务:

      [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host>
      [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
      Copy to Clipboard Toggle word wrap
  11. 清理 RabbitMQ 集群。

    1. 登录 Controller 节点。
    2. 使用 podman exec 命令启动 bash,并验证 RabbitMQ 集群的状态:

      [tripleo-admin@overcloud-controller-0 ~]$ podman exec -it rabbitmq-bundle-podman-0 bash
      [tripleo-admin@overcloud-controller-0 ~]$ rabbitmqctl cluster_status
      Copy to Clipboard Toggle word wrap
    3. 使用 rabbitmqctl 命令忘记替代的控制器节点:

      [tripleo-admin@overcloud-controller-0 ~]$ rabbitmqctl forget_cluster_node <node_name>
      Copy to Clipboard Toggle word wrap
  12. 如果替换了 bootstrap Controller 节点,则必须在替换过程后移除环境文件 ~/templates/bootstrap-controller.yaml,或者从现有环境文件中移除 pacemaker_short_bootstrap_node_namemysql_short_bootstrap_node_name 参数。此步骤可防止 director 在后续替换中尝试覆盖 Controller 节点名称。如需更多信息,请参阅 替换 bootstrap Controller 节点
  13. 如果在 overcloud 上使用 Object Storage 服务(swift),则必须在更新 overcloud 节点后同步 swift 环。使用类似以下示例的脚本,将之前存在的 Controller 节点(本例中为 Controller 节点 0)中的 ring 文件分发到所有 Controller 节点,并重启这些节点上的 Object Storage 服务容器:

    #!/bin/sh
    set -xe
    
    SRC="tripleo-admin@overcloud-controller-0.ctlplane"
    ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"
    Copy to Clipboard Toggle word wrap
    • 获取当前的 ring 文件集合:

      ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
      Copy to Clipboard Toggle word wrap
    • 将环上传到所有节点,将它们置于正确的位置,然后重新启动 swift 服务:

      for DST in ${ALL}; do
        cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -'
        ssh "${DST}" 'sudo podman restart swift_copy_rings'
        ssh "${DST}" 'sudo systemctl restart tripleo_swift*'
      done
      Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat