使⽤Lvs+Nginx集搭建⾼并发架构的实现⽰例
⽬录
1. Lvs介绍
2. Lvs 负载均衡模式
2.1 NAT
2.2 TUN
2.3 DR模式
3. Lvs DR模式配置
3.1 Vip配置
3.2 LVS集管理⼯具安装
3.3 地址解析协议
3.4 集配置
⾼并发站点不仅要考虑⽹站后端服务的稳定,还需要考虑服务能否接⼊巨⼤流量、承受巨⼤流量,如下图:
1:流量接⼊,可以采⽤Lvs+Nginx集,这种⽅式能接⼊的QPS能⾼达数百万
2:通过Lvs实现Nginx集,Nginx+Tomcat实现后端服务集,完成了从接⼊层流量处理到后端服务集⾼并发处理
1. Lvs介绍
LVS(Linux Virtual Server),即Linux虚拟服务器。它⽤于多服务器的负载均衡,⼯作在⽹络四层,可以实现⾼性能,⾼可⽤的服务器集技术,它稳定可靠,即使在集的服务器中某台服务器⽆法正常⼯作,也不影响整体效果。是基于TCP/IP做的路由和转发,稳定性和效率极⾼。
⼀个LVS集往往包含以下⾓⾊:
1:DS:Director Server。虚拟服务,负责调度
2:RS:Real Server。后端真实的⼯作服务器。
3:VIP:向外部直接⾯向⽤户请求,作为⽤户请求的⽬标的IP地址
4:DIP:Director Server IP,DS的IP
5:RIP:Real Server IP,后端服务器的IP地址
6:CIP:Client IP,访问客户端的IP地址
2. Lvs 负载均衡模式
lvs提供了3种负载均衡模式,每种负载均衡模式适⽤的场景有差异,我们来讲解⼀下这三种负载均衡模式。
2.1 NAT
⽤户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的RS上去。RS需要设定⽹关为分发器的内⽹IP。⽤户请求的数据包和返回给⽤户的数据包全部经过分发器,所以分发器称为瓶颈。在NAT模式中,只需要分发器有公⽹IP即可,所以⽐较节省公⽹IP资源。
2.2 TUN
这种模式需要有⼀个公共的IP配置在分发器和所有的RS上,我们把它叫做VIP。客户端请求的⽬标IP为VIP,分发器接收到请求数据包后,会对数据包做⼀个加⼯,会把⽬标IP 改为RS的IP,这样数据包就到了RS上。RS接收数据包后,会还原原始数据包,这样⽬标IP为VIP,因为所有RS上配置了这个VIP,所以他会认为是它⾃⼰。
2.3 DR模式
和IP Tunnel较为相似,不同的是,它会把数据包的MAC地址修改为RS的MAC地址。真实服务器将响应直接返回给客户。
这种⽅式没有IP隧道的开销,对集中的真实服务期也没有必须⽀持IP隧道协议的要求,但是要求调度器与真实服务器都有⼀块⽹卡连在同⼀物理⽹段上。
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 NetworkManager
systemctl disable NetworkManager
配置虚拟IP(VIP 192.168.183.133中配置)
在/etc/sysconfig/network-scripts创建⽂件ifcfg-ens33:1,内容如下:
BOOTPROTO=static
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.183.150
NETMASK=255.255.255.0
重启⽹络服务:
service network restart
我们可以看到在原来的⽹卡上⾯添加了⼀个虚拟IP 150。
同时需要对192.168.183.134、192.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配置,内容如下:
刷新lo:
ifup lo
查看IP可以发现lo下多了150ip。
192.168.100.133知⾏和上⾯相同的操作。
3.2 LVS集管理⼯具安装
ipvsadm⽤于对lvs集进⾏管理,需要⼿动安装。DS安装即可。
安装命令:
yum install ipvsadm
版本查看:
ipvsadm -Ln
效果如下:
nginx和网关怎么配合使用3.3 地址解析协议
在192.168.183.134和192.168.183.135中操作。
arp_ignore和arp_announce参数都和ARP协议相关,主要⽤于控制系统返回arp响应和发送arp请求时的动作。这两个参数很重要,特别是在LVS的DR场景下,它们的配置直接影响到DR转发是否正常。
arp-ignore:arp_ignore参数的作⽤是控制系统在收到外部的arp请求时,是否要返回arp响应(0~8,2-8⽤的很少)
配置⽂件:/f,将如下⽂件拷贝进去:
f.all.arp_ignore = 1
f.default.arp_ignore = 1
f.lo.arp_ignore = 1
f.all.arp_announce = 2
f.default.arp_announce = 2
f.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 -g
ipvsadm -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个节点。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。