pennate 发表于 2018-12-31 11:01:43

keepalived监控NginX的状态

  最近搭建了nginx+keepalived实现高可用负载均衡。
  在测试的时候,主服务器的nginx停止服务。keepalived还在运行 ,
  在客户端进行访问的时候,发现不能切换到从服务器上。从服务器没有接管主服务器的工作。
  在网上找了下愿意,是因为keepalived服务停止的时候。从服务器才会接管工作。
  所以就找了个脚本来监控nginx的状态,从而达到keepalived的自动切换。
  keepalived支持配置监控脚本,我们可以通过脚本监控NginX的状态,如果状态不正常则进行一系列的操作,最终仍不能恢复NginX则杀掉keepalived,使得从服务器能够接管服务。

[*]  如何监控NginX的状态
  最简单的做法是监控NginX进程,更靠谱的做法是检查NginX端口,最靠谱的做法是检查多个url能否获取到页面。

[*]  如何尝试恢复服务
  如果发现NginX不正常,重启之。等待3秒再次校验,仍然失败则不再尝试。
  根据上述策略很容易写出监控脚本。这里使用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

页: [1]
查看完整版本: keepalived监控NginX的状态