Nginx负载均衡配置+keepalived高可用

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Nginx负载均衡配置+keepalived高可用

1.什么是负载均衡?
随着应用各个核心模块业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
2.负载均衡的种类
①一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的
②一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略
以上内容摘自:https://www.cnblogs.com/wang-meng/p/5861174.html
3.虚拟机准备工作,三台安装了nginx服务器的机器
image
nginx安装过程请参考:https://yq.aliyun.com/articles/655855
4.配置Nginx转发条件
image
配置nginx.conf

该文件中一些节点的作用:
worker_processes:工作进程个数,可配置多个
worker_connections:单个进程最大连接数
server:每一个server相当于一个代理服务器
lister:监听端口,默认80
server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
proxy_pass:请求转向自定义的服务器列表
upstream name{ }:服务器集群名称

image
重启nginx服务
image
5.安装并启动Tomcat
参考链接:https://yq.aliyun.com/articles/655542
6.修改Tomcat的index.jsp文件
为了区分是哪个IP下的Tomcat,修改下index.jsp的内容,显示对应的IP地址
image
image
7.浏览器访问http://192.168.0.115,展示页面为116的Tomcat
image
8.设置权重,重新访问http://192.168.0.115,用115做服务器负载均衡到116和117
image
image
image
9.搭建Keepalived,需要依赖openssl
查看是否安装openssl

rpm -qa|grep openssl

image
openssl已安装
如果机器115出现故障了呢? 那么怎么使用116上的Nginx进行转发呢? 怎么设置主机和备机呢? 如果主机死了怎么进行故障移除呢? 如果主机从不可用到可用状态又怎么进行恢复添加呢? 这些功能都是可以通过Keepalived来进行设置的.
Keepalived
(1)Keepalived高可用软件

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual  Router  Redundancy Protocol (虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由的单点故障问题的,它能保证当个别节点宕机时,整个网络可以不间断地运行。所以,keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能。

(2)Keepalived高可用故障切换转移原理

Keepalived高可用服务对之间的故障切换转移,是通过VRRP来实现的。在keepalived服务工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用来告诉备Backup节点自己还活着。当主节点发生故障时,就无法发送心跳的消息了,备节点也因此无法继续检测到来自主节点的心跳了。于是就会调用自身的接管程序,接管主节点的IP资源和服务。当主节点恢复时,备节点又会释放主节点故障时自身接管的IP资源和服务,恢复到原来的备用角色。

①keepalived官网:http://www.keepalived.org/
image
②下载keepalived最新版V2.0.9

wget http://www.keepalived.org/software/keepalived-2.0.9.tar.gz

image
③解压keepalived-2.0.9.tar.gz

tar -xzvf ./keepalived-2.0.9.tar.gz

image
④执行./configure

cd /usr/local/keepalived-2.0.9
./configure

image
说明缺少依赖包libnl、libnl-devel

yum -y install  libnl libnl-devel

image
重新执行./configure
image
⑤开始编译和安装

make && make install

image
⑥keepalived安装后默认不会注册为系统服务,需要手动添加系统服务脚本

  • keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
cp /usr/local/keepalived-2.0.9/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived
  • 将keepalived主程序加入到环境变量(安装目录下)
cp /usr/local/keepalived-2.0.9/keepalived/keepalived /usr/sbin/
  • keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
cp /usr/local/keepalived-2.0.9/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived
  • 将配置文件放到默认路径下
mkdir /etc/keepalived
cp /usr/local/keepalived-2.0.9/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
  • 设置为开机启动
chkconfig keepalived on

image

  • 启动keepalived服务
service keepalived start

image
192.168.0.115环境搭建完成,116按同样的环境搭建

  • 检查keepalived是否启动成功
ip add show eth0

eth0是网卡名称,通过ifconfig查看
image
image
⑦192.168.0.115做主机,192.168.0.116做备机,备机需要修改keepalived.conf
主机 (主节点):
image
image
image
备机 (从节点):
image
image
image
现在主节点和从节点都会生成VIP,这种现象叫做“脑裂”
脑裂(split-brain) : 指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。对于无状态服务的HA,无所谓脑裂不脑裂;但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂
思考:正常情况下keepalived的VIP应该生成在主节点,从节点在检测到主节点正常运行的时候是不生成VIP的,但是现在从节点生成了VIP,有可能主从节点间的通信异常了。主从节点通信是通过VRRP广播实现的,首先检查从节点是否可以接收到VRRP广播

tcpdump -i eth0|grep VRRP

image
很明显从节点已经接收到VRRP广播,应该是被过滤掉了,有这功能的就只有防火墙了,查看防火墙过滤规则

vim /etc/sysconfig/iptables

image
添加过滤规则

#允许组播地址通信
-A INPUT -s 192.168.0.0/24 -d 224.0.0.18 -j ACCEPT
#允许VRRP(虚拟路由器冗余协)通信
-A INPUT -s 192.168.0.0/24 -p vrrp -j ACCEPT

image
重启防火墙

service iptables reload

image
查看是否生成VIP
image
已经成功了
⑧主节点的keepalived服务停掉,观察从节点是否可以生成VIP
主节点:
image
从节点:
image
⑨主节点启动keepalived服务后,观察是否出现“脑裂现象”
主节点:
image
从节点:
image
访问tomcat页面不受任何影响,说明故障移除是OK的
image
image
10.因为我们是用nginx做负载均衡分发请求数据包的,如果主节点keepalived服务正常运行,但是nginx服务出现故障,就会出现负载均衡服务失灵的问题,导致请求无法访问到116或117的应用服务器上,所以我们要检测nginx服务是否正常运行,如果出现故障,则立即停掉keepalived服务,这样就可以自动切换到从节点上
通过检测80端口是否开启来判定nginx的运行情况,2秒钟检测一次,脚本如下

#!/bin/bash
while true
do
if [ $(netstat -tlnp|grep nginx|wc -l) -ne 1 ]
then
    /etc/init.d/keepalived stop
fi
sleep 2
done

image
直接执行该脚本,是一个死循环,如果服务正常(netstat -tlnp|grep nginx|wc -l)=1,脚本里判断如果不等于1,就停掉keepalived服务,sleep 2,2秒执行一次
结束

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
153 7
|
2月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
160 61
|
10天前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
48 9
|
21天前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
169 4
|
27天前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
68 5
|
2月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
84 3
|
2月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
106 3
|
2月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
175 3
|
2月前
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
455 1