vSAN集群出现和分区,可以看到01主机的集群UUID和02及03主机的集群UUID是一致的,但是在主机列表中却是现实01不在和02及03在一个集群中了,此时通过esxcli vsan cluster leave
把01主机离开后,可以正常离开,但是再通过esxcli vsan cluster join
加入时,又变成了图上的情况。
此时查看主机的单播表发现3台主机的表中全部缺失。
同时如果在自己表中发现了自己的IP地址会有出现PSOD的风险。
可以按照一下步骤手动重建单播代理表
第一步 确认群集中每台主机用于 vSAN 的 VMkernel 端口、IP 地址、节点的 UUID。
以 root 用户身份通过 SSH 登录到群集中的每个 ESXi 主机。
运行以下命确认用于 vSAN 的 VMkernel 端口,并复制输出供之后使用:
esxcli vsan network list
注意:记下 VmkNic 名称,在上述输出中,它是 “vmk2”
使用以下命令查找 “vmk2” 的 IP 地址。
esxcli network ip interface ipv4 get | grep vmk2
注意:此主机上的 vmk2 的 IP 地址是:172.16.15.11
使用以下命令查找主机节点 UUID:
cmmds-tool whoami
使用群集中所有主机的主机 UUID 和 vSAN VMkernel 端口 IP 地址,开始重建单播代理列表。
3 节点群集示例:
rs-esxi1 | UUID: 60ad8769-41d0-e464-c951-0050562a1fb0 | vSAN IP: 172.16.15.11
rs-esxi2 | UUID: 601c6560-a4b0-4ff3-845f-0050562a1db7 | vSAN IP: 172.16.15.12
rs-esxi3 | UUID: 60b124b4-9d9e-4ea4-ffaf-0050562a35d4 | vSAN IP: 172.16.15.13
第二步,创建单播代理列表
对单播代理列表进行更改之前,在群集中的所有节点上运行以下命令,以暂时将每个主机配置为忽略来自 vCenter 的“群集成员列表更新“”。
esxcfg-advcfg -s 1 /VSAN/IgnoreClusterMemberListupdates
有时,主机的单播代理列表中可能存在不正确的条目,例如:对于某一主机 “Supports Unicast” 设置为 False、不正确的 IP 地址、不正确的节点 UUID、或者非 Stretched Cluster 见证主机被错误地标记为“IsWitness”为 True。
无法修改现有条目。 必须删除并重新添加。
运行如下命令检查当前的单播代理列表:
esxcli vsan cluster unicastagent list
注意:在上面的输出中,第二个条目的 IP 地址不正确,两个条目的“支持单播”标志都设置为“false”。
要解决此问题,请运行以下命令删除错误条目。还可以使用该命令来删除所有条目并从头开始重建单播代理列表。
esxcli vsan cluster unicastagent remove -a <Host_VSAN_IP>
注意:在上面的输出中,单播代理列表已被清除。
向单播代理列表添加条目。
请注意 在 ESXi 主机上构建单播代理列表时,请添加所有其他主机的条目,但切勿添加正在配置表的主机的 IP。
如果 ESXi 主机在单播代理列表中具有自己的 IP 地址,可能会发生许多网络连接问题并导致主机 PSOD。
以三节点为例,每个主机将具有两个条目。
esxcli vsan cluster unicastagent add -t node -u <Host_UUID> -U true -a <Host_VSAN_IP> -p 12321
主机 1 上的示例,
注意:运行命令后,检查单播代理列表以确认条目已正确添加,如上面的输出所示。
注意:在延伸群集中,您必须将见证主机条目的“IsWitness”设置为“True”。
见证节点条目:
esxcli vsan cluster unicastagent add -t witness -u <Host_UUID> -U true -a <Host_VSAN_IP> -p 12321
对其余主机重复以上步骤,并确保不包含正在配置表的主机的 IP。
第三步,最后步骤
假定物理网络没有任何问题,则 vSAN 群集应会立即构建。如果每台主机都进行了正确的重建,则运行如下命令会显示群集成员的准确数量:
esxcli vsan cluster get
成功完成所有过程后,请确保在群集中所有节点上再次启用“群集成员列表更新”。运行如下命令:
esxcfg-advcfg -s 0 /VSAN/IgnoreClusterMemberListupdates