概述   

Windows Server故障转移集群是一个高可用性平台,它不断监视集群中的网络连接和节点的健康状况。如果一个节点无法通过网络访问,那么将采取恢复操作来恢复集群中的另一个节点上的应用程序和服务,并使其联机。

    

    缺省情况下,故障转移集群被配置为提供最高级别的可用性,停机时间最小。默认的开箱即用设置是针对服务器完全丢失的故障进行优化的,我们将在本博客中称之为硬故障。这些将是不可恢复的故障场景,例如非冗余硬件或电源的故障。在这些情况下,服务器将丢失,而故障转移集群的目标是非常快速地检测服务器的丢失,并在集群中的另一台服务器上快速恢复。要从硬故障中实现这种快速恢复,集群健康监测的默认设置是相当积极的。但是,它们是完全可配置的,可以为各种场景提供灵活性。


    这些默认设置为大多数客户提供了最佳的行为,但是,当集群从几英寸扩展到可能相隔几英里时,集群可能会暴露在节点之间附加的、可能不可靠的网络组件中。另一个因素是,普通服务器的质量在不断提高,加上通过冗余组件(如双电源、网卡组和多路径I/O)增强的弹性,非冗余硬件故障的数量可能相当少。由于硬故障可能不那么频繁,一些客户可能希望针对临时故障对集群进行调优,此时集群对节点之间的短暂网络故障更有弹性。通过增加缺省故障阈值,可以降低对持续较短时间的简短网络问题的敏感性。


权衡

重要的是,大家要理解下面提到的权衡没有绝对的答案,优化的设置可能因您的特定业务需求和服务水平协议而异。

  • 积极监控 - 提供最快的故障检测和硬故障恢复,提供最高级别的可用性。集群对瞬态故障的容忍度较低,在某些情况下,当存在瞬态网络中断时,可能会过早地进行故障转移资源。

  • 放松监控 - 提供更宽容的故障检测,提供更大的容忍度的短暂瞬态网络问题。这些较长的超时将导致集群从硬故障中恢复,这将花费更多的时间并增加停机时间。


    把它想象成你的手机,当电话的另一端没有声音时,你愿意坐在那里说“你好”多长时间?…你还在听吗?…你还在听吗??在你挂断电话给那个人回电话之前。当另一端沉默时,你不知道他们何时甚至是否会回来。
你需要问自己的关键问题是:什么对你更重要?当你拔下电源线时,要快速恢复,还是要对网络故障保持容忍度?


设置

影响集群心跳和节点间健康检测的主要设置有四种。

  • 延迟 这定义了在节点之间发送集群心跳信号的频率。延迟是在发送下一个心跳信号之前的秒数。在同一个集群中,同一子网上的节点之间、不同子网上的节点之间以及不同故障AD站点上的节点之间可能存在不同的延迟。

  • 阈值 - 这定义了在集群采取恢复操作之前错过的心跳信号次数。阈值是心跳信号的次数。在同一个集群中,同一子网上的节点之间、不同子网上的节点之间以及不同故障AD站点上的节点之间可以有不同的阈值。


    重要的是要理解延迟和阈值对总体健康检测都有累积影响。例如,将cross - subnetdelay设置为每2秒发送一次心跳,并将cross - subnetthreshold设置为在进行恢复之前错过的10次心跳,这意味着在采取恢复操作之前,集群的总网络容忍度可以达到20秒。一般来说,继续发送频繁的心跳,但有更大的阈值是首选的方法。增加延迟的主要场景是,节点之间发送的数据是否有进入/退出费用。下表列出了用于调优集群心跳的属性以及默认值和最大值。


Exchange故障转移群集网络阀值调优_修改exchange群集心跳

    为了更好地容忍瞬态故障,建议在Win2008 / Win2008 R2 / Win2012 / Win2012 R2上将相同的ubnetthreshold和cross - subnetthreshold值增加到比Win2016更高些。注意:如果Hyper-V角色安装在Windows Server 2012 R2故障转移集群上,SameSubnetThreshold默认值将自动增加到10,而cross - subnetthreshold默认值将自动增加到20。安装以下热修复程序后,Windows Server 2012 R2上的默认心跳值将增加到和Windows Server 2016上的值一样。

https://support.microsoft.com/en-us/kb/3153887


配置

    集群心跳配置设置被认为是高级设置,仅通过PowerShell公开。可以在集群启动并运行时设置这些设置,而不需要停机,并且将立即生效,不需要重新启动或重新启动集群。
要查看当前心跳配置值:

PS C:\> get-cluster | fl *subnet*

Exchange故障转移群集网络阀值调优_修改心跳延迟和阀值_02

可以使用以下语法修改设置:

PS C:\> (get-cluster).SameSubnetThreshold = 20

Exchange故障转移群集网络阀值调优_exchange群及故障转移_03


日志记录的其他注意事项

    在Windows Server 2012中,在Cluster.log中有额外的日志记录,用于记录心跳停止时的心跳流量。默认情况下,RouteHistoryLength设置为10,这是默认阈值数量的两倍。如果您增加了SameSubnetThreshold或CrossSubnetThrehold值,建议将RouteHistoryLength值增加到该值的两倍,以确保在需要排除正在丢弃的心跳包的故障时,有足够的日志记录。这可以通过以下语法实现:

PS C:\> (get-cluster).RouteHistoryLength = 20

有关因网络通信问题而从集群成员中删除节点的故障排除问题的更多信息,请参见以下博客:

http://blogs.technet.com/b/askcore/archive/2012/02/08/having-a-problem-with-nodes-being-removed-from-active-failover-cluster-membership.aspx