从活动故障转移群集成员身份中删除节点时出现问题

本文介绍如何解决从活动故障转移群集成员身份中随机删除节点的问题。

症状

发生此问题时,系统事件日志中记录了类似此事件的事件:

事件 1135 示例的屏幕截图。

此事件记录在群集中的所有节点上,但已删除的节点除外。 发生此事件的原因是群集中的一个节点已将该节点标记为关闭。 然后,它会通知事件的所有其他节点。 当节点收到通知时,它们会停止并断开与已关闭节点的检测信号连接。

导致节点标记为关闭的原因

Windows 2008 或 2008 R2 故障转移群集中的所有节点通过设置为允许此网络上的群集网络通信的网络相互通信。 节点通过这些网络向所有其他节点发送检测信号数据包。 这些数据包应该由其他节点接收,然后发送回响应。 群集中的每个节点都有自己的检测信号,它将监视这些检测信号,以确保网络已启动,其他节点已启动。 以下示例应有助于阐明此行为:

两个相互对话的节点的示意图。

如果未返回这些数据包中的任何一个,则认为特定检测信号失败。 例如,W2K8-R2-NODE2 发送请求并接收来自 W2K8-R2-NODE1 到检测信号数据包的响应,以便确定网络和节点已启动。 如果 W2K8-R2-NODE1 向 W2K8-R2-NODE2 发送请求,而 W2K8-R2-NODE1 未收到响应,则它被视为丢失检测信号,W2K8-R2-NODE1 会跟踪它。 此错过的响应可能会让 W2K8-R2-NODE1 将网络显示为关闭,直到收到另一个检测信号请求。

默认情况下,在将连接标记为关闭之前,群集节点在 5 秒内限制为 5 次故障。 因此,如果 W2K8-R2-NODE1 在时间段内五次未收到响应,则会认为到 W2K8-R2-NODE2 的特定路由已关闭。 如果其他路由仍被视为已启动,W2K8-R2-NODE2 将保持为活动成员。

如果 W2K8-R2-NODE2 的所有路由都标记为关闭,则会将其从活动故障转移群集成员身份中删除,并记录第一节中看到的事件 1135。 在 W2K8-R2-NODE2 上,群集服务已终止,然后重新启动,以便可以尝试重新加入群集。

有关如何处理具有三个或更多节点的特定路由的详细信息,请参阅 Jeff Hughes 撰写的 “已分区”群集网络 博客。

现在我们已经了解了检测信号过程的工作原理,导致进程失败的已知原因是什么

  1. 实际网络硬件故障。 如果数据包在节点之间的某个网络上丢失,则检测信号会失败。 来自所涉及的两个节点的网络跟踪将揭示这一点。

  2. 网络连接的配置文件可能会从“域”反弹到“公共”,然后再次返回到“域”。 在这些更改的转换过程中,可能会阻止网络 I/O。 可以通过查看网络配置文件操作日志来检查,了解情况是否如此。 可以通过打开事件查看器并导航到“应用程序和服务日志\Microsoft\Windows\NetworkProfile\Operational”来查找此日志。 查看事件 ID 1135 中提到的节点上的此日志中的事件,并查看配置文件此时是否正在更改。 如果是这样,请参阅网络位置配置文件在 Windows 7 或 Windows Server 2008 R2 中从“域”更改为“公共”。

  3. 已在服务器上启用 IPv6,但在 Windows 防火墙中禁用了以下两个规则的入站和出站:

    • 核心网络 - 邻居发现广告
    • 核心网络 - 邻居发现请求
  4. 防病毒软件也可能干扰此过程。 如果怀疑这一点,请通过禁用或卸载软件进行测试。 这样做的风险由你自己承担,因为此时你没有受到病毒保护。

  5. 网络上的延迟也可能导致发生这种情况。 数据包可能不会在节点之间丢失,但在超时期限到期之前,它们可能无法足够快地到达节点。

  6. IPv6 是故障转移群集将用于其检测信号的默认协议。 检测信号本身是通过端口 3343 进行通信的 UDP 单播网络数据包。 如果交换机、防火墙或路由器未正确配置以允许此流量通过,则可能会遇到此类问题。

  7. IPsec 安全策略刷新也可能导致此问题。 具体问题是,在 IPSec 组策略更新期间,具有高级安全性 (WFAS) 的 Windows 防火墙将 (SA) 的所有 IPsec 安全关联) 。 发生这种情况时,会阻止所有网络连接。 如果使用 Active Directory 执行身份验证时出现延迟,则重新协商安全关联时,这些延迟 (阻止所有网络通信) 还会阻止群集检测信号通过,并导致群集运行状况监视在节点未在 5 秒阈值内响应时检测到节点关闭。

  8. 旧网络或过期的网络卡驱动程序和/或固件。 有时,网络卡或交换机的简单错误配置也可能导致检测信号丢失。

  9. 新式网卡和虚拟网卡可能遇到数据包丢失的情况。 可以通过打开性能监视器并添加计数器“网络接口\已接收的数据包已丢弃”来跟踪此情况。此计数器是累积计数器,仅在重新启动服务器之前增加。 在此处看到大量丢弃的数据包可能表明网络上卡上的接收缓冲区设置得太低,或者服务器执行缓慢,无法处理入站流量。 每个网络卡制造商选择是否在网络卡的属性中公开这些设置,因此你需要参考制造商的网站来了解如何增加这些值,并应使用建议的值。 如果你在 VMware 上运行,以下博客会更详细地讨论这个问题,包括如何判断是否是问题,以及指向 VMware 关于要更改的设置的文章。

    从 VMware ESX 上的故障转移群集成员身份中删除的节点

这些是记录这些事件的最常见原因,但也可能存在其他原因。 此博客的目的是让你深入了解该过程,并给出要查找的内容的想法。 有些人会将以下值提高到其最大值,以尝试使此问题停止。

参数 默认值 范围
SameSubnetDelay 1000 毫秒 250-2000 毫秒
CrossSubnetDelay 1000 毫秒 250-4000 毫秒
SameSubnetThreshold 5 3-10
CrossSubnetThreshold 5 3-10

将这些值提高到最大值可能会使事件和节点删除消失,它只会掩盖问题。 它无法修复任何问题。 最好的做法是找出检测信号失败的根本原因并得到修复。 增加这些值的唯一实际需求是在多站点方案中,其中节点位于不同位置,网络延迟无法克服。