我有 Windows 集群 (2012 R2),其中有 2 个节点,具有通用服务角色。如果我关闭/重新启动活动节点,备用节点上的服务会自动启动,但是如果我通过禁用接口来模拟网络适配器故障,它不起作用。在网络故障的情况下是否可以实现故障转移?我没有使用 Windows Hyper-V,因此受保护的网络选项将不起作用。
谢谢
答案1
对于您来说,最简单的方法是使用 PowerShell 脚本,该脚本会在发生网络故障时将您的角色迁移到健康节点。
通常,如果网络适配器发生故障,事件就会记录到 Windows 服务器系统日志中。只需创建一个将运行 PowerShell 脚本并将其绑定到该特定事件的 Windows 任务。您可以从脚本中重新检查接口状态并决定是否移动角色。
答案2
已经给出的答案确实是在集群中“手动”移动组的方法。
但是要回答这个问题:
如果发生网络故障,是否可以实现故障转移?
是的,这是可能的,但让我解释一下故障转移群集的一个方面。
故障转移群集有许多“故障检测方法”,其中一种方法是由所谓的IsAlive/LooksAlive由集群的RHS.exe(资源主机子系统)执行的方法。
基本上(除非更改了默认值),RHS 每 5 秒对每个资源调用一次“LooksAlive”。这是一个“小”测试,用于确定资源“看起来仍然有效”。
如果此“LooksAlive”测试失败:它 [RHS] 将对资源运行“IsAlive”测试。这将是一个更“彻底”的测试,最终确定资源是否正常运行。
它 [RHS] 还每 30 秒运行一次“IsAlive”,无论“LooksAlive”是成功还是失败。
如果“IsAlive”失败,那么它 [集群] 将向系统事件日志发布“事件 1069”,表明资源已失败。
故障转移群集发生故障后,将决定如何处理故障资源。 它将基于以下几个因素做出决定:
- 资源的重启阈值是多少:它可能会或可能不会尝试重启资源以查看它是否上线(无需故障转移)
- 如果已经耗尽了重启阈值:它将确定资源故障是否应该影响“组”(默认情况下会影响)
- 如果阈值确实已耗尽,并且资源影响到该组,则它 [集群] 将做出故障转移决策(如果可用,则组移动到另一个节点)
我就不多说了,为了充分理解集群决策,我们还应该讨论许多其他功能领域
因此,为了“测试”“自动故障转移”,我们需要了解这个“IsAlive/LooksAlive”测试实际上在做什么。
我们需要确保集群应用程序组中至少有一个“IP 地址”资源,以确保集群正在检查这一点,以捕获网络故障。
如果您正在运行“通用服务”,那么您的组应该如下所示:
Application-Group
- Generic Service
|- Physical disk (only if your app needs it)
|- Network Name
|- IP address
“IsAlive/LooksAlive”是“检测”网络故障的,在“IP地址”中,定义可见这里--> 本文是为 Windows 2003 编写的,但其内容大体上仍然正确,甚至在一篇优秀的文章由 Microsoft 故障转移群集团队的一名成员撰写的有关故障转移群集的文章。
由此,我们知道“IsAlive”的实现方式与“LooksAlive”在“IP 地址”资源方面相同。它基本上检查 IP 地址是否已绑定到操作系统 TCP/IP 堆栈中的相应 NIC。(如果您运行,就会看到ipconfig
)
为了测试这样的故障转移,您有以下几个选择:
- 在故障转移群集管理器中,右键单击应用程序组中的 IP 地址资源,然后选择“模拟故障”。您可能需要执行两次此操作,因为群集将在做出故障转移决策之前尝试重新启动资源(如上所述)。
- (正如您所做的那样)在操作系统中禁用 NIC。只需确保在禁用之前,它实际上是 IP 地址(包含通用服务的实际组的“IP 地址资源”)实际绑定到的 NIC。您可以通过
ipconfig
在命令行上运行来检查这一点。(集群将尝试重新启动,但重新启动将失败,因为 NIC 已被禁用) - 拔出物理网卡的电缆。只需确保在拔出电缆之前,它实际上是 IP 地址(包含通用服务的实际组的“IP 地址资源”)实际绑定到的网卡。您可以通过
ipconfig
在命令行上运行来检查这一点。(集群将尝试重新启动,但由于拔出了网卡电缆,重新启动将失败)
当您拥有适当的应用程序组、适当的依赖关系和 IP 地址时,您将能够成功测试故障转移。
我希望这能解释你的情况。