附录B:节点重启和健康检查
有时,您需要手动重新启动所有节点(虚拟机和虚拟机管理程序)。更新软件包不会自动触发后续重新启动;您必须手动重新启动节点。附录 B 中提供的重新启动顺序有助于确保将对服务的中断降至最低。在恢复每个服务时检查其运行状况同样重要。这是为了维护高可用性群集的健康节点仲裁。
以下过程详细介绍了用于重新启动和检查每个服务和节点的正确顺序和命令。该过程涵盖适用于 HA 环境的瞻博网络 Contrail 组件和红帽组件。
先决条件
重新启动节点之前:
部署软件更新:Contrail 云更新脚本(逐个角色)。
更新并重新启动控制平面节点
按从非虚拟 IP (VIP) 节点开始的顺序运行该过程,然后对具有 VIP 的节点重复此过程。
示例输出列表特定于部署。您的列表会显示特定于您的 Contrail 云部署的输出。
与控制主机的所有 SSH 连接都需要从跳转主机完成,以确保使用正确的 SSH 密钥。
重新启动云下和跳转主机:
重新启动云上层后,您需要重新启动云下并跳转主机。
关闭您的底层云。从底层:
sudo shutdown -h 0
从跳转主机以用户身份
contrail
关闭 Contrail 命令:ssh command sudo shutdown -h 0
以用户身份
root
关闭并重新引导跳转主机:sudo shutdown -r 0
重新引导跳转主机后,所有服务都会恢复。
验证仲裁和节点运行状况
目的
验证群集高可用性状态以及群集中所有控制节点的运行状况非常重要。此序列验证是否存在正常节点的仲裁,以及群集是否返回到正常运行状态。
行动
此过程需要在目标主机上执行。建立与节点的 SSH 连接,完成这些步骤,然后退出。
要验证 HA 群集的所有组件,请执行以下操作:
重新启动虚拟机管理程序后,以用户身份
contrail
从跳转主机运行系统状态检查。运行此检查,直到返回正常状态:ssh <control host> sudo systemctl list-units --state=failed
验证所有 VM 是否已正确启动,并且没有 VM 处于失败状态:
ssh <control host> sudo virsh list –all
从底层对节点上的每个项目运行服务检查,直到返回正常状态:
检查 OpenStack 控制器。
验证服务的运行状况
systemd
:ansible -i /usr/bin/tripleo-ansible-inventory Controller -m shell -a "sudo systemctl list-units --state=failed 'openstack*' 'neutron*' 'httpd' 'docker' 'ceph*'"
从 OpenStack 控制器验证 Pacemaker 的运行状况:
ansible -i /usr/bin/tripleo-ansible-inventory Controller -m shell -a "sudo pcs status"
验证:
所有群集节点都处于联机状态。
任何群集节点上都不会停止任何资源。
没有失败的心脏起搏器操作。
从 OpenStack 控制器验证 Ceph 的状态:
ansible -i /usr/bin/tripleo-ansible-inventory Controller -m shell -a "sudo ceph status"
验证 Contrail 控制器的状态。从 Contrail 控制器节点运行以下命令:
ansible -i /usr/bin/tripleo-ansible-inventory ContrailController -m shell -a "sudo contrail-status"
验证 Contrail Analytics 的状态。从 Contrail 分析节点运行以下命令:
ansible -i /usr/bin/tripleo-ansible-inventory ContrailAnalytics -m shell -a "sudo contrail-status"
验证 Contrail 分析数据库的状态:
ansible -i /usr/bin/tripleo-ansible-inventory ContrailAnalyticsDatabase -m shell -a "sudo contrail-status"
验证 AppFormix 的状态:
ansible -i /usr/bin/tripleo-ansible-inventory AppformixController -m shell -a "curl -s http://127.0.0.1:9000/appformix/controller/v2.0/status"
成功后,这将返回代码 200。返回的任何其他代码都应被视为失败。
API 输出还包含 AppFormix 版本。这有助于验证是否安装了正确的版本。请参阅以下示例:
{ "Version": "2.19.10-65aa34f7ad", "DBVersion": "70" }
注意:AppFormix 和 MongoDB 容器在重新启动后需要大约 60 秒才能正确启动并相互同步。
要检查 MongoDB 集群状态,请执行以下操作:
ansible -i /usr/bin/tripleo-ansible-inventory AppformixController --become -m shell -a 'source /opt/appformix/mongo/config/credentials.js ; echo "rs.status();" | docker exec -i appformix-mongo mongo admin --username "${USERNAME}" --password "${PASSWORD}"'
验证 ToR 服务节点 (TSN) 的状态:
注意:TSN 节点是一项可选功能,您的环境中可能不存在。
ansible -i /usr/bin/tripleo-ansible-inventory ContrailTsn -m shell -a "sudo contrail-status"
在对下一个虚拟机管理程序执行下一个重新启动周期后,重复此过程。
注意:在继续下一个虚拟机管理程序的重新启动过程之前,请始终验证服务和节点是否正常运行。
启动之前停止的起搏器群集。
最后启动起搏器群集。这是在执行了所有更新和重新启动之后。此时所有节点都必须启动,以便起搏器检测到仲裁。这也假定所有验证和运行状况检查都以正确的状态返回。
启动起搏器群集(云XXX上 ctrl-N):
ssh <address> sudo pcs cluster start --all
启用心脏起搏器服务:
ansible -i /usr/bin/tripleo-ansible-inventory Controller -m shell --become -a 'pcs status| awk "/stonith/{print \$1}" | xargs -n 1 pcs resource enable
重新启动 Ceph 存储节点
按照此过程正确重新启动 Ceph 存储节点。
首先,禁用 Ceph 存储集群,选择一个存储节点,然后重新启动它。重新启动后,验证节点的状态。对所有 Ceph 存储节点重复重新启动过程。启用群集,然后运行最终状态报告以验证群集运行状况是否正常。
重新启动计算节点
按照此过程正确重新启动计算节点。
首先,选择要重启的计算节点,然后将其禁用,以便它不会预配新实例。将所有实例迁移到另一个计算节点。重新启动计算节点,并在重新启动完成后启用它。