简介
最近在通过keepalived软件实现高可用服务架构的时候,发现自己配置的vrrp_script监控脚本一直无法触发(nginx宕机时候,不切换备份服务器),后来自己手动执行脚本发现是没有问题的。因此断定问题发生的原因应该是在keepalived的配置文件中,经过仔细的检查后,发现问题的原因是由于少了一个空格所导致的
改动前
下面这段代码检查了很多遍都没有发现问题,后来发现是由于chk_nginx 和 { 之间没有空格导致的,这可能与keepalived读取配置文件的算法有关
vrrp_script chk_nginx{
script "/data/sh/check_nginx.sh"
interval 2
weight 2
}
改动后
vrrp_script chk_nginx {
script "/data/sh/check_nginx.sh"
interval 2
weight 2
}
监控脚本
#!/bin/bash
# Look at nginx process is Runing or not
killall -0 nginx
if [[ $? -ne 0 ]]; then
# try start nginx sever
/usr/local/nginx/sbin/nginx
sleep 2
killall -0 nginx
if [[ $? -ne 0 ]]; then
/etc/init.d/keepalived stop
fi
fi
实验结果
经过改动后,重启keepalived服务,故意杀掉主服务器(192.168.3.100)nginx进程,然后尝试访问VIP后,成功引导到了备份服务器(192.168.3.101)
![](https://i-blog.csdnimg.cn/blog_migrate/80593bea3eacba05fc237b99496c42e7.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b511f1fb3877eca1e2de00337e37982a.jpeg)