Oracle Clusterware的心跳

還不算暈發表於2013-10-27
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

相關文章