文章目录
keepalived 脑裂 & zabbix监控keepalived
1. 脑裂概念
脑裂是指当节点之间的通信出现问题时,可能导致两个节点同时宣称自己是VIP的拥有者,进而导致两个节点同时提供相同的服务。这种情况下,系统可能会出现故障和不一致性,因为两个节点可能在没有协调的情况下同时处理请求。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果——或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。
1.1 脑裂产生原因
一般来说,脑裂的发生,有以下几种原因:
- 高可用服务器对之间心跳线链路发生故障,导致无法正常通信
- 因心跳线坏了(包括断了,老化)
- 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
- 因心跳线间连接的设备故障(网卡及交换机)
- 因仲裁的机器出问题(采用仲裁的方案)
- 高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输
- 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
- 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等
1.2 脑裂解决方案
- 心跳检测机制:确保在Keepalived中正确配置和调整心跳检测机制。这包括设置适当的心跳间隔和超时时间,以确保节点之间的通信正常。通过定期发送心跳消息并监测对方节点的回应,可以及时检测到通信问题并触发故障转移。
- 多数投票机制:在配置Keepalived时,可以设置多数投票机制(Majority Voting)。这意味著只有当大多数节点认为某个节点失效时,才会进行故障转移。通过这种方式,可以防止脑裂问题的发生,因为只有大多数节点都认为某个节点失效时,才会切换服务。
- 快速故障检测和切换:确保Keepalived配置中的故障检测和切换时间尽可能快速。较短的故障检测和切换时间可以减少脑裂问题的持续时间,并使故障转移更迅速地发生。这有助于降低系统中服务中断的风险。
- 日志和监控:通过启用详细的日志记录和监控机制,可以及时发现和诊断Keepalived中的问题。仔细监视各个节点的状态和行为,可以帮助及早发现脑裂问题并採取相应的措施。
注意:
Keepalived配置里同一 VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
2. zabbix监控脑裂
主机名 | ip | keepalived | 系统版本 | zabbix |
---|---|---|---|---|
zabbix_server | 192.168.234.111 | 无 | CentOS8 | zabbix_server |
ha1 | 192.168.234.22 | 主服务器 | CentOS8 | 无 |
ha2 | 192.168.234.123 | 备服务器 | CentOS8 | zabbix_agent< |