LVS工作原理

负载均衡的作用:

  1. 分担用户访问请求或数据流量
  2. 保持业务的连续性
  3. 应用web业务,以及数据库从库等

lvs工作原理:

lvs软件由工作在内核中的ipvs和工作在用户空间的ipvsadm组成。ipvs工作于netfilter的INPUT链上;ipvsadm用于在ipvs上定义集群服务、后端主机和调度算法。

当用户的请求到达本机时,首先经由PREROUTING链,到达PREROUTING链后进行路由判断,经路由判断后发现是送往本机的,将用户请求送往INPUT链接中,此时ipvs将检查INPUT链上的所有经过的报文,判断是不是请求的集群服务,如果请求的是集群服务,ipvs将“拦下”服务,经过调度算法挑选出一个事先定义好的主机,并将用户请求服务转发出去,经由网络将用户请求送往后端主机并为用户提供服务响应。

DR模式特点:

1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP。
2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)。
3、因DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS(Real Server真实服务器)节点和调度器LB只能在一个局域网LAN中(小缺点)。
4、需要注意RS节点的VIP的绑定(lo:vip/32,lo1:vip/32)和ARP抑制问题。
5、RS节点的默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。
6、由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求的报文的目的端口(和NAT要区别)。
7、当前,调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。
8、总的来说DR模式效率很高,但是配置也较麻烦,因此,访问量不是特别大的公司可以用haproxy/nginx取代之。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/nginx(LVS NAT模式)
9、直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。
RS节点的VIP的绑定方法:

静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址;
arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求;
内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIP的ARP广播请求;

NAT模式特点

1、NAT技术将请求的报文(通过DNAT方式改写)和响应的报文(通过SNAT方式改写),通过调度器地址重写然后在转发给内部的服务器,报文返回时在改写成原来的用户请求的地址。
2、只需要在调度器LB上配置WAN公网IP即可,调度器也要有私有LAN IP和内部RS节点通信。
3、每台内部RS节点的网关地址,必须要配成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回时仍然经过调度器LB。
4、由于请求与响应的数据报文都经过调度器LB,因此,网站访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点。
5、NAT模式支持对IP及端口的转换,即用户请求10.0.1.1:80,可以通过调度器转换到RS节点的10.0.1.2:8080(DR和TUN模式不具备的)。
6、所有NAT内部RS节点只需配置私有LAN IP即可。
7、由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4.ip_forward = 1,当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)。

TUN模式特点:(不常用)

1、负载均衡器通过把请求的报文通过IP隧道(ipip隧道)的方式(请求的报文不经过原目的地址的改写(包括MAC),而是直接封装成另外的IP报文)转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户。
2、由于真实服务器将响应处理后的报文直接返回给客户端用户,因此,最好RS有一个外网IP地址,这样效率才会更高。理论上:只要能出网即可,无需外网IP地址。
3、由于调度器LB只处理入站请求的报文。因此,此集群系统的吞吐量可以提高10倍以上,但隧道模式也会带来一定的系统开销。TUN模式适合LAN/WAN。
4、TUN模式的LAN环境转发不如DR模式效率高,而且还要考虑系统对IP隧道的支持问题。
5、所有的RS服务器都要绑定VIP,抑制ARP,配置复杂。
6、LAN环境一般多采用DR模式,WAN环境可以用TUN模式,但是当前在WAN环境下,请求转发更多的被haproxy/nginx/DNS调度等代理取代。因此,TUN模式在国内公司实际应用的已经很少。跨机房应用要么拉光纤成局域网,要么DNS调度,底层数据还得同步。
7、直接对外的访问业务,例如:web服务做RS节点,最好用公网IP地址。不直接对外的业务,例如:MySQL,存储系统RS节点,最好用内部IP地址

FULLNAT模式:(不常用)

客户端访问的数据包是CIP:VIP,lvs处理这个数据包,他不像nat似的只改一半,fullnat他会完全重写这个数据包LIP1:RIP1,然后转发给后端的RIP1,后端RS处理之后返回的数据包格式是RIP1:LIP1,然后发给LIP1的调度器,然后LIP1调度器再重写数据包格式为Vip:Cip,然后直接返回给客户端
Lip是一组ip中的一个,Lip相当于公园的口,公园的口有很多,是有很多组,
虽然转发效率较nat低10%,但是回包的路由是可以有很多,可以横向扩展。
vip所在的lvs就是入口,他只处理入站请求,然后挑选出站lvs和RS,出站的lvs只负责处理返回数据包,负责出站的lvs不止是一台,出站的lvs和入站的lvs他们共享一个内存级别的session hash表。他们调整的并发在30万-50万。入站的可能2-3台,出站的可能有5/60台,后端的rs就可能有几百台。

一句话总结特点:

NAT模式:入站DNAT,出站SNAT,入站出站都经过LVS,可以修改端口,私有网络。
DR模式:LVS默认方式。修改数据包的目的MAC地址,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN内使用。
TUN模式:不改变数据包内容,数据包外部封装一个IP头,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN/WAN使用。LVS和节点之间通过隧道通信。