负载均衡-LVS转发模型详解

文中用到的缩写

CIP(Client IP):客户端IP
VIP(Virtual IP):负载均衡服务器IP,LVS的IP
RIP(Real IP):后端服务器IP,RS的IP
RS(Real Server):后端干活的服务器
GW(GateWay):网关
DIP(Destination IP):目的IP地址,在图中也可以代表某个可用IP,别纠结
SIP(Source IP):源IP地址
LVS(Linux Virtual Server):不知道这个是啥的不用往下看了奥!!!
LB(Load Balance):负载均衡服务器

以下的负载均衡服务器指的就是LVS!!

一. NAT(Network Address Translation)模型

负载均衡-LVS转发模型详解

1. 转发流程

  1. Client发出请求CIP -> VIP
  2. 请求包到达LVS,经NAT转换为CIP -> RIP
  3. RS收到请求包,RS回复LVS RIP -> CIP
  4. LVS修改数据包为 VIP -> CIP

2. 缺点

  1. LVS和RS需要在同一个VLAN,并将LVS的VIP配置为RS的网关
  • LVS必须通过NAT将RS回复的包转换为VIP -> CIP,否则回复包会被Client丢弃
  • LVS要配置为RS的网关,不然RS的回复包RIP -> CIP可能会从别的路由走掉
  1. 进出流量都要经过LVS,LVS会成为瓶颈

3. 优点

  1. NAT协议支持端口映射

二. Full NAT模型

负载均衡-LVS转发模型详解

1. 转发流程

  1. Client发出请求 CIP -> VIP
  2. LVS收到请求并修改数据包为 VIP -> RIP,然后转发给RS
  3. RS收到数据包,RS回复LVS RIP -> VIP
  4. LVS收到RS的回复,并将数据包转换为 VIP -> CIP,然后转发给Client

2. 缺点

  1. 进出流量都要通过LVS,LVS容易成为瓶颈(同NAT)
  2. RS不知道CIP
  • 数据包到达RS时,SIP已经被LVS改成了VIP,所以看不到
  • 可以通过将CIP放到TCP包的Option中传递给RS,RS需要安装toa模块来读Option中的CIP

3. 优点

  1. LVS和RS不必在同一LVAN,LVS不必是RS的网关

LVS将数据包的源/目的IP都改了,所以RS只要能路由到LVS就行

三. DR(Direct Routing)直接路由模型

负载均衡-LVS转发模型详解

1. 转发流程

  1. Client发送请求
  2. LVS收到数据包并将其MAC地址改成RS的MAC地址,并将修改后的数据包通过交换机发给RS
  3. RS收到数据包 CIP -> VIP @R-MAC,由于其内置了对外部可见的VIP,所以可以处理该请求
  4. 直接回复Client VIP -> CIP

2. 优点

  1. 性能高,入站请求通过LVS做负载均衡,回复报文直接回给Client(不通过LVS,LVS不会成为流量瓶颈)

3. 缺点

  1. LVS和RS要在同一VLAN

MAC地址用于节点间路由,所以LVS和RS必须在同一个二层网络中

  1. RS需要配置VIP,以及特殊处理ARP

RS要在lo上配置VIP,保证不被外界发现也不会主动通知给外界网络
隐藏VIP方法见实验:TODO

  1. 不支持端口映射

四. TUN(IP Tunneling)IP隧道模型

负载均衡-LVS转发模型详解

1. 转发流程

  1. Client发请求 CIP -> VIP
  2. LVS收到请求并将其封装一层 DIP -> RIP ( CIP -> VIP) ,然后转发给RS
  3. RS收到后通过IPIP内核模块解封装,取出 CIP -> VIP 的数据包
  4. 由于RS配置了VIP,同DR模型
  5. RS处理完后直接回复 VIP -> CIP

2. 缺点

  1. RS需要安装IPIP模块
  2. 请求包增加了一个IP头,多做了一次封包解包
  3. RS需要配置VIP

3. 优点

  1. 没有LVS的流量瓶颈问题
  2. 集群节点可以跨VLAN

五. ENAT(Enhance NAT)

也称为 DNAT/SNAT/三角模式
类似Full NAT的安装toa版本(RS可知CIP)

1. 基本流程

  1. Client发送请求
  2. LVS收到请求包,LVS修改数据包为 VIP -> RIP,并将CIP放入TCP Option中,然后转发给RS
  3. RS收到请求包,使用ctk模块读取TCP OPTION中的CIP
  4. ctk模块截获回复包 RIP -> VIP,并将其修改为 VIP -> CIP
  5. RS将修改后的回复包直接发给Client

2. 优点

  1. LVS和RS不必在同一VLAN
  2. RS出去的流量不走LVS

3. 缺点

需要在所有RS上安装ctk组件(类似Full NAT中的toa)