LVS负载均衡三种模型(NAT、DR、TUN)推导

什么是负载均衡

Load balancing,即负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

为什么需要负载均衡

简单点说就是现在用户的访问量过大,对于单机的计算机资源请求过多,导致负载过高,所以需要负载均衡技术。

简单的负载均衡模型

最为简单的负载均衡模型就是客户端访问负载均衡服务器,然后由该服务器转发给真正的服务器。如下图所示:
LVS负载均衡三种模型(NAT、DR、TUN)推导_第1张图片
这里的负载均衡服务器默认是指LVS,所以是四层负载均衡服务器,这里对于为什么是四层做一个简单的解释(个人理解),首先该负载均衡服务器没有实现TCP握手功能但是具有路由转发功能,那么一定至少是工作在网络层的,也就是前三层,对于负载均衡服务器它的主要功能是均衡负载,那么如何判断客户端的请求过载呢?这里就设计到第四层传输层,它需要知道有客户端与服务端的连接数量,来判断是否需要进行均衡负载,那么这就需要负载均衡服务器具有"窥视"传输层的端口的功能,也就是得看得到客户端和服务端的连接,所以说是四层服务器。

LVS模型中的常见专用术语:

1、 DS:Director Server。指的是前端负载均衡器节点,也即是四层负载均衡服务器(LVS)。
2、 RS:Real Server。后端真实的工作服务器。
3、 VIP:Virtual IP,向外部直接面向用户请求,作为用户请求的目标的IP地址。
4、 DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
5、 RIP:Real Server IP,后端服务器的IP地址。
6、 CIP:Client IP,访问客户端的IP地址

NAT模型推导(Network Address Translation,网络地址转换)

假设现在有个客户访问www.baidu.com,在回车后该域名会解析为相应的ip地址,但是百度有很多服务器,解析后的ip地址并不是真正的服务器的地址,而是类似于这里的负载均衡服务器的ip,这个ip是固定的,无论真正的服务器怎么变化,对于客户来说发送的数据包只是一个源地址为CIP,目的地址为www.baidu.com域名解析后的虚拟地址VIP,如下图所示:
LVS负载均衡三种模型(NAT、DR、TUN)推导_第2张图片

LVS的NAT模型的内容总结:
  • 请求报文时,报文必须经过director(负债均衡服务器),才能达到负载均衡的效果。同时在director上修改目标ip为新的服务端地址(RIP)实现转发,也就是进入负载均衡器时做DNAT。响应报文时,在director上修改源ip实现转发,也就是响应出负载均衡器时做SNAT。
  • Director的DIP和各real server的RIP必须在同一个物理网段中,并且RIP的网关要指向DIP。
  • NAT模型中一般VIP是公网地址,DIP和RIP一般是私网地址。使用NAT模型主要的目的是隐藏服务器ip。
LVS的NAT模型的弊端:

在我们输入一个网站的时候,浏览器也就是服务端会给我们返回一个远远大于客户端发送的消息的数据,简单点说就是在同一条道路上,奔向服务端的是卡丁车,而返回给客户端的却是擎天柱样的重卡。这样客户端的数据流通就是不对称的,在高并发的情形下,对负载均衡服务器的算力和带宽都是极大的考验,并且容易成为瓶颈。所以在负载均衡服务器中不使用该模式。

DR模型(直接路由模式)

我们回顾NAT模式的弊端在于服务端返回的数据远远大于客户端发送的数据这样对于负载均衡服务器有较大的压力,我们注意到,在服务端以及记录了RIP2->CIP的连接了,为什么不直接将返回的数据发送给客户端呢?这样就不用通过负载均衡服务器了,现在我们假设该想法可以实现,那么该模型被修改为如下图所示:
LVS负载均衡三种模型(NAT、DR、TUN)推导_第3张图片
这样我们就得到了LVS的直接路由模式(DR)

LVS的DR模式内容总结如下:
  • client发送请求到vip,lvs会对vip响应arp,因此client将请求发到LVS。
  • LVS机器收到发往vip的报文后,根据目的IP和目的port匹配ipvs规则,将报文目的mac改为real server的mac,同时将源mac改为LVS的mac后,发送到real server。
  • real server收到之后,mac/IP都是本机的,就将报文交由系统处理。
  • 响应报文因real server收到的报文源IP就是client IP,real server直接将请求回给client。如果client和real server是同一个网段,响应报文直接通过二层透传发送给client,报文目的mac即为client mac;如果client和real server不是同一个网段,响应报文先发送到gateway,再走三层转发返回client。
LVS的DR模式的局限性:

需要负载均衡服务器与服务端在同一个局域网中。

LVS的TUN模式(tunneling)

在LVS的DR模式中,我们需要负载均衡服务器与服务端在同一个局域网中,从而实现了MAC地址欺骗,而我们现在考虑负载均衡服务器与服务端不在一个局域网的场景(该场景非常常见),我们同样采用DR的思路,将客户端发送过来的数据包地址进行修改,但是DR模式知识在数据链路层进行了修改,无法实现网络的跳转,所以只要我们实现网络层的地址修改(欺骗),那么就无需让负载均衡服务器和服务端在同一个局域网了。也就是说我们在CIP->VIP的外面包裹一层数据包(DIP->RIP2),那么这样服务端既可以接受该数据包,同时也实现负载均衡服务器和服务端不在一个局域网的场景。
LVS负载均衡三种模型(NAT、DR、TUN)推导_第4张图片

LVS的TUN模式内容总结:
  • 客户请求数据包,目标地址VIP发送到负载均衡服务器上。
  • 负载均衡服务器接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。
  • RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有负载均衡服务器和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。
  • 响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址。
LVS的TUN模式的缺点:

这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议

以上就是LVS负载均衡三种模型的推导过程。

你可能感兴趣的:(lvs,负载均衡)