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

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

实验拓扑

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

    试验效果

    正常状态

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

    一个web server 宕机了

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

    一个nginx proxy服务器宕机了

    keepalived+nginx-upstream部署高可用反向代理
    keepalived+nginx-upstream部署高可用反向代理
    能够正常运行

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/75809

(0)
oranixoranix
上一篇 2017-05-15
下一篇 2017-05-15

相关推荐

  • 一次简单的内核编译(二)

      前言:     此次编译是继一次简单的内核编译(一)进行操作编译的,请先查看第一篇再来看此片文章 一、使用busybox代替自己制作的init脚本,实现内核启动;  1、在这里我们使用静态编译busybox,所以需要先安装glibc-static依赖包,如果不安装会报错     2、解…

    Linux干货 2015-06-01
  • shell脚本编写规范

    1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8编码,注释及输出尽量使用英文;3 一般给到执行权限,但一些关于变量的配置文件不用加执行权限;4 执行的时候可以使用bash 执行,或者使用bash -x执行,可…

    Linux干货 2017-04-16
  • Linux中的文件管理命令及shell特性

    Linux中的文件管理命令 一、linux中的目录管理命令:mkdir和rmdir mkdir命令:创建目录 – SYNOPSIS         mkdir [OPTION]… DIRECTORY…     -…

    Linux干货 2016-09-27
  • N25第八周学习总结_sed命令详解

    sed使用详解 大纲: 1、    sed是什么 2、    为什么要使用sed 3、    sed使用方法 4、    sed详解   正题: 1、    sed是什么 sed全名Stream Ed…

    2017-02-26
  • CentOS 7破解密码教程

    启动时任意键暂停启动  按e键进入编辑模式  将光标移动linux16开始的行,添加内核参数rd.break  按ctrl-x启动  mount –o remount,rw /sysroot  chroot /sysroot  passwd root  touch /.autorelabe…

    Linux干货 2016-12-01
  • Linux基础命令及获取命令帮助

    何为命令?         linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置She…

    Linux干货 2016-10-25