我想设置一个策略,以便我的故障转移群集始终投入使用,即使只有一个(两个节点中的一个)可用。
背景:我在集群中只有两个节点,外加 DC 共享中的见证仲裁。对于这个问题,假设 DC 保持运行状态。(Windows 服务器 2019)。
如果我关闭 node1,则 node2 将处于活动状态。如果我随后关闭 node2,则集群将停止(显然),但是,如果我随后仅启动 node1,则集群将永远无法恢复。如果没有 node2,它不仅不会恢复,而且我看不到使用集群管理器使集群投入使用的简单方法。在这种情况下,我可以恢复集群的唯一方法是启动 node2,但是(对我而言)这似乎不是真正的高可用性。IMO 我应该能够设置策略或有一种相当简单的方法使集群重新上线(可能在等待一段时间之后),即使 node2永远不会恢复。
我只是在想这个错误的方式还是遗漏了一些明显的东西?
更新:我确实看到了一个错误:
Node 'SOM2' failed to form a cluster. This was because the
witness was not accessible. Please ensure that the witness
resource is online and available.
但是当时witness是可用的,这让我怀疑这是权限问题,即witness share对集群可用,但不是每个节点上的集群服务账户。那可能吗?
见证共享上是否有一些特殊的权限设置,以确保每个节点上的本地服务帐户都可以访问它?
更新:
要修复权限错误(不是中心问题),我需要使用以下 powershell 命令:
https://docs.microsoft.com/en-us/powershell/module/failoverclusters/set-clusterquorum
检查见证人的权限以允许由正确的域帐户进行完全控制,例如密码永不过期且无法更改的服务帐户。然后,在集群主机上,首先去掉当前的见证配置:
Set-ClusterQuorum -NoWitness
Get-ClusterResource
如果需要的话:
Remove-ClusterResource -Name "File Share Witness"
或使用故障转移群集管理器将其删除
然后,使用必要的域凭据重新添加文件共享见证以允许访问:
Set-ClusterQuorum -NodeAndFileShareMajority \\server\path-to-witness -Credential $(Get-Credential)
正如@stuka 所说,这是设计使然。在整个集群关闭之前,该文件已被活动节点锁定。Node1 无法知道 Node2 实际上并不在线,但无法通过集群网络访问。它必须依赖锁定的文件是正确的。在这种情况下,如果节点 1 上线,情况会更糟,就像集群网络出现故障一样,任何一个节点都无法打破仲裁投票的束缚。
如果您确实遇到这种情况,您必须编辑仲裁设置并手动强制节点重新联机。
在实践中,这不应该引起关注,因为集群很少会完全脱机。
两个节点集群在 HA 方面总是会有所妥协。见证文件共享建立仲裁,但它不能涵盖所有场景。3 节点(或其他奇数节点)集群将提供更好的容错能力。
如果在线节点可以访问仲裁见证共享,那么它肯定能够使集群在线。这是标准的 WSFC 行为。如果您的集群未启动且见证共享处于联机状态,则必须有其他原因阻止它启动。查找任何错误。
另外,如何配置集群仲裁设置?
请参阅此处以供参考:https ://docs.microsoft.com/en-us/windows-server/failover-clustering/manage-cluster-quorum 。