如何在带有 pacemaker 的 RHEL 7、8 或 9 High Availability 集群中使用代理 fence_vmware_rest 配置 stonith 设备?
Environment
- Red Hat Enterprise Linux (RHEL) 7 Update 5 (带有 High Availability Add On)
- Red Hat Enterprise Linux (RHEL) 8 或 9 (带有 High Availability Add On)
Issue
如何在带有 pacemaker 的 RHEL 7、8 或 9 High Availability 集群中使用代理 fence_vmware_rest
配置 stonith 设备?
Resolution
假设如下的集群架构
- 集群节点主机名是
node1
和node2
- vmware hypervisor (vCenter) 看到的集群节点名称是
node1-vm
和node2-vm
列出虚拟机名称
-
检查集群节点是否可以访问 VMware vCenter,并列出由 VMware vCenter 管理的虚拟机。以下命令将尝试使用提供的凭证连接到 VMware vCenter,并列出由 VMware VCenter 管理的所有虚拟机。
# fence_vmware_rest -a <vCenter IP address> -l <vcenter_username> -p <vcenter_password> --ssl-insecure -z -o list | egrep "(node1-vm|node2-vm)" node1-vm, node2-vm, # fence_vmware_rest -a <vCenter IP address> -l <vcenter_username> -p <vcenter_password> --ssl-insecure -z -o status -n node1-vm Status: ON
验证作为集群节点的每个虚拟机的状态是成功的,并测试 fence_vmware_rest
命令可以在作为集群节点的每个虚拟机上正常工作。如果上述命令没有列出任何虚拟机,或者命令出错,请验证以下条件。
- 验证运行
fence_vmware_rest
命令的主机(集群节点之一)可以通过端口443/tcp
(使用 SSL)或端口80/tcp
(没有 SSL)与 VMware vCenter 进行通信。 - 确保该用户具有 VMware vCenter 上进行隔离的权限。
- 检查 VMware vCenter 是否有可信的 SSL 证书。如果无法信任地检查证书,请参阅以下解决方案:放宽一些 SSL 检查。
将 stonith 设备添加到 pacemaker
如果 fence_vmware_rest
命令成功列出了 VMware vCenter 管理的所有虚拟机,并获得了作为集群节点的虚拟机的状态,则继续将由 VMware vCenter 管理的虚拟机添加到 pacemaker
。
隔离代理 fence_vmware_rest
是一个共享的隔离代理,它使用 pcmk_host_map
属性来正确隔离群集节点。pcmk_host_map
属性用于将 pacemaker
看到的主机名映射为 VMware vCenter 中看到的主机名。
pcmk_host_map
中的第一个属性是集群节点名称(/etc/corosync/corosync.conf
文件中的名称),下一个属性(分号后面的值)是 vmware hypervisor 看到的集群节点的名称。
# cat /etc/corosync/corosync.conf
[...]
nodelist {
node {
ring0_addr: node1 <=== Cluster node name
nodeid: 1
}
node {
ring0_addr: node2 <=== Cluster node name
nodeid: 2
}
}
将 fence_vmware_rest
stonith 添加到 pacemaker
:
# pcs stonith create vmfence fence_vmware_rest pcmk_host_map="node1:node1-vm;node2:node2-vm" ipaddr=<vCenter IP address> ssl=1 login=<vcenter_username> passwd=<vcenter_password> ssl_insecure=1
检查 stonith 设备的状态
请注意,在 RHEL 8 之前,将pcs stonith status
替换为 pcs stonith show
,将 pcs stonith config vmfence
替换为 pcs stonith show vmfence --full
。
-
要检查 stonith 设备及其配置的状态,请使用以下命令。
# pcs stonith status * vmfence (stonith:fence_vmware_rest): Started node1
-
显示 stonith 设备的配置属性。
# pcs stonith config vmfence Resource: vmfence (class=stonith type=fence_vmware_rest) Attributes: pcmk_host_map=node1:node1-vm;node2:node2-vm ipaddr=<vCenter IP address> ssl=1 login=<vcenter_username> passwd=<vcenter_password> ssl_insecure=1
测试集群节点已被隔离
在添加了 stonith 设备后,应测试 stonith 设备可以成功隔离群集节点。如需更多信息,请参阅以下文章:
如何在 Red Hat High Availability 集群中测试隔离设备和隔离配置?
其他备注和建议
- 确保已安装了
fence-agents-4.0.11-86.el7
或更高版本,它带有隔离代理:fence_vmware_rest
。 - RHEL 高可用集群的支持政策 - VMware 虚拟机作为集群成员
- RHEL 高可用集群的支持政策 -
fence_vmware_rest
- 在进行配置后,强烈建议您测试集群节点可以成功隔离: 如何在 Red Hat High Availability 集群中测试隔离设备和隔离配置?
- VMware Rest API 有一个 1000 个虚拟机的限制:
fence_vmware_rest
monitor 失败,并显示错误:"Exception:400:Too many virtual machines.Add more filter criteria to reduce the number." - 隔离代理
fence_vmware_rest
目前不支持 对虚拟机使用 UUID (仅支持使用虚拟机名称)。如果您需要使用 UUID,则使用fence_vmware_soap
。 - 隔离代理
fence_vmware_rest
仅适用于 VMware vCenter,因为 ESXi 主机没有提供 REST API。如果您需要使用 ESXi 主机而不是 VMware vCenter,则使用fence_vmware_soap
。
Root Cause
Diagnostic Steps
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments