Keepalived安装可参考Mysql+Keepalived实现双主热备
一、Master上的keepalived.conf
global_defs {
router_id LVS_LEVEL1 #主服务器名称
}
vrrp_script check_run {
script "/usr/local/src/check_nginx.sh"
interval 5 #5秒执行一次脚本
}
vrrp_instance VI_1 {
state MASTER #主服务器
interface eth0 #承载VIP地址到物理接口
virtual_router_id 51 #虚拟路由器ID号,每个热播组保持一致
priority 100 #优先级,数值越大优先级越高
advert_int 1 #检查间隔,默认为1s
authentication { #认证信息,每个热播组保持一致
auth_type PASS #认证类型
auth_pass 1111 #密码字串
}
virtual_ipaddress {
192.168.0.200 #VIP地址(内网地址)
}
track_script {
check_run
}
}
二、Backup上的keepalived.conf
global_defs {
router_id LVS_LEVEL2 #备份服务器名称
}
vrrp_script check_run {
script "/usr/local/src/check_nginx.sh"
interval 5 #5秒执行一次脚本
}
vrrp_instance VI_1 {
state BACKUP #备份服务器
interface eth0 #承载VIP地址到物理接口
virtual_router_id 51 #虚拟路由器ID号,每个热播组保持一致
priority 50 #优先级,数值越大优先级越高
advert_int 1 #检查间隔,默认为1s
authentication { #认证信息,每个热播组保持一致
auth_type PASS #认证类型
auth_pass 1111 #密码字串
}
virtual_ipaddress {
192.168.0.200 #VIP地址(和主服务器设置一样)
}
track_script {
check_run
}
}
三、Nginx检测脚本check_nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
#判断nginx是否宕机,如果宕机,尝试重启
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
#等待一会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
sleep 5
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
chmod +x /etc/keepalived/nginx_check.sh