keepalived监控Nginx的状态

若是主服务器的keepalived中止服务,从服务器会自动接管VIP对外服务;一旦主服务器的keepalived恢复,会从新接管VIP。 但这并非咱们须要的,咱们须要的是当Nginx中止服务的时候可以自动切换。nginx

keepalived支持配置监控脚本,咱们能够经过脚本监控Nginx的状态,若是状态不正常则进行一系列的操做,最终仍不能恢复Nginx则杀掉keepalived,使得从服务器可以接管服务。服务器

如何监控NginX的状态tcp

最简单的作法是监控Nginx进程,更靠谱的作法是检查Nginx端口,最靠谱的作法是检查多个url可否获取到页面。url

如未尝试恢复服务code

若是发现Nginx不正常,重启之。等待3秒再次校验,仍然失败则再也不尝试。server

根据上述策略很容易写出监控脚本。这里使用nmap检查nginx端口来判断nginx的状态,记得要首先安装nmap。监控脚本以下:进程

#!/bin/sh
# check nginx server status
NGINX=/usr/local/nginx/sbin/nginx
PORT=80

nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
    $NGINX -s stop
    $NGINX
    sleep 3
    nmap localhost -p $PORT | grep "$PORT/tcp open"
    [ $? -ne 0 ] && /etc/init.d/keepalived stop
fi

假设上述脚本放在/opt/chk_nginx.sh,则keepalived.conf中增长以下配置:ip

vrrp_script chk_http_port {
    script "/opt/chk_nginx.sh"
    interval 2
    weight 2
}

track_script {
    chk_http_port
}
相关文章
相关标签/搜索