当前Windows群集心跳阀值设置
一、内容描述:
WINDOWS群集之间通过心跳检测(HeartBeat)各个节点是否正常在线,微软称此检测为lookalive,检测通过UDP数据包中封装的RPC信息进行传送。默认情况下为每秒检测一次,如果连续5次检测失败,则可能发生故障转移。
然而日常运维过程中,存在网络延迟和网络拥挤的个别现象,尤其是不同子网之间的通信更是如此;公司AlwaysOn节点与SQLCluster群集的通信为跨子网,因此在网络繁忙时段,将可能出现网络延迟导致检测失败。本文描述通过调整心跳检测阈值,以最大程度的避免此情况的发生。
二、WINDOWS心跳阀值设置步骤:
通过cmd命令Cluster.exe /prop查看当前群集的属性信息,其中心跳阀值相关属性:
- SameSubnetDelay:同一子网中的节点的测信号频率
- SameSubnetThreshold: 同一子网中的节点的延迟的阈值
- CrossSubnetDelay: 不同的子网中的节点的检测信号频率
- CrossSubnetThreshold: 在不同的子网中的节点的延迟的阈值
SameSubnetDelay 默认代表每1秒执行一次Windows群集心跳检测,SameSubnetThreshold 代表Windows群集允许最大心跳检测失败数5,超过这个数量就可能会引起群集故障转移。
心跳调整允许的范围如下:最大允许每2秒检测一次,连续10次失败则为失败。
属性 |
默认值 |
允许范围值 |
SameSubnetDelay |
1000ms |
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。不能同时使用。