在keepalived.conf中的vrrp_script配置相信你已经配置完成了,但是在日志中看到执行情况始终是类似如下的情况:
chk_nginx no match, ignoring...
翻译过来是“chk_nginx没有匹配,忽略…”
但是脚本什么的怎么检查都是正确的,单独运行可以生效,exit 0和exit 1都设置了。
这时候我的做法是换了一台服务器用同样的脚本做测试,结果发现脚本运行正常。
具体是什么原因我一直没有检查出来。
顿悟后来回答,我2024年11月
版本:Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2)
操作系统版本:Centos7.9
出现这个问题的原因是你的 vrrp_script必须要在vrrp_instance前声明,否则vrrp_instance模块里的track_script模块不知道你怎么定义脚本的。
你试试把vrrp_script声明在vrrp_instance前面,并且vrrp_script后面的“{”前面换行,反正我是这么操作一下就好使了。。。简直诡异
检查 vrrp_script 和 track_script 两个字段里的名字是不是一样(这里是chk_nginx)
vrrp_script chk_nginx {
.....
script "/xxx/chk_nginx.sh"
}
vrrp_instance VI_1{
.....
track_script {
chk_nginx
}
}