文章目錄
- 一、什么是 CSSD?
- CSSD 的職責
- 二、CSSD 是如何工作的?
- 三、CSSD 為什么會重啟節點?
- 情況一:網絡和存儲都斷聯(失聯)
- 情況二:收到其他節點對自己的踢出通知(外部 fencing)
- 四、重啟機制由哪些參數控制?
- 類比理解:CSSD 就像是“集群中的智能保安”
- 總結
一、什么是 CSSD?
CSSD 全稱是:Cluster Synchronization Services Daemon
是 Oracle Clusterware 中最核心、最關鍵的后臺進程之一,運行在每個 Oracle RAC 節點上。
CSSD 的職責
作用 | 說明 |
---|---|
節點監控 | 監聽其他節點是否在線(心跳機制) |
狀態判斷 | 判斷自己是否還能“安全地存在于集群中” |
超時判定 | 檢查 Voting Disk 是否可寫、是否超過超時 |
自我保護 | 在特定條件下主動讓節點重啟,避免腦裂 |
可以說:
CSSD 就是集群中 判斷節點生死 的大腦。
二、CSSD 是如何工作的?
CSSD 會每秒進行如下操作:
- 通過網絡心跳(Interconnect)與其他節點通信;
- 訪問 Voting Disk,寫入“我還活著”,讀取其他節點狀態;
- 判斷自己是否被“孤立”(比如無法訪問 Voting Disk + 收不到其他節點的心跳);
- 一旦失聯,會觸發“節點重啟保護機制”:
- 防止兩個分區各自以為自己是“主集群”
- 避免“腦裂”(Split Brain)
三、CSSD 為什么會重啟節點?
我們重點看這個問題。CSSD 會觸發“重啟節點”操作,通常有兩種場景:
情況一:網絡和存儲都斷聯(失聯)
條件 | 描述 |
---|---|
網絡心跳中斷 | CSSD 無法通過私網感知其他節點 |
Voting Disk 無法訪問 | 可能是存儲故障或路徑異常 |
觸發機制 | CSSD 判斷“我可能是唯一節點,也可能不是” |
動作 | 主動重啟當前節點,讓集群重新決定誰是“主” |
這是一種 自殺保護機制(Suicide Fencing),是 RAC 保證一致性的重要設計。
情況二:收到其他節點對自己的踢出通知(外部 fencing)
如果 CSSD 正常,但交換機或集群其他節點判斷你不再可信(例如你已經被交換機 fenced 掉):
- 其他節點把你踢出;
- 你再嘗試訪問 Voting Disk 失敗;
- CSSD 檢測到狀態不一致 → 重啟自己以退出集群
四、重啟機制由哪些參數控制?
以下參數控制 CSSD 何時“放棄自己”:
參數名 | 說明 | 默認值 |
---|---|---|
misscount | 心跳丟失多久認為節點可能失聯 | 30 秒 |
reboottime | 判斷失敗后等待多久執行重啟 | 3 秒 |
disk timeout | Voting Disk I/O 超時時間 | 200 毫秒 |
類比理解:CSSD 就像是“集群中的智能保安”
它一直在監聽:
- “我是不是還能和大家說話?”
- “我是不是還能在共享筆記本上簽字(Voting Disk)?”
- “別人還在嗎?我是不是一個人了?”
一旦它發現自己可能“誤入另一個平行宇宙”,就會立刻喊一句“我走了”,然后關機自保
總結
CSSD 是 Oracle RAC 中專門用來判斷節點存活狀態的核心進程,一旦檢測到自己失去與其他節點通信或無法訪問 Voting Disk,就會主動觸發節點重啟,以保證集群一致性、防止腦裂。