使用keepalive实现nginx反向代理高可用

简介:

在网站架构中,为了分散客户端对服务器的访问压力,可以使用nginx作为反向代理。但是使用一个nginx作为代理服务器必定会面对单点故障的情况,所以一般使用多台nginx反代服务器,而使用多台nginx服务器还要面对如何协调调度的问题。在此,我给大家介绍使用keepalive协调调度nginx反代服务器的方法。

 

keepalive简介

说到keepalive就要说到他的实现核心——VRRP协议。VRRP即虚拟路由器冗余协议,最初是为了解决多个路由器热备份而制定的。它是通过主路由器定时在网络中发送主路由器信息,通知各个备路由器,当备路由器接收不到信息就会通过优先级竞选成为主路由器。

 

VRRP的优先级范围是0-255,可配置范围1-254,其中0给路由器放弃MASTER位置时候使用,255保留给IP地址的拥有者使用。如果路由器的IP地址为虚拟IP地址时,只要其工作正常,则为MASTER路由器。

 

VRRP提供了三种认证方式:

1 无认证;

2 简单字符认证:不能超过8个字符;

3 MD5认证。

 

实验器材

 使用keepalive实现nginx反向代理高可用

lvs1 Centos7.3 172.18.55.74

lvs2 Centos7.3 172.18.55.75

web1 Centos6.8  172.18.55.61

web2 Centos7.3  172.18.55.71

 

实验步骤:

1 安装nginx反向代理服务

2 安装keepalive服务

 

实验过程:

1 安装nginx反向代理服务

为了简便,这里分别在web1和web2上使用yum源安装的方式

#yum install –y nginx

 

修改nginx的配置文件

# vim /etc/nginx/nginx.conf

增加服务器组

upstream websvrs {
         server 172.18.55.61:80;
         server 172.18.55.71:80;
         server 127.0.0.1:8080 backup; #sorry Server
}

增加sorry server配置

server {
         listen 8080;
         root /etc/nginx/html;
         index sorry.html;
         location / {
}
}

增加sorry server页面文件

vim /etc/nginx/html/sorry.html
 
<h1> Sorry !!! <h1>
 

2 安装keepalive服务

使用yum安装

# yum install –y keepalived

 

修改配置文件

# vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
 
global_defs {
   notification_email {                        
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_MASTER #备服务器LVS_BACKUP
   vrrp_mcast_group4 224.0.109.55 #组播地址,一个虚拟路由器组设置相同
}
 
vrrp_instance VI_1 {
    state MASTER #备服务器BACKUP
    interface ens33 #网卡名
    virtual_router_id 155 #虚拟路由器ID,主备设置相同
    priority 100 #优先级1-254,备服务器98
    advert_int 1 #网络通知时间间隔
    authentication {
        auth_type PASS #认证方式为密码
        auth_pass GOOD #密码为GOOD,最多8位
    }
    virtual_ipaddress {
        172.18.55.100/16 dev ens33 #指定虚拟IP地址和接口网卡
    }
    track_script {
        ngxstatus #调用nginx状态监测脚本
    }
    notify_backup "/etc/keepalived/notify.sh backup" #如果nginx的状态改为了BACKUP,则执行此脚本
}
 
vrrp_script ngxstatus { #nginx状态监测脚本
        script "killall -0 nginx && exit 0 || exit 1"
        interval 1
        weight -5
}

 

增加配置nginx重启脚本,省略了非必要步骤

 

vim /etc/ keepalived/notify.sh
 
#!/bin/bash
 
myservice='nginx.service'
 
case $1 in
 
backup)
        systemctl restart $myservice;;
esac

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

赞 (0)
realmasterrealmaster
上一篇 2017-05-15 21:45
下一篇 2017-05-15 22:06

相关推荐

  • 用户权限及正则表达式

    ln –s软连接原文件可以写绝对路径或相对于软连接文件的相对路径 ln 硬链接的原文件可以写绝对路径,相对于硬链接文件的相对路径或相对于当前路径的路径(因为硬链接主要是看节点号) etc/passwd格式: username:x:uid:gid:home:shell etc/shadow格式 username:password:password age:mi…

    Linux干货 2016-08-08
  • 20161019第5天作业

    1、只显示/root下的隐藏文件 ls -d '.'* 2、只显示/etc下的目录 ls -d */ ls -l |grep '^d' ls -F | grep "/$"  &nb…

    Linux干货 2016-10-20
  • 第七周 N21 总有刁民想害朕

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;        mke2fs -t ext4 /dev/sdb5 -b 2048 -m 2 -L "MYDATA&quot…

    Linux干货 2016-08-08
  • 磁盘分区及初步文件系统

    磁盘分区 磁盘分区有两种方式:     MBR, GPT      MBR: Master Boot Record,1982年,使用32位表示扇区数 ,分区不超过2T      分区时按柱面…

    Linux干货 2016-08-30
  • linux网络属性命令操作介绍(第十一天)

            linux网络属性常用命令有ifconfig\route\ip命令,centos7 的还是nmcli\nmtui。     网络属性的三大文件:修改DNS的文件/etc/resolv.conf  、修改网卡IP地址/etc/sysconfig/…

    Linux干货 2016-06-01
  • iptables 实现应用层过滤

        在linux环境中,工作于内核空间的netfilter和工作于用户空间的iptables共同组成了其功能强大且操作灵活的防火墙系统,对进出主机或内外网之间的流量基于IP地址、通信协议、端口以及连接状态等进行管控,然而,对于一些使用非固定端口或者通信协议的应用程序,默认是没有办法做限制的,比如聊天软件QQ、下载工具迅雷等,不过我们可…

    Linux干货 2015-07-10