LVS负载均衡的三种模式

LVS(Linux Virtual Server)

LVS负载均衡服务器,使用网路下层协议,,有更高的效率,但后台服务器必须是镜像的。一般用LVS在前面接住流量,然后转发给nginx服务器,再由其转发给不同服务。

下面简单描述LVS的三种模式

D-NAT(网络地址转换)模式

LVS负载均衡的三种模式

基于网络层的路由跳转

过程:

  1. 客户端发给LVS服务器数据报;
  2. LVS把数据报的目的地址改成Real服务器的地址,源地址改为LVS的地址,转发给Real服务器;
  3. Real服务器处理完数据,返回数据报给LVS,
  4. LVS再把数据报源地址、目的地址改回,发送该客户端。

缺点:

  • 服务器的带宽成为瓶颈。
  • 来回都要修改地址,消耗算力。

由于互联网是非对称的。一般情况下请求数据小,响应数据大。如果响应的数据也要走lvs服务器,太占用带宽了。那么就需要一种技术可以使Real服务器直接给Client返回响应。

DR(直接路由)模式

LVS负载均衡的三种模式

基于链路层的转发,修改目的地的MAC地址。Real服务器与LVS服务器有着相同的地址VIP,但对外隐藏,只暴露了LVS服务器的VIP。

过程:

  1. 客户端给LVS服务器发送数据报。
  2. LVS服务器,使用Real服务器的MAC地址,给Real服务器转发帧。
  3. Real服务处理数据。
  4. Real服务器直接给Client发送数据报,源地址使用的是VIP。欺骗了客户端。

缺点:

  • 负载均衡服务器与真实服务器只能在同一局域网内。

实际生产中使用最多的就是DR模型


但是如果Real服务器与Lvs服务器不在同一局域网,就不能使用DR模型。还有一个模型可以解决这个问题

TUN(隧道)模式

LVS负载均衡的三种模式

使用隧道技术,给原始数据报外再包装一层数据报。

过程:

  1. 客户端给LVS服务器发送数据报。
  2. LVS再用一层数据报把原始的数据报包装起来发送给Real服务器,外层的数据报的源地址是DIP、目的地址是RIP。
  3. Real服务器把外层的数据报拆开,得到原始的数据报,处理数据。
  4. Real服务器把响应发回Cilet,源地址使用的是VIP。欺骗了客户端。

缺点:

  • 转发的效率没有DR模型高