keepalived应用
1. 监控脚本
在Master节点和Slave节点 /etc/keepalived目录下添加check_nginx.sh 文件,用于检测Nginx的存活状况
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则尝试启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
#如果挂掉了,就启动nginx
#注意nginx.conf配置文件的位置
#尝试重新启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
sleep 3 #睡眠3秒
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
#把nginx宕机时间写入日志
echo "$d nginx down,keepalived will stop" >> /usr/local/nginx/logs/check_ng.log
#启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
service keepalived stop
fi
fi
授权: chmod 755 /etc/keepalived/check_nginx.sh
2. 非抢占模式
在Master 节点 /etc/keepalived目录下,配置keepalived.conf 文件
vrrp_script check_nginx { # {有一个空格
script "/etc/keepalived/check_nginx.sh" #检测进程
interval 2 # 检测间隔时间,即两秒检测一次
#fall 2 # 检测失败的最大次数,超过两次认为节点资源发生故障
#rise 1 # 请求一次成功认为节点恢复正常
weight -20 #失败一次,将自己的优先级 -20
}
vrrp_instance VI_1 {
state BACKUP #非抢占模式 #主标示状态为BACKUP 备份机也为BACKUP
interface eth2 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
mcast_src_ip 192.168.43.101
priority 100 #MASTER权重要高于BACKUP(90)
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
nopreempt #非抢占模式
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 123456
}
track_script {
check_nginx
}
virtual_ipaddress { #设置vip
192.168.43.150 #可以多个虚拟IP,换行即可
}
}
在Backup节点 /etc/keepalived目录下添加 keepalived.conf 配置文件
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" #检测nginx进程
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP #标示状态BACKUP
interface eth2 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
mcast_src_ip 192.168.43.102
priority 90 #MASTER(100)
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
nopreempt #非抢占模式
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 123456
}
track_script {
check_nginx
}
virtual_ipaddress { #设置vip
192.168.43.150 #可以多个虚拟IP,换行即可
}
}
3. 抢占模式
只需要把主的state改成master,从的state还是backup
然后把主机和备份机的nopreempt那个非抢占模式的标识删掉即可.