第 6 章 为 Red Hat OpenStack Platform 上的 HA 集群配置隔离
隔离配置确保 HA 集群上的故障节点被自动隔离。这可防止节点消耗集群的资源或影响集群的功能。
使用 fence_openstack
隔离代理为 RHOSP 上的 HA 集群配置隔离设备。您可以使用以下命令查看 RHOSP 隔离代理的选项。
# pcs stonith describe fence_openstack
先决条件
- 在 RHOSP 上运行配置的 HA 集群
- 使用您要用于集群配置的 RHOSP 验证方法访问 RHOSP API,如 为 RHOSP 设置身份验证方法 中所述
集群属性
stonith-enabled
设置为true
,这是默认值。红帽不支持禁用了隔离功能的集群,因为它不适用于生产环境。运行以下命令确保隔离已启用。# pcs property config --all Cluster Properties: . . . stonith-enabled: true
流程
从集群中的任何节点完成以下步骤。
确定集群中每个节点的 UUID。
以下命令显示
ha-example
项目中所有 RHOSP 实例名称的完整列表,以及标题ID
下与该 RHOSP 实例关联的集群节点的 UUID。节点主机名可能与 RHOSP 实例名称不匹配。# openstack --os-cloud="ha-example" server list … | ID | Name |... | 6d86fa7d-b31f-4f8a-895e-b3558df9decb|testnode-node03-vm|... | 43ed5fe8-6cc7-4af0-8acd-a4fea293bc62|testnode-node02-vm|... | 4df08e9d-2fa6-4c04-9e66-36a6f002250e|testnode-node01-vm|...
创建隔离设备,使用
pcmk_host_map 参数
将集群中的每个节点映射到该节点的 UUID。以下么个示例隔离设备创建命令都使用不同的身份验证方法。以下命令使用
clouds.yaml
配置文件为 3 节点集群创建fence_openstack
隔离设备。对于cloud= parameter
,在 clouds.yaml' 文件中指定云名称。# pcs stonith create fenceopenstack fence_openstack pcmk_host_map="node01:4df08e9d-2fa6-4c04-9e66-36a6f002250e;node02:43ed5fe8-6cc7-4af0-8acd-a4fea293bc62;node03:6d86fa7d-b31f-4f8a-895e-b3558df9decb" power_timeout="240" pcmk_reboot_timeout="480" pcmk_reboot_retries="4" cloud="ha-example"
以下命令使用 OpenRC 环境脚本创建一个
fence_openstack
隔离设备。# pcs stonith create fenceopenstack fence_openstack pcmk_host_map="node01:4df08e9d-2fa6-4c04-9e66-36a6f002250e;node02:43ed5fe8-6cc7-4af0-8acd-a4fea293bc62;node03:6d86fa7d-b31f-4f8a-895e-b3558df9decb" power_timeout="240" pcmk_reboot_timeout="480" pcmk_reboot_retries="4" openrc="/root/openrc"
以下命令使用用户名和密码进行身份验证创建
fence_openstack
隔离设备。身份验证参数(包括username
,password
,project_name
, 和auth_url
)由 RHOSP 管理员提供。# pcs stonith create fenceopenstack fence_openstack pcmk_host_map="node01:4df08e9d-2fa6-4c04-9e66-36a6f002250e;node02:43ed5fe8-6cc7-4af0-8acd-a4fea293bc62;node03:6d86fa7d-b31f-4f8a-895e-b3558df9decb" power_timeout="240" pcmk_reboot_timeout="480" pcmk_reboot_retries="4" username="XXX" password="XXX" project_name="rhelha" auth_url="XXX" user_domain_name="Default"
验证
从集群中的一个节点,隔离集群中的不同节点,并检查集群状态。如果隔离的节点离线,则隔离操作成功。
[root@node01 ~] # pcs stonith fence node02 [root@node01 ~] # pcs status
重启您隔离的节点并检查状态以验证节点是否已启动。
[root@node01 ~] # pcs cluster start node02 [root@node01 ~] # pcs status