记一次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高可用故障转移的主要内容,如果未能解决你的问题,请参考以下文章
5-4keepalived与nginx实现高可用故障转移实战