使用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反向代理服务

为了简便,这里分别在web1web2上使用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
下一篇 2017-05-15

相关推荐

  • 浅谈Linux中的用户和组

    又到了周六,日常写博客的日子。 上周模模糊糊的写了第一篇博客,大概知道了怎么写,但是这周就比以往不同了,脑子中已经有了思路,那写起来就会更加详细易懂。 这周学了很多知识点,但是我想对Linux 用户和组进行详细的描述。 一、用户(Username/UID) 用户分为两种:管理员和普通用户     管理员root  UI…

    2017-07-22
  • keepalived+varnish+haproxy+LNAMP

      nfs: 192.168.1.40 rp1: 192.168.1.41 rp2: 192.168.1.42 mariadb: 192.168.1.43 web1: 192.168.1.110 web2: 192.168.1.111 app1: 192.168.1.112 app2: 192.168.1.113 实验效果:用keepalived高…

    2018-02-18
  • N25_第二周博客作业:

    N25_第二周博客作业: 1、linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 Linux上常见的文件管理类命令有mkdir、touch、cp、mv、rm、stat。 mkdir:创建新目录 SYNOPSIS   mkdir [OPTION]… DIRECTORY… 常用: 1、直接建目录 [root@…

    Linux干货 2016-12-09
  • IP地址之IPv4

    一、概述   IP地址有IPv4和IPv6两个版本,目前我们通常所说的IP地址是指IPv4。   IP地址由32位的二进制数组合而成,为了方便人类记忆,将二进制转换成4个十进制的数值。   在这32位数据中分为网络号与主机号两个部分。 二、IP的分级   IP网段分为五个等级,其定义如下:   A类:规定前面…

    Linux干货 2016-02-14
  • 马哥教育网络班21期-第十周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)  a,post:加电自检,通电搜索并检查物理设备的状态  b,bootsequeence(BIOS):选择启动顺序  c,bootloader(MBR):加载主引导程序 bootloader,硬盘分区表到内存  d,加载内核kernel &nb…

    Linux干货 2016-10-24
  • 22期第六周课堂作业

    1.vim编辑器     文本编辑器:         文本:纯文本,ASCII text;Unicode;     文本编辑种类:         行编辑器:sed         全屏编辑器:na…

    Linux干货 2016-09-26