脑裂怎么发生
双机之间靠心跳互相确认状态,心跳一旦中断,两台设备都可能认为自己是主设备,于是同时持有同一地址、处理同一份流量,出现地址冲突与流量异常。心跳链路的冗余度、是否与业务路径共用、检测参数是否合理,共同决定脑裂发生的概率。
基本信息
| 成因 | 心跳中断且两台无法互相确认角色 |
|---|---|
| 预防 | 双心跳链路、独立路径、合理的检测参数 |
| 辅助 | 上下行组网避免两台落入同一故障域 |
| 代价 | 脑裂会同时引发地址冲突与业务中断 |
典型使用场景
- 双机上线前设计心跳链路与故障域
- 交换机故障后出现地址冲突的事故复盘
- 巡检检查心跳口错包与光功率
- 变更窗口安排:避免两台同时重启
- 演练心跳中断时设备的行为是否可预期
预防措施清单
预防措施清单
# 1. 心跳链路双线,与业务路径走不同物理通道
# 2. 心跳链路独立于业务交换机与上联设备
# 3. 检测参数与业务容忍度匹配,不盲目调快调慢
# 4. 定期检查心跳口错包、丢包与光功率
# 5. 变更时避免两台设备同时重启或同时断电
# 6. 组网确认两台设备不落在同一故障域风险点与后果
| 风险点 | 后果 |
|---|---|
| 单条心跳链路 | 该链路故障即进入脑裂风险窗口 |
| 心跳与业务共用交换机 | 交换机故障同时打断业务与心跳 |
| 检测参数过于激进 | 链路轻微抖动即误判,角色反复切换 |
| 两台同时重启 | 重启期间互相争夺主设备角色 |
脑裂的代价是地址冲突与流量异常,预防成本远低于事后恢复。
心跳链路与业务链路走同一台交换机,等于把双机的可靠性绑在单台交换机上。