广告
返回顶部
首页 > 资讯 > 精选 >如何使用Lvs+Nginx集群搭建高并发架构
  • 383
分享到

如何使用Lvs+Nginx集群搭建高并发架构

2023-06-22 05:06:30 383人浏览 安东尼
摘要

这篇文章主要介绍“如何使用Lvs+Nginx集群搭建高并发架构”,在日常操作中,相信很多人在如何使用Lvs+Nginx集群搭建高并发架构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Lvs+Nginx

这篇文章主要介绍“如何使用Lvs+Nginx集群搭建高并发架构”,在日常操作中,相信很多人在如何使用Lvs+Nginx集群搭建高并发架构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Lvs+Nginx集群搭建高并发架构”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

高并发站点不仅要考虑网站后端服务的稳定,还需要考虑服务能否接入巨大流量、承受巨大流量,如下图:

如何使用Lvs+Nginx集群搭建高并发架构

流量接入,可以采用Lvs+Nginx集群,这种方式能接入的QPS能高达数百万

通过Lvs实现Nginx集群,Nginx+Tomcat实现后端服务集群,完成了从接入层流量处理到后端服务集群高并发处理

1. Lvs介绍

LVS(linux Virtual Server),即Linux虚拟服务器。它用于多服务器负载均衡,工作在网络四层,可以实现高性能,高可用的服务器集群技术,它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。是基于tcp/IP做的路由和转发,稳定性和效率极高。

如何使用Lvs+Nginx集群搭建高并发架构

一个LVS集群往往包含以下角色:

DS:Director Server。虚拟服务,负责调度

RS:Real Server。后端真实的工作服务器。

VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址

DIP:Director Server IP,DS的IP

RIP:Real Server IP,后端服务器的IP地址

CIP:Client IP,访问客户端的IP地址

2. Lvs 负载均衡模式

lvs提供了3种负载均衡模式,每种负载均衡模式适用的场景有差异,我们来讲解一下这三种负载均衡模式。

2.1 NAT

用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的RS上去。RS需要设定网关为分发器的内网IP。用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器称为瓶颈。在NAT模式中,只需要分发器有公网IP即可,所以比较节省公网IP资源。

如何使用Lvs+Nginx集群搭建高并发架构

2.2 TUN

这种模式需要有一个公共的IP配置在分发器和所有的RS上,我们把它叫做VIP。客户端请求的目标IP为VIP,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为RS的IP,这样数据包就到了RS上。RS接收数据包后,会还原原始数据包,这样目标IP为VIP,因为所有RS上配置了这个VIP,所以他会认为是它自己。

如何使用Lvs+Nginx集群搭建高并发架构

2.3 DR模式

和IP Tunnel较为相似,不同的是,它会把数据包的Mac地址修改为RS的MAC地址。真实服务器将响应直接返回给客户。

这种方式没有IP隧道的开销,对集群中的真实服务期也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。

如何使用Lvs+Nginx集群搭建高并发架构

3. Lvs DR模式配置

综合上面分析,我们可以得出结论,DR模式性能效率比较高,安全性很高,因此一般公司都推荐使用DR模式。我们这里也配置DR模式实现Lvs+Nginx集群。

我们准备了3台机器:首先确保三台机器都安装了Nginx。

1:192.168.183.133(DS)192.168.183.150   对外提供服务2:192.168.183.134(RS)192.168.183.150   真实服务处理业务流程 3:192.168.183.135(RS)192.168.183.150   真实服务处理业务流程

VIP:192.168.183.150

3.1 Vip配置

关闭网络配置管理器(每台机器都要做)

systemctl stop NetworkManagersystemctl disable NetworkManager

配置虚拟IP(VIP 192.168.183.133中配置)

/etc/sysconfig/network-scripts创建文件ifcfg-ens33:1,内容如下:

BOOTPROTO=staticDEVICE=ens33:1ONBOOT=yesIPADDR=192.168.183.150NETMASK=255.255.255.0

重启网络服务:

service network restart

我们可以看到在原来的网卡上面添加了一个虚拟IP 150。

如何使用Lvs+Nginx集群搭建高并发架构

同时需要对192.168.183.134192.168.183.135构建虚拟机IP,但只是用于返回数据,而不能被用户访问到,这时候需要操作ifcfg-lo

IPADDR=127.0.0.1,这里127.0.0.1属于本地回环地址,不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。

NETMASK=255.255.255.255

192.168.183.134
ifcfg-lo拷贝一份ifcfg-lo:1,并修改ifcfg-lo:1配置,内容如下:

如何使用Lvs+Nginx集群搭建高并发架构

刷新lo:

ifup lo

查看IP可以发现lo下多了150ip。

如何使用Lvs+Nginx集群搭建高并发架构

192.168.100.133知行和上面相同的操作。

3.2 LVS集群管理工具安装

ipvsadm用于对lvs集群进行管理,需要手动安装。DS安装即可。

安装命令:

yum install ipvsadm

版本查看:

ipvsadm -Ln

效果如下:

如何使用Lvs+Nginx集群搭建高并发架构

3.3 地址解析协议

192.168.183.134192.168.183.135中操作。

arp_ignore和arp_announce参数都和ARP协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作。这两个参数很重要,特别是在LVS的DR场景下,它们的配置直接影响到DR转发是否正常。

arp-ignore:arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应(0~8,2-8用的很少)

配置文件:/etc/sysctl.conf,将如下文件拷贝进去:

net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_announce = 2

刷新配置:

sysctl -p

添加路由:此时如果无法识别route,需要安装相关工具yum install net-tools

route add -host 192.168.183.150 dev lo:1

添加了一个host地址,目的是用于接收数据报文,接收到了数据报文后会交给lo:1处理。(防止关机失效,需要将上述命令添加到/etc/rc.local中)

添加完host后,可以查看一下:route -n,能明显看到效果。

上述配置我们同样要在192.168.183.135中配置。

3.4 集群配置

ipvsadm命令讲解:

ipvsadm -A:用于创建集群
ipvsadm -E:用于修改集群
ipvsadm -D:用于删除集群
ipvsadm -C:用于清除集群数据
ipvsadm -R:用于重置集群配置规则
ipvsadm -S:用于保存修改的集群规则
ipvsadm -a:用于添加一个rs节点
ipvsadm -e:用于修改一个rs节点
ipvsadm -d:用于删除一个rs节点

添加集群TCP服务地址:(外部请求由该配置指定的VIP处理)

ipvsadm -A -t 192.168.183.150:80 -s rr

参数说明:

  • -A:添加集群配置

  • -t:TCP请求地址(VIP)

  • -s:负载均衡算法

负载均衡算法:

算法说明
rr轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差不多的情况
wrr加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
Wlc加权最小连接数调度,假设各台RS的全职依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS
Dh目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的RS
SH源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS
Lc最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.
Lblc基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

DS中配置rs(2个)节点:

ipvsadm -a -t 192.168.183.150:80 -r 192.168.183.134:80 -gipvsadm -a -t 192.168.183.150:80 -r 192.168.183.135:80 -g

参数说明:

  • -a:给集群添加一个节点

  • -t:指定VIP地址

  • -r:指定real server地址

  • -g:表示LVS的模式为dr模式

添加了节点后,我们通过ipvsadm -Ln查看,可以看到多了2个节点。

此时集群列表中客户端请求数据和TCP通信数据会持久化保存,为了更好看到效果,我们可以把时间设置成2秒保存,如下命令:

ipvsadm --set 2 2 2

此时我们请求Http://192.168.183.150/测试

可以发现请求会在两台Nginx轮询切换。

到此,关于“如何使用Lvs+Nginx集群搭建高并发架构”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 如何使用Lvs+Nginx集群搭建高并发架构

本文链接: https://www.lsjlt.com/news/302629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Lvs+Nginx集群搭建高并发架构
    这篇文章主要介绍“如何使用Lvs+Nginx集群搭建高并发架构”,在日常操作中,相信很多人在如何使用Lvs+Nginx集群搭建高并发架构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Lvs+Nginx...
    99+
    2023-06-22
  • 使用Lvs+Nginx集群搭建高并发架构的实现示例
    目录1. Lvs介绍2. Lvs 负载均衡模式2.1 NAT2.2 TUN2.3 DR模式3. Lvs DR模式配置3.1 Vip配置3.2 LVS集群管理工具安装3.3 地址解析协...
    99+
    2022-11-12
  • Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心
    今天就跟大家聊聊有关Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这一篇主要介绍一下如何搭建一个高可用的 Eu...
    99+
    2023-06-04
  • 如何使用go语言的容器来构建高效的缓存和并发处理系统?
    Go语言是一种专注于高并发和高性能的编程语言。它提供了丰富的容器库,这些容器库使得构建高效的缓存和并发处理系统变得非常容易。在本文中,我们将探讨如何使用Go语言的容器来构建高效的缓存和并发处理系统,并且将演示一些示例代码来帮助你更好地理解...
    99+
    2023-11-07
    缓存 并发 容器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作