Oracle脑裂 驱逐,了解Oracle RAC Brain Split Resolution集群脑裂协议
當實際的NM Reconfiguration集群重置情況發生時所有的active節點和正在加入集群的節點都會參與到reconfig中,那些沒有應答(ack)的節點都將不再被歸入新的集群關系中。實際上reconfig重置包括多個階段:
1.初始化階段 — reconfig manager(由集群成員號最低的節點擔任)向其他節點發送啟動reconfig的信號
2.投票階段 — 節點向reconfig manager發送該節點所了解的成員關系
3.腦裂檢查階段 — reconfig manager檢查是否腦裂
4.驅逐階段 — reconfig manager驅逐非成員節點
5.更新階段 — reconfig manager向成員節點發送權威成員關系信息
在腦裂檢查階段Reconfig Manager會找出那些沒有Network Heartbeat而有Disk Heartbeat的節點,并通過Network Heartbeat(如果可能的話)和Disk Heartbeat的信息來計算所有競爭子集群(subcluster)內的節點數目,并依據以下2種因素決定哪個子集群應當存活下去:
擁有最多節點數目的子集群(Sub-cluster with largest number of Nodes)
若子集群內數目相等則為擁有最低節點號的子集群(Sub-cluster with lowest node number),舉例來說在一個2節點的RAC環境中總是1號節點會獲勝。
采用Stonith algorithm 的IO fencing(remote power reset)
STONITH算法是一種常用的I/O Fencing algorithm,是RAC中必要的遠程關閉節點的接口。其想法十分簡單,當某個節點上運行的軟件希望確保本集群內的其他節點不能使用某種資源時,拔出其他節點的插座即可。這是一種簡單、可靠且有些殘酷的算法。Stonith 的優勢是其沒有特定的硬件需求,也不會限制集群的擴展性。
Oracle Clusterware的Process Monitor模塊負責實現IO fencing,保證不會因節點/實例的不協調工作而產生corruption。Process Monitor的工作具體由hangcheck timer或者oprocd 完成, 在Linux平臺上10.2.0.4 之前都沒有oprocd的存在(其他Unix平臺在10.2.0.1就有了),在安裝RAC之前需要額外安裝hangcheck timer軟件以保證IO fencing, 到10.2.0.4 時Linux上也有了oprocd,具體見 一文。 這些負責IO fencing的進程一般都會被鎖定在內存中(locked in memory)、實時運行(Real time)、休眠固定的時間(Sleep a fixed time)、以root身份運行;若進程喚醒后發現時間已經太晚,那么它會強制reboot;若這些進程發生失敗,則也會重啟,所以在RAC環境中oprocd是一個很重要的進程,不要失去手動去kill這個進程。
在完成腦裂檢查后進入驅逐階段,被驅逐節點會收到發送給它們的驅逐信息(如果網絡可用的話),若無法發送信息則會通過寫出驅逐通知到voting disk上的”kill block”來達到驅逐通知的目的。同時還會等待被驅逐節點表示其已收到驅逐通知,這種表示可能是通過網絡通信的方式也可能是投票磁盤上的狀態信息。
可以看到Oracle CSS中Brain Split Check時會盡可能地保證最大的一個子集群存活下來以保證RAC系統具有最高的可用性。
實際案例日志
1號節點網絡失敗,2,3號節點形成子集群;2,3節點通過voting disk向1號節點發起驅逐:
以下為1號節點的ocssd.log日志:
[ ? ?CSSD]2011-04-23 17:11:42.943 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 50 3.280308e-268artbeat fatal, eviction in 29.610 seconds
[ ? ?CSSD]2011-04-23 17:11:42.943 [3042950032] >TRACE: ? clssnmPollingThread: node vrh2 (2) is impending reconfig, flag 1037, misstime 30390
[ ? ?CSSD]2011-04-23 17:11:42.943 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 50 3.280308e-268artbeat fatal, eviction in 29.150 seconds
對2,3號節點發起misscount計時
[ ? ?CSSD]2011-04-23 17:11:42.943 [3042950032] >TRACE: ? clssnmPollingThread: node vrh3 (3) is impending reconfig, flag 1037, misstime 30850
[ ? ?CSSD]2011-04-23 17:11:42.943 [3042950032] >TRACE: ? clssnmPollingThread: diskTimeout set to (57000)ms impending reconfig status(1)
[ ? ?CSSD]2011-04-23 17:11:44.368 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 50 3.280308e-268artbeat fatal, eviction in 28.610 seconds
[ ? ?CSSD]2011-04-23 17:12:04.778 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 75 3.280308e-268artbeat fatal, eviction in 14.580 seconds
[ ? ?CSSD]2011-04-23 17:12:04.779 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 75 3.280308e-268artbeat fatal, eviction in 14.120 seconds
[ ? ?CSSD]2011-04-23 17:12:06.207 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 75 3.280308e-268artbeat fatal, eviction in 13.580 seconds
[ ? ?CSSD]2011-04-23 17:12:17.719 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 90 3.280308e-268artbeat fatal, eviction in 5.560 seconds
[ ? ?CSSD]2011-04-23 17:12:17.719 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 90 3.280308e-268artbeat fatal, eviction in 5.100 seconds
[ ? ?CSSD]2011-04-23 17:12:19.165 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 90 3.280308e-268artbeat fatal, eviction in 4.560 seconds
[ ? ?CSSD]2011-04-23 17:12:19.165 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 90 3.280308e-268artbeat fatal, eviction in 4.100 seconds
[ ? ?CSSD]2011-04-23 17:12:20.642 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 90 3.280308e-268artbeat fatal, eviction in 3.560 seconds
[ ? ?CSSD]2011-04-23 17:12:20.642 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 90 3.280308e-268artbeat fatal, eviction in 3.100 seconds
[ ? ?CSSD]2011-04-23 17:12:22.139 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 90 3.280308e-268artbeat fatal, eviction in 2.560 seconds
[ ? ?CSSD]2011-04-23 17:12:22.139 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 90 3.280308e-268artbeat fatal, eviction in 2.100 seconds
[ ? ?CSSD]2011-04-23 17:12:23.588 [3042950032] >WARNING: clssnmPollingThread: node vrh2 (2) at 90 3.280308e-268artbeat fatal, eviction in 1.550 seconds
[ ? ?CSSD]2011-04-23 17:12:23.588 [3042950032] >WARNING: clssnmPollingThread: node vrh3 (3) at 90 3.280308e-268artbeat fatal, eviction in 1.090 seconds
2號節點的ocssd.log日志:
[ ? ?CSSD]2011-04-23 17:11:53.054 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 50 8.910601e-269artbeat fatal, eviction in 29.800 seconds
[ ? ?CSSD]2011-04-23 17:11:53.054 [3053439888] >TRACE: ? clssnmPollingThread: node vrh1 (1) is impending reconfig, flag 1037, misstime 30200
[ ? ?CSSD]2011-04-23 17:11:53.054 [3053439888] >TRACE: ? clssnmPollingThread: diskTimeout set to (57000)ms impending reconfig status(1)
[ ? ?CSSD]2011-04-23 17:11:54.516 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 50 8.910601e-269artbeat fatal, eviction in 28.790 seconds
[ ? ?CSSD]2011-04-23 17:12:14.826 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 75 8.910601e-269artbeat fatal, eviction in 14.800 seconds
[ ? ?CSSD]2011-04-23 17:12:16.265 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 75 8.910601e-269artbeat fatal, eviction in 13.800 seconds
[ ? ?CSSD]2011-04-23 17:12:27.755 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 5.800 seconds
[ ? ?CSSD]2011-04-23 17:12:29.197 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 4.800 seconds
[ ? ?CSSD]2011-04-23 17:12:30.658 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 3.800 seconds
[ ? ?CSSD]2011-04-23 17:12:32.133 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 2.800 seconds
[ ? ?CSSD]2011-04-23 17:12:33.602 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 1.790 seconds
[ ? ?CSSD]2011-04-23 17:12:35.126 [3053439888] >WARNING: clssnmPollingThread: node vrh1 (1) at 90 8.910601e-269artbeat fatal, eviction in 0.800 seconds
[ ? ?CSSD]2011-04-23 17:12:35.399 [117574544] >TRACE: ? clssnmHandleSync: diskTimeout set to (57000)ms
[ ? ?CSSD]2011-04-23 17:12:35.399 [117574544] >TRACE: ? clssnmHandleSync: Acknowledging sync: src[3] srcName[vrh3] seq[21] sync[10]
clssnmHandleSyn應答3號節點發送的同步信息
[ ? ?CSSD]2011-04-23 17:12:35.399 [5073104] >USER: ? ?NMEVENT_SUSPEND [00][00][00][0e]
發生Node Monitoring SUSPEND事件
[ ? ?CSSD]2011-04-23 17:12:35.405 [117574544] >TRACE: ? clssnmSendVoteInfo: node(3) syncSeqNo(10)
通過clssnmSendVoteInfo向3號節點發送投票信息Vote mesg
[ ? ?CSSD]2011-04-23 17:12:35.415 [117574544] >TRACE: ? clssnmUpdateNodeState: node 0, state (0/0) unique (0/0) prevConuni(0) birth (0/0) (old/new)
[ ? ?CSSD]2011-04-23 17:12:35.415 [117574544] >TRACE: ? clssnmUpdateNodeState: node 1, state (3/0) unique (1303592601/1303592601) prevConuni(0) birth (9/9) (old/new)
[ ? ?CSSD]2011-04-23 17:12:35.415 [117574544] >TRACE: ? clssnmDiscHelper: vrh1, node(1) connection failed, con (0xb7e80ae8), probe((nil))
[ ? ?CSSD]2011-04-23 17:12:35.415 [117574544] >TRACE: ? clssnmDeactivateNode: node 1 (vrh1) left cluster
總結
以上是生活随笔為你收集整理的Oracle脑裂 驱逐,了解Oracle RAC Brain Split Resolution集群脑裂协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php-fpm 负荷高,记录简单处理服务
- 下一篇: zabbix监控oracle缓冲区,Za