zoukankan      html  css  js  c++  java
  • Keepalived+Nginx搭建主从高可用并带nginx检测

    Keepalived+Nginx搭建主从高可用并带nginx检测

     

    应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求。

    测试环境

             

        

    搭建步骤

      1. 安装软件

        在Nginx-A和Nginx-B上:

        ~]# yum install keepalived nmap -y    //nmap提供nmap命令,后面的Nginx检测脚本里会用到

      2. 配置Nginx-A

        [root@nginx-a ~]# vim /etc/keepalived/keepalived.conf    //配置好的内容如下

    复制代码
    ! Configuration File for keepalived
    
    global_defs {
       router_id Nginx-A
    }
    
    vrrp_script chk_nginx {        ## chk_nginx名字可以自定义,与下面的track_script段中的名字要一致
        script "/opt/chk_nginx.sh"    ## chk_nginx.sh的内容下面给出
        interval 2
        weight 2
    }
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            138.138.82.222
        }
        track_script {
            chk_nginx
        }
    }
    复制代码

        保存,退出;

        [root@nginx-a ~]# vim /opt/chk_nginx.sh      //新建Nginx检测脚本,内容如下

        [root@nginx-a ~]# chmod +x /opt/chk_nginx.sh    //给脚本添加执行权限

    复制代码
    #!/bin/sh
    # check nginx server status
    NGINX=/usr/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
    复制代码

        说明:该脚本的意义就是先检测Nginx是否已经开启默认的80端口:

           如果存在80端口,一切正常;

           如果不存在80端口,就执行if段中的语句:先关一下Nginx,在启动Nginx,等待3秒,再次检测80端口,如果还不存在,则杀死keepalived,

           这样一来,访问就走另外一台安装keepalived的上WEB端。(如果两台都出问题,那只能呵呵了)

        [root@nginx-a ~]# service keepalived start  //启动keepalived

        [root@nginx-a ~]# chkconfig keepalived on  //加入开机启动

      3. 配置Nginx-B

        [root@nginx-b ~]# vim /etc/keepalived/keepalived.conf    //配置好的内容如下

    复制代码
    ! Configuration File for keepalived
    
    global_defs {
       router_id Nginx-B
    }
    vrrp_script chk_nginx {        ## 同Nginx-A
        script "/opt/chk_nginx.sh"
        interval 2
        weight 2
    }
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 80
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            138.138.82.222
        }
        track_script {          
            chk_nginx
        }
    }
    复制代码

        保存,退出;

        [root@nginx-b ~]# vim /opt/chk_nginx.sh  // 脚本内容同Nginx-A ,见上面

        [root@nginx-b ~]# chmod +x /opt/chk_nginx.sh  //给脚本添加执行权限

        [root@nginx-b ~]# service keepalived start  //启动keepalived

        [root@nginx-b ~]# chkconfig keepalived on  //加入开机启动

      4. 测试

        找一台客户端执行命令:

        ~]# while true; do curl 138.138.82.222 ;sleep 1;done

         

         

         

         

        测试成功,达到了两台nginx高可用,并能够健康检测nginx(这里实际检测80端口,实际意义可作一样)。

      结束.

      

    附上另一种检测脚本:

    复制代码
    #!/bin/bash
    if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
    then
     /usr/local/nginx/sbin/nginx
     sleep 5
     if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
     then
     killall keepalived
     fi
    fi
    复制代码
  • 相关阅读:
    java虚拟机小贴士之GC分析
    hystrix文档翻译之工作原理
    hystrix文档翻译之开始使用
    SQLALchemy--ORM框架
    PythonWEB框架之Flask--3
    补充
    PythonWEB框架之Flask--2
    PythonWEB框架之Flask
    centos6.8下redis的安装和配置
    celery
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/14854421.html
Copyright © 2011-2022 走看看