在配置keepalived+nginx环境时,遇到了一个极其caodan的问题,那就是keepalived不执行配置的监控脚本,在网上找了一圈,浪费了我好几个小时。
如今把解决方法记录在此,但愿能帮到踩坑的你。nginx
脚本调用不成功,日志一直提示:
Keepalived_vrrp[13096]: Warning - script chk_nginx is not usedide
主配置文件:测试
! 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 } }
监控脚本:code
#!/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
发现脚本没有执行时,进行如下检查:
一、检查配置文件中的脚本路径是否正确
二、检查脚本是否有可执行权限
三、手动测试脚本是否能正常执行router
以上几个我检查过了没有任何问题,还注意到网上说脚本空格什么的,都检查了一遍,甚至手写了一遍脚本,仍是提示脚本is not used。
最后在vrrp_instance VI_1模块中加上了ip
track_script{ chk_nginx }
重启以后正常,成千上万个羊驼奔腾而过。。。。
track_script用于用于追踪脚本。it