Keepalived配置Nginx自动重启
当主节点 Nginx 服务挂掉之后,Keepalived 还会继续挂在主节点上运行,这时请求网站时,网站是不能访问的,这时需要将 Nginx 重新启动,否则网站是不能访问的,如果 Nginx 不能再次启动,这时就需要将 Keepalived 主节点切换成备用节点。这时就需要写一个脚本,来实现这个功能。
Keepalived自动重启Nginx服务
将自动重启 Nginx 服务的脚本写在 Keepalived 主配置文件同级目录下(/etc/keepalived)
检测 Nginx 服务是否存活脚本如下:
file_name check_nginx_alive_or_not.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 3
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi
然后到 Keepalived 主配置文件内添加一个脚本的监听。
在主配置文件中定一个脚本:vrrp_script,然后在 VI_1 节点配置调用。 配置完成后重启Keepalived:systemctl restart keepalived
! 全局配置
global_defs {
! 配置切换通知的email
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
! 配置发件人
notification_email_from Alexandre.Cassen@firewall.loc
! 配置邮箱服务器地址
smtp_server 192.168.200.1
! 配置链接邮箱服务器的超时时间
smtp_connect_timeout 30
! 路由ID:当前安装Keepalived节点主机的标识符,全局唯一
router_id LVS_DEVEL
! 全局vrrp协议配置
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
! 添加自动启动Nginx监听
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_nginx_alive_or_not.sh"
! 每隔两秒运行上一行脚本
interval 2
! 如果脚本运行成功,则升级权重+10
weight 10
! 如果脚本运行失败,则降级权重-10
# weight -10
}
! 计算机节点,基于vrrp协议的一个实例
vrrp_instance VI_1 {
! 表示状态,当前服务器的nginx的主节点,MASTER/BACKUP
state MASTER
! 当前实例绑定的网卡
interface eth0
! 保证主备节点一致即可
virtual_router_id 51
! 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 100
! 主备之间同步检查时间间隔,单位秒
advert_int 2
! 认证权限密码。防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx_alive # 追踪 nginx 脚本
}
! 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}