keepalived中脚本不执行的问题

在配置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

相关文章
相关标签/搜索