keepalived+nginx-upstream部署高可用反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived+nginx-upstream部署高可用反向代理相关的知识,希望对你有一定的参考价值。

 

实验拓扑

技术分享

实验要求

  1. 两个web server提供httpd服务,ip地址分别是172.18.27.201、202,掩码是16
  2. 两个nginx proxy提供高可用反向代理,ip地址分别是172.18.27.102、200,掩码是16.
  3. client能够访问web server,使用dr模型反向代理。

实验步骤

    1. 各主机安装软件

       

      ##web server安装httpd
      yum install -y httpd
      ##nginx proxy安装nginx和keeplived.
      yum install -y keepalived nginx
    2. 配置web server

       

      ##两台web server配置,两台都为centos7.2
      #RS1配置
      vim /var/www/html/index.html
      <h1/>RS1:172.18.27.201</h1>
      #RS2配置
      vim /var/www/html/index.html
      <h1/>RS2:172.18.27.202</h1>
      #RS1和RS2启动httpd服务
      systemct start httpd
    3. 配置nginx proxy

       

      ##配置nginx proxy服务器
      #配置nginx upstream
      vim /etc/nginx/nginx.conf
      http {
           .....
        upstream httpdserver{
           server 172.18.27.201:80 weight=2;
           server 172.18.27.202:80 weight=1;
           server 127.0.0.1:8080 backup;
       }
      }
      #配置keeplived
      vim /etc/keepalived/keepalived.conf
      global_defs {
      vrrp_mcast_group4 224.100.27.1
      }
      vrrp_script chk_down {
                   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
                   interval 1
                   weight -5
                           }
      vrrp_script chk_nginx {
                   script "killall -0 nginx && exit 0 || exit 1"
                   interval 1
                   weight -5
                   fall 2
                   rise 1
      }
      vrrp_instance VI_1 {
       state MASTER
       interface eth1
       virtual_router_id 51
       priority 100
       advert_int 1
       nopreempt
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       virtual_ipaddress {
           172.18.27.254/16 dev eth1 label eth1:0
       }
       track_script {
           chk_down
           chk_nginx
       }
       track_interface{
           eth1
       }
      }
      #启动服务
      service nginx start
      service keepalived start

      配置另一台nginx proxy

      #配置nginx upstream
      vim /etc/nginx/nginx.conf
      http {
           .....
        upstream httpdserver{
           server 172.18.27.201:80 weight=2;
           server 172.18.27.202:80 weight=1;
           server 127.0.0.1:8080 backup;
       }
      }
      #配置keeplived
      vim /etc/keepalived/keepalived.conf
      global_defs {
      vrrp_mcast_group4 224.100.27.1
      }
      vrrp_script chk_down {
                   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
                   interval 1
                   weight -5
                           }
      vrrp_script chk_nginx {
                   script "killall -0 nginx && exit 0 || exit 1"
                   interval 1
                   weight -5
                   fall 2
                   rise 1
      }
      vrrp_instance VI_1 {
       state BACKUP
       interface eno16777736
       virtual_router_id 51
       priority 98
       advert_int 1
       nopreempt
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       virtual_ipaddress {
           172.18.27.254/16 dev een016777736 label eno16777736:0
       }
       track_script {
           chk_down
           chk_nginx
       }
       track_interface{
           eno16777736
       }
      }
      #启动服务
      systemctl start nginx keepalived

      试验效果

      正常状态

      技术分享

      一个web server 宕机了

      技术分享

      一个nginx proxy服务器宕机了

      技术分享
      技术分享
      能够正常运行



以上是关于keepalived+nginx-upstream部署高可用反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx-upstream模块

keepalived

keepalived

keepalived高可用搭建

开启keepalived网络堵塞

Keepalived详解