![无法移动群集核心资源](https://linux22.com/image/805349/%E6%97%A0%E6%B3%95%E7%A7%BB%E5%8A%A8%E7%BE%A4%E9%9B%86%E6%A0%B8%E5%BF%83%E8%B5%84%E6%BA%90.png)
我正在尝试将集群核心资源从一个节点移至 4 节点 WSFC 中的另一个节点(这些都是在 Google Cloud 中的 Compute Engine 上运行的虚拟机,Windows Server 2012 R2,每个虚拟机位于不同的子网中)。我正在运行
Move-ClusterGroup -Name "Cluster Group" -Node mynode
并出现错误:
Move-ClusterGroup:移动群集角色“群集组”时发生错误。操作失败,因为指定的群集节点不是组的所有者,或者节点不是组的可能所有者
我已经以这种方式成功移动了可用存储群集组,只是这个操作失败了。群集托管一个 SQL Server 可用性组,该组处于联机状态并按预期运行,并且之前已多次故障转移。
第一次尝试执行此操作时,集群事件中出现错误:
集群角色‘集群组’中类型为‘IP 地址’的集群资源‘集群 IP 地址 [当前主机的 ip]’失败。
根据资源和角色的故障策略,群集服务可能会尝试使资源在此节点上联机或将组移动到群集的另一个节点,然后重新启动它。使用故障转移群集管理器或 Get-ClusterResource Windows PowerShell cmdlet 检查资源和组状态。
因此,我检查了集群核心资源的 IP 资源,发现尽管处于错误的子网中,但每个资源都有所有 4 个节点的可能所有者。它似乎试图将当前 IP 调到目标主机上,但这当然行不通。我从每个集群资源中删除了“错误”子网中的 3 个 IP,从那时起,就一直收到我在此处包含的第一条错误消息。
我运行了Get-ClusterGroup -Name "Cluster Group" | Get-ClusterOwnerNode
该程序,最初返回 OwnerNodes 的 {}。此后,我尝试添加当前所有者 + 我试图移动到的节点Set-ClusterOwnerNode
,现在我可以看到我期望的两个可能的所有者,但这对移动没有任何影响。
我确实想知道这是否是 DNS 问题。我认为在 DNS 中为集群保留一个具有当前在线 IP 的条目是正确的,因此在移动期间应该会更新该条目(而不是拥有多个具有不同 IP 的 A 记录)。我尝试更新此条目的安全性,只是让 2 个节点暂时完全控制,并检查集群对象(已具有权限)的权限。我没有对 AD/DNS 做更多操作,因为我不想把事情搞砸。
我已经运行了集群验证,但它没有给出任何我认为可以解释这种情况的原因。有以下警告:不同的 IP 集群核心资源,因为它们不再由每个节点拥有、HostRecordTTL 和 RegisterAllIP 设置、未签名的驱动程序、两个节点上的一些软件差异(只是应用于我尝试移动到的节点的更新)。
答案1
好吧,我似乎已经修复了它:
根据 cmdlet 中的错误,我将所有节点重新添加为所有 IP 的可能所有者Move-ClusterGroup
。然后,尝试再次移动,我得到了初始错误,即尝试将子网 1 IP 启动到另一个子网中的节点上。这次我重复了故障转移并超过了“指定时间段内的最大重启次数”,因此集群组进入了离线模式,而不是在子网 1 节点上重新上线。发生这种情况后,我通过 GUI 手动将子网 2 IP 上线。这有效,并将集群组启动到目标节点上。
完成此操作后,我便可以Move-ClusterGroup
按预期在这两个节点之间使用。移动到第三个子网中的节点仍然失败,但使用相同的技巧(使群集组脱机并手动将群集 IP 联机)可在该节点上工作。
我真的不知道这里发生了什么,我只能得出这样的结论:这是某种元数据/注册表损坏,在手动将 IP 联机时已修复。也许其他人可以告诉我。
答案2
群集组 “群集组” /moveto: (服务器名称)