应用负载均衡之LVS(一):基本概念和三种模式(3)

在性能上,VS/DR和VS/TUN远高于VS/NAT,因为调度器只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移,极大程度上减轻了调度器的压力。VS/DR性能又稍高于VS/TUN,因为少了隧道的开销。但是,VS/DR和VS/TUN的主要区别是VS/TUN可以跨网络实现后端服务器负载均衡(也可以局域网内),而VS/DR只能和director在局域网内进行负载均衡。

3.VS/TUN和VS/DR模式中的ARP问题

在【【VS/TUN和VS/DR的arp问题】】中非常详细地分析了ARP、arp_ignore和arp_announce相关原理和设置方法。此处简单说明为何需要设置arp抑制以及设置arp抑制的方法。

当一个目标IP地址为VIP的数据包进入Director前端的路由器时,路由器会向局域网内发送ARP广播,以找出VIP地址的MAC地址在哪台主机上。

应用负载均衡之LVS(一):基本概念和三种模式

Director和各RS都配置了VIP。当路由器发送ARP广播后,Director和RS都会收到这个广播包,且都认为这个广播包找的就是自己,于是都回应给路由器,这样路由器上的ARP缓存表中的条目VIP<-->vip_MAC就不断被覆盖直到最后一个回应。这样一来,路由器将把客户端的数据包发送给最后一个回应的主机,这台主机的VIP可能是Director上的,也可能是某个RS上的。在一定时间内,路由器收到目标IP为VIP的数据包都会发送给该主机。但路由器会定时发送ARP广播包,这样一来ARP缓存表中的VIP对应的MAC地址可能会换成另一台主机。

因此,必须要保证路由器只保存Director上VIP对应的MAC地址,即只允许Director才对路由器的ARP广播进行回应。也就是说,所有RS上的VIP必须隐藏起来。

一般通过将Real Server上的VIP设置在lo接口的别名接口上(如lo:0),并设置arp_ignore=1和arp_announce=2的方式来隐藏RS上的VIP。至于VIP为何要设置在lo接口上以及为何要这样设置这两个arp参数,请参看【【VS/TUN和VS/DR的arp问题】】,内容非常详细。

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
或者

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
或者将arp参数设置到内核参数配置文件中以让其永久生效。

echo "net.ipv4.conf.all.arp_ignore=1" >>/etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce=2" >>/etc/sysctl.conf
sysctl -p
在网上几乎所有文章还设置了lo接口上的arp参数:

echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
但这没有任何意义,因为从lo接口不受arp参数的影响。

应该在配置VIP之前就设置arp参数,以防止配置VIP后、设置arp抑制之前被外界主机发现。

4.LVS负载均衡的调度算法

LVS的调度算法,详细内容见官方手册:

IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久)中,每次从WEB服务器上获取资源都需要建立一个TCP连接,同一用户的不同请求会被调度到不同的服务器上,所以这种细粒度的调度在一定程度上可以避免单个用户访问的突发性引起服务器间的负载不平衡。

LVS分为两种调度方式:静态调度和动态反馈调度。

静态调度方式是指不管RS的繁忙程度,根据调度算法计算后轮到谁就调度谁。例如两台realserver,一开始双方都在处理500个连接,下一个请求到来前,server1只断开了10个,而server2断开了490个,但是此时轮到了server1,就会调度server1而不管繁忙的程度。

动态调度方式是指根据RS的繁忙程度反馈,计算出下一个连接应该调度谁(动态反馈负载均衡算法考虑服务器的实时负载和响应情况,不断调整服务器间处理请求的比例,来避免有些服务器超载时依然收到大量请求,从而提高整个系统的吞吐率)。

在内核中的连接调度算法上,IPVS已实现了以下八种调度算法:默认的算法为wlc。

静态调度:

轮叫调度(Round-Robin Scheduling,rr)

加权轮叫调度(Weighted Round-Robin Scheduling,wrr),按照权重比例作为轮询标准

目标地址散列调度(Destination Hashing Scheduling,dh),目标地址哈希,对于同一目标IP的请求总是发往同一服务器

源地址散列调度(Source Hashing Scheduling,sh),源地址哈希,在一定时间内,只要是来自同一个客户端的请求,就发送至同一个realserver

动态反馈调度:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3a47b57423aa747e060d1433076e9592.html