keepalived脑裂现象
Keepealived最常见的问题是会出现脑裂现象:
Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占master的工作,但其实这时候的master是正常工作的,此时就会出现脑裂的现象。
预防:1.使用shell脚本对这两个主机之间的连通性进行监测,如果发现有问题,就会立即关闭keepalived服务来防止脑裂的产生。
2.增加一条链路作为备用链路,即使主链路挂掉了,备用链路也会顶上来,master主机可以继续给backup主机发送心跳消息。
3.3.使用监控软件的方法,这边主要是采用的zabbix来监控的,主要就是创建监控项,创建触发器来测试关闭keepalived服务。
排查思路:
出现脑裂立即解决方法,自动停掉主活备服务器
主和备都有vip地址中间链路断掉,先停掉主服务器或备服务器,申请操作窗口恢复,添加shell脚本检测联通性,ping后ssh 备服务器看是否ping通主,有问题立刻关闭主或备服务器的keepalived服务。预防方法可增加一台一条链路可以解决,使用监控软件。
抓包确定是否是网卡坏了tcpdump 服务器坏了
网卡没有抓到包,交换机vr下个抓包看主服务器是否有包,下一不出入网口,网线测线仪,交换机没收到包,
keepalived nginx做的负载均衡高可用需要 多一个监控nginx的进程状态,一下是三种监控方法,
法一
netstat -lntp | grep nginx
法二
ps -ef | grep nginx | grep -cv "grep"
ps -ef | grep nginx | egrep -cv "grep|$$"
#$$代表脚本自身的进程id
法三
killall -0 nginx
如果检测没有nginx进程主服务器关闭keepalived,切换为备。
解决脚本:
if ! killall -0 nginx &> /dev/null;then
systemctl stop keepalived
fi
chmod +x nginx.sh
修改配置文件
vim /etc/keepalived/keepalived.conf