什么是Keepalived?
Keepalived是一个开源的网络高可用性解决方案,它主要用于在负载均衡和故障转移的环境中确保服务的持续可用性。
Keepalived是基于VRRP协议来实现高可用的方案
Keepalived是如何工作的?
在一个LVS集群中有主服务器和备服务器之分。
在默认的情况下,通过优先级来决定谁主谁备(主服务器master 和 备服务器backup),master会通过IP命令在本地生成VIP,接收到来自客户端的请求消息并处理,同时也会定时的给backup发送VRRP消息来告知自身的存活状态,当master发生故障,backup会接替VIP来继续提供服务,保证服务的高可用。
Keepalived工作模式
Keepalived有两种工作模式,分别是 抢占模式 和 非抢占模式。
- 抢占模式:当主服务器master发生故障恢复后,会抢占备服务器backup的VIP
- 非抢占模式:当主服务器master发生故障恢复后,不会抢占备服务器backup的VIP
非抢占模式如何设置: 主备节点的state都配置为BAKCUP,并且都添加配置nopreempt
Keepalived 脑裂故障
当Keepalived发生脑裂故障,会发现主服务器和备服务器都拥有着相同的VIP
这种现象发生的原因是因为主服务器和备服务器直接的通信断开,导致了备服务器无法收到主服务器发送的VRRP报文,此时备服务器认为主服务器发生了故障,因此通过IP命令生成了VIP
解决脑裂故障的方法:将主服务器或者备服务器其中一个的Keepalived服务关闭
如何预防脑裂故障?
(1)关闭防火墙或者修改防火墙规则放通VRRP组播地址(224.0.0.18)
(2)主备服务器通信中断,就添加双链路通信
(3)使用脚本在主服务器判断与备服务器的通信是否中断,判断通信确实中断,就关闭自身keepalived服务
(4)使用第三方应用或监控系统检测有无发生了脑裂故障,如果确认发生脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务