Keepalived "裂脑" 问题

时间:2022-02-24 14:41:41

一、什么是裂脑

由于某些原因,导致两台高可用服务器对在指定时间内,无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器对都还活着并正常运行,这样就会导致同一个 IP 或服务在两端同时存在而发生冲突,最严重的是两台主机占用同一个 VIP 地址,当用户写入数据时可能会分别写入到两端,这可能会导致服务器两端的数据不一致二造成数据丢失,这种情况就被称为裂脑。

二、裂脑发生的原因

(1) 心跳线出现故障
(2) 防火墙阻挡了心跳消息传输
(3) 网络不通,导致发送心跳失败
(4) 其他原因如心跳方式不同,心跳广播冲突,软件 Bug 等

三、如何解决心跳问题

(1) 做好对裂脑的监控报警
(2) 如果开启防火墙一定要让心跳消息通过
(3) 写一个监测 Keepalived 裂脑的脚本