LVS负载均衡的三种模式
LVS(Linux Virtual Server)
LVS负载均衡服务器,使用网路下层协议,,有更高的效率,但后台服务器必须是镜像的。一般用LVS在前面接住流量,然后转发给nginx服务器,再由其转发给不同服务。
下面简单描述LVS的三种模式
D-NAT(网络地址转换)模式
基于网络层的路由跳转
过程:
- 客户端发给LVS服务器数据报;
- LVS把数据报的目的地址改成Real服务器的地址,源地址改为LVS的地址,转发给Real服务器;
- Real服务器处理完数据,返回数据报给LVS,
- LVS再把数据报源地址、目的地址改回,发送该客户端。
缺点:
- 服务器的带宽成为瓶颈。
- 来回都要修改地址,消耗算力。
由于互联网是非对称的。一般情况下请求数据小,响应数据大。如果响应的数据也要走lvs服务器,太占用带宽了。那么就需要一种技术可以使Real服务器直接给Client返回响应。
DR(直接路由)模式
基于链路层的转发,修改目的地的MAC地址。Real服务器与LVS服务器有着相同的地址VIP,但对外隐藏,只暴露了LVS服务器的VIP。
过程:
- 客户端给LVS服务器发送数据报。
- LVS服务器,使用Real服务器的MAC地址,给Real服务器转发帧。
- Real服务处理数据。
- Real服务器直接给Client发送数据报,源地址使用的是VIP。欺骗了客户端。
缺点:
- 负载均衡服务器与真实服务器只能在同一局域网内。
实际生产中使用最多的就是DR模型
但是如果Real服务器与Lvs服务器不在同一局域网,就不能使用DR模型。还有一个模型可以解决这个问题
TUN(隧道)模式
使用隧道技术,给原始数据报外再包装一层数据报。
过程:
- 客户端给LVS服务器发送数据报。
- LVS再用一层数据报把原始的数据报包装起来发送给Real服务器,外层的数据报的源地址是DIP、目的地址是RIP。
- Real服务器把外层的数据报拆开,得到原始的数据报,处理数据。
- Real服务器把响应发回Cilet,源地址使用的是VIP。欺骗了客户端。
缺点:
- 转发的效率没有DR模型高