zoukankan      html  css  js  c++  java
  • 在centos下keepalive+nginx(proxy)+nginx(web)搭建

    前言:

      本文是在docker上安装四台centos下做测试,两台nginx服务器做负载,两台nginx服务器做后台应用服务器,keepalived安装在nginx负载上做主从切换。(nginx负载服务器的高可用。方式一:两台服务器(始终只有一台在用,另外一台处于待命状态;方式二:两台都在用,但是要绑定两个公网IP),个人学习了方式一并实践了一下。

      最终实现:nginx-proxy-server1下的nginx关闭了,自动切换到nginx-proxy-server2上做web服务器的负载服务器使用

    服务器 IP
    nginx-web5 172.17.0.4
    nginx-web6 172.17.0.5
    nginx-proxy-server1 172.17.0.2
    nginx-proxy-server2 172.17.0.3
    虚拟IP(漂移IP) 172.17.0.18

    1:NGINX的安装(分别在nginx-web5,nginx-web6,nginx-proxy-server1,nginx-proxy-server2)下安装nginx

    yum update #更新一下系统补丁
    yum install -y gcc gcc-c++ automake make libpcre3-dev libssl-dev openssl libnl libnl-3 libnfnetlink-devel openssl-devel   
    cd /data/software
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
    wget http://zlib.net/zlib-1.2.11.tar.gz
    wget http://nginx.org/download/nginx-1.13.0.tar.gz
    tar -zxvf zlib-1.2.11.tar.gz
    tar -zxvf pcre-8.40.tar.gz
    tar -zxvf nginx-1.13.0.tar.gz 
    cd nginx-1.13.0
    mkdir -p /data/service/nginx
    ./configure --prefix=/data/service/nginx/ --with-pcre=/data/software/pcre-8.40 --with-zlib=/data/software/zlib-1.2.11 --with-openssl=/usr/lib64/openssl
    make && make install

    启动nginx /data/service/nginx/sbin/nginx

    2:NGINX(WEB配置)

        

    vi /data/service/nginx/html/index  (nginx-web5)
    
    <html>
    <head>
    <title>Welcome to nginx!</title>
    </head>
    <body>
    <h1> 172.17.0.4 ( nginx-web5 ) </h1>
    </body>
    </html>
    
    vi /data/service/nginx/html/index  (nginx-web6)
    
    <html>
    <head>
    <title>Welcome to nginx!</title>
    </head>
    <body>
    <h1> 172.17.0.5 ( nginx-web6 ) </h1>
    </body>
    </html>

    3:NGINX(proxy配置)

       

    vi  /data/service/nginx/conf/nginx.conf (nginx-proxy-server1:172.17.0.2) 
    在http{
    
        upstream testHA {
             server 172.17.0.4;
             server 172.17.0.5;
        }
    
       server {
             location / {
                 proxy_pass http://testHA;          
            }      
       }
    
    }    
    

      

    4:keepalived安装

     yum -y install libnl libnl-devel
    yum install keepalived

      

    5:keepalived配置

     master(主): vi /etc/keepalived/keepalived.conf  

    ! Configuration File for keepalived
    
    global_defs {
      # notification_email {
      #      dxh20012012001@sina.com
      # }
      # notification_email_from dengxiaohui2001@163.com
      # smtp_server smtp.163.com
      # smtp_connect_timeout 30
       router_id LVS_DEVEL
      # vrrp_skip_check_adv_addr
      # vrrp_strict
      # vrrp_garp_interval 0
      # vrrp_gna_interval 0
    }
    
    vrrp_script chk_nginx {
        script "/data/service/keepalived/scripts/check_nginx.sh"
        #script "[[ -e /etc/keepalived/down ]] && exit 1 || exit 0"
        interval 1
        weight -2
        rise 3
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        advert_int 1
        mcast_src_ip  172.10.0.2
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.17.0.18/32
        }
    
       track_script {
            chk_nginx
       }
    
    }

     slave:

    脚本:/data/service/keepalived/scripts/check_nginx.sh

    #!/bin/bash
    nginxPidNum=`ps -C nginx --no-header |wc -l`
    keepalivedPidNum=`ps -C keepalived --no-header |wc -l`
    if [ $nginxPidNum -eq 0 ]; then
        if [ $keepalivedPidNum -ne 0 ]; then
            killall keepalived
        fi
    elif [ $keepalivedPidNum -eq 0 ]; then
        /usr/sbin/keepalived
    fi

       开启 nginx-proxy-server1和nginx-proxy-server2上的nginx和keepalived

           /data/service/nginx/sbin/nginx

           /usr/sbin/keepalived

       查看虚拟IP(172.17.0.18)是否绑定在nginx-proxy-server1上面 

      ip addr show

      

    6:keepalived测试

      在(nginx-proxy-server1)关闭掉nginx看ip是否漂移到nginx-proxy-server2上(ip addr show)

     

    或者LINUX下直接访问:curl http://172.17.0.18 还是继续可以访问到web5,web6下的页面

    参考文档:

    http://seanlook.com/2015/05/18/nginx-keepalived-ha/

    https://blog.linuxeye.cn/447.html

  • 相关阅读:
    有限自动机的构造与识别
    c语言文法
    201506110097-试验一实验报告
    作业9.30
    组合数据类型练习,综合练习
    Python综合基础练习
    linux基本命令
    试述大数据对思维方式的重要影响
    语法分析
    有限自动机的构造与识别
  • 原文地址:https://www.cnblogs.com/amuge/p/6864257.html
Copyright © 2011-2022 走看看