在采用nginx+keepalived方案实现网站高可用负载均衡时,常会出现脑裂问题和主服务器故障但是没有释放资源的问题。
1.对于第一个问题,可以用脚本监控备服务器,一旦发现备服务器上出现vip地址,立即发送告警:
#!/bin/bash
ip a s eth0 | grep "192.168.22.3" >/dev/null
if [ $? -eq 0 ]
then
echo "keepalived 出故障" | mail -s 异常告警-keepalived 1280032954@qq.com
fi
将该脚本添加进定时任务里,每2分钟执行一次:
*/2 * * * * /usr/bin/sh /server/scripts/monitoring_keep.sh
注意:备服务器上出现vip地址,一种情况是脑裂问题,另一种情况是主服务器出故障,vip正常切换到备服务器,但是无论哪种原因,都说明集群出现问题,都应该进行告警。
2.对于第二个问题,常见原因是,nginx出故障,但是keepalived工作正常,主服务器占用着vip地址资源,但是却无法提供正常的服务,解决方法是实时监控主服务器的nginx服务,一旦发现nginx出故障,立即释放vip。
1)编写监控nginx服务的脚本:
vim /server/scripts/monitoring_web.sh
#!/bin/bash
num=`ps -ef|grep -c nginx`
if [ $num -lt 2 ]
then
exit 1
else
exit 0
fi