WINDOWS群集之间经过心跳检测(HeartBeat)各个节点是否正常在线,微软称此检测为lookalive,检测经过UDP数据包中封装的RPC信息进行传送。默认状况下为每秒检测一次,若是连续5次检测失败,则可能发生故障转移。网络
然而平常运维过程当中,存在网络延迟和网络拥挤的个别现象,尤为是不一样子网之间的通讯更是如此;公司AlwaysOn节点与SQLCluster群集的通讯为跨子网,所以在网络繁忙时段,将可能出现网络延迟致使检测失败。本文描述经过调整心跳检测阈值,以最大程度的避免此状况的发生。运维
经过cmd命令Cluster.exe /prop查看当前群集的属性信息,其中心跳阀值相关属性:spa
SameSubnetDelay 默认表明每1秒执行一次Windows群集心跳检测,SameSubnetThreshold 表明Windows群集容许最大心跳检测失败数5,超过这个数量就可能会引发群集故障转移。.net
心跳调整容许的范围以下:最大容许每2秒检测一次,连续10次失败则为失败。3d
属性blog |
默认值文档 |
容许范围值get |
SameSubnetDelaycmd |
1000mstable |
250ms~2000ms |
SameSubnetThreshold |
5 |
3~10 |
CrossSubnetDelay |
1000ms |
250ms~2000ms |
CrossSubnetThreshold |
5 |
3~10 |
经过cmd命令修改:
Cluster.exe /Prop SameSubnetDelay=2000
Cluster.exe /Prop SameSubnetThreshold=10
Cluster.exe /Prop CrossSubnetDelay=2000
Cluster.exe /Prop CrossSubnetThreshold =10
查看结果cluster.exe /prop
心跳检测的简单理解为,Node1会发送一个链接序列号到Node2,Node2响应相同的序列号,Node1再次发送一个相同的序列号到Node2,且Node2再次回应相同序列号。Node1将肯定此心跳序列完成并开始另外的序列检测,若是在这某次检测过程当中,心跳序列被删除或未及时接收到,将表示missed这次心跳,默认过程连续五次心跳序列均missed,此节点被认为非活动。
经过修改阀值,能够解决必定程度上的网络延迟,但并不能根本的解决问题,因此请记住对延迟或阈值设置的更改不会被视为一种故障排除技术。对于心跳检测默认使用IPv6,由于它是比IPv4更快的协议,若是已禁用 IPv6,它将使用 IPv4。故障转移群集不会混合和匹配 IPv6 和 IPv4。不能同时使用。