Nginx教程系列五:Nginx+Keepalived搭建高可用主从架构

1. 概述

1.1 为什么要Nginx主从

先看下面一张图,这是普通的Nginx负载均衡实现
在这里插入图片描述
如图可见,所有的请求都由Nginx进行分发。当Nginx挂掉之后,也就意味着后面所有tomcat服务都无法请求。

如果能搭建一个备用Nginx,在其中1个Nginx挂掉之后,继续接收并分发请求,就能解决我们的问题了。

1.2 Nginx主从架构

在这里插入图片描述

1.3 环境准备

  • 需要2台Nginx服务器(这边IP分别为192.168.25.131、192.168.25.135)安装说明查看这里:Linux安装Nginx
  • 需要keepalived
  • 需要虚拟IP

2. 安装与配置Keepalived

以下步骤在2台Linux上都要执行

使用yum直接安装:

yum install keepalived -y

查看是否安装成功:

rpm -q -a keepalived

修改配置文件,路径: /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_DEVEL
}

vrrp_script chk_http_port {
   script "/usr/local/src/nginx_check.sh"
   interval 2
   weight 2
}

vrrp_instance VI_1 {
    state BACKUP		# 主服务器MASTER,从服务器BACKUP
    interface ens33		# 网卡名,通过ifconfig命令查看
    virtual_router_id 51  # 主、从服务器的virtual_router_id必须相同
    priority 90		  # 主、从服务器取不同的优先级,主机值较大,从机值较小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.25.50	# 虚拟IP地址
    }
    track_script {
        chk_http_port
    }
}

从服务器要修改2个地方:

state BACKUP
priority 90

/usr/local/src/ 目录下创建nginx_check.sh文件,内容如下:

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ]

                then

                        echo 'nginx server is died'

                        killall keepalived

fi

记得给shell文件执行权限:

chmod +x nginx_check.sh

脚本内部使用了killall命令,需要安装psmisc:

yum install psmisc

启动 keepalived 服务:

systemctl start keepalived

3. 验证keepalived

  • 给2台服务器分别启动Nginx、Keepalived
  • 分别打开Nginx日志
cd /usr/local/nginx/logs
tail -f access.log -n 200
  • 打开Keepalived配置的虚拟IP地址 http://192.168.25.50/,正常地打开了Nginx首页,证明虚拟IP有效果
    在这里插入图片描述

  • 多刷新几次页面,发现MASTER日志一直新增记录,而BACKUP的日志没有变化,说明会优先访问MASTER主机。
    在这里插入图片描述

  • 验证主服务器Nginx停止服务后,会不会切换到从服务器Nginx:

# 停止主服务器Nginx
nginx -s stop
# 查看nginx进程是否成功关闭
ps -ef | grep nginx
# 正常情况下,keepalived进程此时也是关闭的,因为我们写了nginx_check脚本
ps -ef | grep keepalived

这时候再访问 http://192.168.25.50/ 地址,发现从服务器的Nginx日志出现了访问记录,说明主从模式配置成功。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

°Fuhb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值