zoukankan      html  css  js  c++  java
  • 高可用keepalived与nginx

    Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器

    但是.....如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉不会进行切换,所以需要编写一个脚本检测Nginx的存活状态,如果不存活则kill掉keepalived

    1.nginx故障切换脚本

    [root@lb01 ~]# vim check_web.sh
    #!/bin/sh
    nginxpid=$(ps -C nginx --no-header|wc -l)
    #1.判断Nginx是否存活,如果不存活则尝试启动Nginx
    if [ $nginxpid -eq 0 ];then
        systemctl start nginx
        sleep 3
        #2.等待3秒后再次获取一次Nginx状态
        nginxpid=$(ps -C nginx --no-header|wc -l) 
        #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
        if [ $nginxpid -eq 0 ];then
            systemctl stop keepalived
       fi
    fi
    #给脚本增加执行权限
    [root@lb01 ~]# chmod +x /root/check_web.sh

    2.调用脚本

    [root@lb01 ~]# vim /etc/keepalived/keepalived.conf
    global_defs {           
        router_id lb01      
    }
    #每5秒执行一次脚本,脚本执行内容不能超过5秒,否则会中断再次重新执行脚本
    vrrp_script check_web {
        script "/root/check_web.sh"
        interval 5
    }
    vrrp_instance VI_1 {
        state MASTER        
        interface eth0      
        virtual_router_id 50    
        priority 100        
        advert_int 1        
        authentication {    
            auth_type PASS  
            auth_pass 1111  
        }
        virtual_ipaddress { 
            10.0.0.3    
        }
        #调用并运行脚本
        track_script {
            check_web
        }
    }
    #在Master的keepalived中调用脚本,抢占式,仅需在master配置即可。(注意,如果配置为非抢占式,那么需要两台服务器都使用该脚本)
  • 相关阅读:
    python set
    python中%d %2d %02d %-2d% %.2d的区别
    python dict(字典)
    python 300本电子书合集
    python tuple元组
    python end用法
    python 找出第二大值
    GPU大百科全书 第二章 凝固生命的光栅化
    GPU大百科全书 第一章:美女 方程与几何
    Notepad++中调试用心lua程序
  • 原文地址:https://www.cnblogs.com/chenlifan/p/13652566.html
Copyright © 2011-2022 走看看