keepalived脑裂
什么是脑裂?
脑裂(split-brain):指在一个高可用(HA)集群中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。
注:对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。
keepalived脑裂
在keepalived集群中,backup node与master node失去联系,不能确定master node是否存活,给自己也配置一个VIP,使得整个系统存在两个VIP地址。
keepalived脑裂产生原因
①master node和backup node心跳线链路发生故障,导致无法正常通信。
②master node和backup node开启了iptables防火墙阻挡了心跳消息传输。
③master node和backup node心跳网卡地址等信息配置不正确,导致发送心跳失败。
④其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
⑤Keepalived配置里同一 VRRP实例如果virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
keepalived脑裂的解决办法
(1)硬件设施网线:
- 同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
(2)划分一个专门的VLAN用于master node和backup node发送心跳
- 专门的VLAN,让master node和backup node检测交换机的网关IP等
- 或者master node和backup node直连,另一个网卡设备专用检测。
(3)仲裁设备
- 第三方设备检测,做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。