第 11 章 替换 Controller 节点


在一些情况下,高可用性集群中的 Controller 节点可能会出现故障。在这种情况下,您需要把这个节点从集群中删除,并替换为一个新的 Controller 节点。

完成本节中的步骤来替换 Controller 节点。在 Controller 节点替换过程中,需要运行 openstack overcloud deploy 命令,以使用替换 Controller 节点的请求来更新 overcloud。

重要

以下操作过程仅适用于高可用性环境。在只使用一个 Controller 节点的情况下不要使用此过程。

11.1. 准备替换 Controller 节点

在替换 overcloud 控制器节点前,务必要检查Red Hat OpenStack Platform 环境的当前状态;此检查有助于避免在替换控制器节点的过程中出现混乱。使用以下初步检查列表,确定是否可以安全地执行 Controller 节点替换。在 undercloud 上对这些检查运行所有命令。

步骤

  1. 在 undercloud 中检查 overcloud 栈的当前状态:

    $ source stackrc
    $ openstack overcloud status
    Copy to Clipboard Toggle word wrap

    只有 overcloud 堆栈的部署状态为 DEPLOY_SUCCESS 时才继续。

  2. 安装数据库客户端工具:

    $ sudo dnf -y install mariadb
    Copy to Clipboard Toggle word wrap
  3. 配置数据库的 root 用户访问权限:

    $ sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.
    Copy to Clipboard Toggle word wrap
  4. 对 undercloud 数据库进行备份:

    $ mkdir /home/stack/backup
    $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz
    Copy to Clipboard Toggle word wrap
  5. 检查您的 undercloud 是否包含 10 GB 可用存储,可在置备新节点时容纳镜像缓存和转换:

    $ df -h
    Copy to Clipboard Toggle word wrap
  6. 如果您要为新 Controller 节点重复使用 IP 地址,请确保删除旧 Controller 使用的端口:

    $ openstack port delete <port>
    Copy to Clipboard Toggle word wrap
  7. 在运行的 Controller 节点上检查 Pacemaker 的状态。例如,运行的 Controller 节点的 IP 地址是 192.168.0.47,使用以下命令查看 Pacemaker 的状态:

    $ ssh tripleo-admin@192.168.0.47 'sudo pcs status'
    Copy to Clipboard Toggle word wrap

    输出显示了在现有节点上运行的所有服务,以及在故障节点上停止的服务。

  8. 检查 overcloud 的 MariaDB 集群中各个节点的以下参数:

    • wsrep_local_state_comment: Synced
    • wsrep_cluster_size: 2

      使用以下命令检查各个运行的 Controller 节点的这些参数。在本例中,Controller 节点 IP 地址是 192.168.0.47 和 192.168.0.46:

      $ for i in 192.168.0.46 192.168.0.47 ; do echo "*** $i ***" ; ssh tripleo-admin@$i "sudo podman exec \$(sudo podman ps --filter name=galera-bundle -q) mysql -e \"SHOW STATUS LIKE 'wsrep_local_state_comment'; SHOW STATUS LIKE 'wsrep_cluster_size';\""; done
      Copy to Clipboard Toggle word wrap
  9. 检查 RabbitMQ 状态。例如,运行的 Controller 节点的 IP 地址是 192.168.0.47,使用以下命令查看 RabbitMQ 的状态:

    $ ssh tripleo-admin@192.168.0.47 "sudo podman exec \$(sudo podman ps -f name=rabbitmq-bundle -q) rabbitmqctl cluster_status"
    Copy to Clipboard Toggle word wrap

    running_nodes 键应该只显示两个可用的节点,而不会显示有故障的节点。

  10. 如果启用了隔离服务,则将其禁用。例如,如果 192.168.0.47 是运行中 Controller 节点的 IP 地址,则使用以下命令检查隔离服务的状态:

    $ ssh tripleo-admin@192.168.0.47 "sudo pcs property show stonith-enabled"
    Copy to Clipboard Toggle word wrap

    运行以下命令可禁用隔离服务:

    $ ssh tripleo-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"
    Copy to Clipboard Toggle word wrap
  11. 登录到失败的 Controller 节点,并停止运行的所有 nova zFCP 容器:

    $ sudo systemctl stop tripleo_nova_api.service
    $ sudo systemctl stop tripleo_nova_api_cron.service
    $ sudo systemctl stop tripleo_nova_conductor.service
    $ sudo systemctl stop tripleo_nova_metadata.service
    $ sudo systemctl stop tripleo_nova_scheduler.service
    Copy to Clipboard Toggle word wrap
  12. 如果您使用 Bare Metal Service (ironic)作为 virt 驱动程序,则必须在替换 Controller 节点时重复使用主机名。重复使用主机名可防止 Compute 服务(nova)数据库被破坏,并防止在重新部署裸机置备服务时重新平衡工作负载。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat