记一次Nginx+Keepalived高可用故障转移

Posted 夕颜@伤雨痕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次Nginx+Keepalived高可用故障转移相关的知识,希望对你有一定的参考价值。

 Master端:192.168.2.156

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.2.156
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script check_nginx {
  script "/data/sh/check_nginx.sh"
  interval 2
  weight 2
}
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.2.100
    }
 track_script {
  check_nginx
}
}

 slave端:192.168.2.157

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.2.156
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script check_nginx {
  script "/data/sh/check_nginx.sh"
  interval 2
  weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
   mcast_src_ip 192.168.2.157
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }

 track_script {
  check_nginx
}
}

 故障转移脚本

#vim  /data/sh/check_nginx.sh 

#!/bin/bash 
COUNT=$(ps -C nginx --no-header |wc -l)
if [ "${COUNT}"  =  "0" ];then
        echo "重启nginx"
        sleep 2
     COUNT=$(ps -C nginx --no-header |wc -l)
        if [ "${COUNT}" = "0" ];then
             systemctl  stop  keepalived
        fi
fi

 # chmod a+x /data/sh/check_nginx.sh 

[root@localhost ~]# crontab -e

*/1 * * * * /data/sh/check_nginx.sh >> /var/log/check_nginx.log

 测试:当我们尝试停止nghinx时,当手动停止nginx约2秒之后,此时会关闭keepalived,实现vip转移

浏览器访问浏览:VIP192.168.2.100即可

以上是关于记一次Nginx+Keepalived高可用故障转移的主要内容,如果未能解决你的问题,请参考以下文章

Nginx+Keepalived实现站点高可用

nginx结合keepalived实现高可用集群

5-4keepalived与nginx实现高可用故障转移实战

Nginx+Keepalived实现Nginx高可用

Nginx高可用群集架构(Keepalived+nginx+ipvsadm)

Nginx+keepalived高可用(双主模式)