什么是 CSSD?
文章目录
- 一、什么是 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,就会主动触发节点重启,以保证集群一致性、防止脑裂。