Oracle Clusterware的心跳

Oracle clusterware 使用两种心跳设备来验证成员的状态,保证集群的完整性;一是对votingdisk的心跳,ocssd进程每秒向votedisk写入一条心跳信息;二是节点间的私有以太网的心跳,两种心跳机制都有一个对应的超时时间,分别叫做 misscount和disktimeout:

misscount 用于定义节点间心跳通信的超时,单位为秒;
disktimeout ,默认200秒,定义css进程与vote disk连接的超时时间;
reboottime ,发生裂脑并且一个节点被踢出后,这个节点将在reboottime的时间内重启;默认是3秒;

用下面的命令查看linux、unix和windows的misscount参数的实际值:

1. #crsctl get css misscount
2. # grep misscount $CRS_HOME/log/hostname/cssd/ocssd.log
[CSSD]2008-11-27 22:29:42.397 [1]>TRACE: clssnmInitNMInfo: misscount set to 600

在下面两种情况发生时,css会踢出节点来保证数据的完整:

(1) Private Network IO time >misscount,会发生split brain即裂脑现象,产生多个“子集群”(subcluster) ,这些子集群进行投票来选择哪个存活,踢出节点的原则按照下面的原则:

节点数目不一致的,节点数多的subcluster存活;节点数相同的,nodeID小的节点存活。

(2) Vote Disk IO Time > disktimeout,踢出节点原则如下:失去半数以上vote disk连接的节点将在reboottime的时间内重启;例如有5个vote disk,当由于网络或者存储原因某个节点与其中>=3个vote disk连接超时时,该节点就会重启。当一个或者两个vote disk损坏时则不会影响集群的运行。

可以手工修改这三个参数的值,单位都是秒:(谨慎使用)

1.   $CRS_HOME/bin/crsctl set css misscount   

2.   $CRS_HOME/bin/crsctl set css reboottime [-force]  

3.   $CRS_HOME/bin/crsctl set css disktimeout [-force]  

4.   或者重新设置成默认值:crsctl unset css misscount