使用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

相关推荐

  • 进程管理,计划任务(2)

    二、作业管理     Linux的作业控制         前台作业:通过终端启动,且启动后一直占据终端;         后台作业:可通过终端启动,但启动后即…

    Linux干货 2016-09-18
  • Shell脚本编程 流程控制—循环

    循环:重复执行所指定的代码片段,直到循环条件不满足,则退出循环 一、for循环     语法格式:     for 变量名 in 列表     do         循环体     done &nbs…

    Linux干货 2016-08-24
  • 正则表达式简述

    正则表达式简述 什么是正则表达式: 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 正则表达式分类: 标准正…

    Linux干货 2016-04-05
  • KeepAlived实现HAProxy双主并实现资源的动静分离

    KeepAlived实现HAProxy双主并实现资源的动静分离 前言 HAProxy介绍 实验拓扑 实验环境 实验步骤 配置后端httpd服务器 配置HAProxy实现backend负载均衡 测试动静分离效果 配置KeepAlived 测试KeepAlived 配置DNS DNS测试 最终测试 总结 前言 我们这次使用HAProxy作为负载均衡调度器来实现后…

    Linux干货 2016-04-16
  • Jumpserver 3.0 全新改版 更轻、更快、更便捷

               Jumpserver Wiki                       &…

    系统运维 2016-01-05
  • RAID各级别特性介绍

        RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks):基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。     RAID通常被用在服务器电脑上,使用完全相…

    Linux干货 2016-06-22