11.9. Controller 节点替换后清理
完成节点替换后,您可以完成 Controller 集群。
流程
- 登录 Controller 节点。
启用 Galera 集群的 Pacemaker 管理,并在新节点上启动 Galera:
sudo pcs resource refresh galera-bundle sudo pcs resource manage galera-bundle
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用隔离:
sudo pcs property set stonith-enabled=true
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 执行最后的状态检查来确保服务在正确运行:
sudo pcs status
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果有任何服务失败,请使用
pcs resource refresh命令来解决问题并重新启动失败的服务。退出 director:
exit
[tripleo-admin@overcloud-controller-0 ~]$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找
overcloudrc文件,以便您可以跟 overcloud 交互:source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 overcloud 环境中的网络代理:
(overcloud) $ openstack network agent list
(overcloud) $ openstack network agent listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果出现任何旧节点的代理,请删除它们:
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如有必要,将您的路由器添加到新节点上的 3 层代理主机。使用以下示例命令,通过 UUID 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 将名为
r1的路由器添加到 L3 代理中:(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清理 cinder 服务。
列出 cinder 服务:
(overcloud) $ openstack volume service list
(overcloud) $ openstack volume service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到控制器节点,连接到
cinder-api容器,并使用cinder-manage service remove命令删除左侧服务:sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
[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 Copied! Toggle word wrap Toggle overflow
清理 RabbitMQ 集群。
- 登录 Controller 节点。
使用
podman exec命令启动 bash,并验证 RabbitMQ 集群的状态:sudo podman exec -it rabbitmq-bundle-podman-0 bash rabbitmqctl cluster_status
[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it rabbitmq-bundle-podman-0 bash [root@overcloud-controller-0 /]$ rabbitmqctl cluster_statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
rabbitmqctl命令忘记替换的控制器节点:rabbitmqctl forget_cluster_node <node_name>
[root@controller-0 /]$ rabbitmqctl forget_cluster_node <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
如果替换了 bootstrap Controller 节点,则必须在替换过程后删除环境文件
~/templates/bootstrap_controller.yaml,或者从现有环境文件中删除pacemaker_short_bootstrap_node_name和mysql_short_bootstrap_node_name参数。此步骤可防止 director 在后续替换中尝试覆盖 Controller 节点名称。如需更多信息,请参阅 替换 bootstrap Controller 节点。 如果您在 overcloud 上使用 Object Storage 服务(swift),则必须在更新 overcloud 节点后同步 swift 环。使用类似以下示例的脚本,将 ring 文件从之前存在的 Controller 节点(本例中为Controller 节点 0)分发到所有 Controller 节点,再重启这些节点上的对象存储服务容器:
#!/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"
#!/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 Copied! Toggle word wrap Toggle overflow 获取当前的环文件集合:
ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gzssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ring 上传到所有节点,将它们放在正确的位置,然后重新启动 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*' donefor 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*' doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow