在配置keepalived+nginx环境时,遇到了一个极其caodan的问题,那就是keepalived不执行配置的监控脚本,在网上找了一圈,浪费了我好几个小时。 现在把解决方法记录在此,希望能帮到踩坑的你。
脚本调用不成功,日志一直提示: Keepalived_vrrp[13096]: Warning - script chk_nginx is not used
主配置文件:
! Configuration File for keepalived
global_defs {
router_id keepalived_mjt
script_user root
enable_script_security
}
vrrp_script chk_nginx
{
script /etc/keepalived/chk_ngx.sh
interval 3
weight -20
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.216.200
}
track_script{
chk_nginx
}
}
备配置文件:
! Configuration File for keepalived
global_defs {
router_id keepalived_cxq
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script /etc/keepalived/chk_ngx.sh
interval 3
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.216.200
}
track_script{
chk_nginx
}
}
监控脚本:
#!/bin/sh
counter=$(ps -C nginx --no-heading|wc -l)
echo "$counter"
if [ "${counter}" = "0" ]; then
/usr/sbin/nginx -c /etc/nginx/nginx.conf
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
发现脚本没有执行时,进行以下检查: 1、检查配置文件中的脚本路径是否正确 2、检查脚本是否有可执行权限 3、手动测试脚本是否能正常执行
以上几个我检查过了没有任何问题,还注意到网上说脚本空格什么的,都检查了一遍,甚至手写了一遍脚本,还是提示脚本is not used。 最后在vrrp_instance VI_1模块中加上了
track_script{
chk_nginx
}
重启之后正常,成千上万个羊驼奔腾而过。。。。 track_script用于用于追踪脚本。