负载均衡-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)模型
1. 转发流程
- Client发出请求
CIP -> VIP
- 请求包到达LVS,经NAT转换为
CIP -> RIP
- RS收到请求包,RS回复LVS
RIP -> CIP
- LVS修改数据包为
VIP -> CIP
2. 缺点
- LVS和RS需要在同一个VLAN,并将LVS的VIP配置为RS的网关
- LVS必须通过NAT将RS回复的包转换为
VIP -> CIP
,否则回复包会被Client丢弃- LVS要配置为RS的网关,不然RS的回复包
RIP -> CIP
可能会从别的路由走掉
- 进出流量都要经过LVS,LVS会成为瓶颈
3. 优点
- NAT协议支持端口映射
二. Full NAT模型
1. 转发流程
- Client发出请求
CIP -> VIP
- LVS收到请求并修改数据包为
VIP -> RIP
,然后转发给RS - RS收到数据包,RS回复LVS
RIP -> VIP
- LVS收到RS的回复,并将数据包转换为
VIP -> CIP
,然后转发给Client
2. 缺点
- 进出流量都要通过LVS,LVS容易成为瓶颈(同NAT)
- RS不知道CIP
- 数据包到达RS时,SIP已经被LVS改成了VIP,所以看不到
- 可以通过将CIP放到TCP包的Option中传递给RS,RS需要安装toa模块来读Option中的CIP
3. 优点
- LVS和RS不必在同一LVAN,LVS不必是RS的网关
LVS将数据包的源/目的IP都改了,所以RS只要能路由到LVS就行
三. DR(Direct Routing)直接路由模型
1. 转发流程
- Client发送请求
- LVS收到数据包并将其MAC地址改成RS的MAC地址,并将修改后的数据包通过交换机发给RS
- RS收到数据包
CIP -> VIP @R-MAC
,由于其内置了对外部可见的VIP,所以可以处理该请求 - 直接回复Client
VIP -> CIP
2. 优点
- 性能高,入站请求通过LVS做负载均衡,回复报文直接回给Client(不通过LVS,LVS不会成为流量瓶颈)
3. 缺点
- LVS和RS要在同一VLAN
MAC地址用于节点间路由,所以LVS和RS必须在同一个二层网络中
- RS需要配置VIP,以及特殊处理ARP
RS要在lo上配置VIP,保证不被外界发现也不会主动通知给外界网络
隐藏VIP方法见实验:TODO
- 不支持端口映射
四. TUN(IP Tunneling)IP隧道模型
1. 转发流程
- Client发请求
CIP -> VIP
- LVS收到请求并将其封装一层
DIP -> RIP ( CIP -> VIP)
,然后转发给RS - RS收到后通过IPIP内核模块解封装,取出
CIP -> VIP
的数据包 - 由于RS配置了VIP,同DR模型
- RS处理完后直接回复
VIP -> CIP
2. 缺点
- RS需要安装IPIP模块
- 请求包增加了一个IP头,多做了一次封包解包
- RS需要配置VIP
3. 优点
- 没有LVS的流量瓶颈问题
- 集群节点可以跨VLAN
五. ENAT(Enhance NAT)
也称为 DNAT/SNAT/三角模式
类似Full NAT的安装toa版本(RS可知CIP)
1. 基本流程
- Client发送请求
- LVS收到请求包,LVS修改数据包为
VIP -> RIP
,并将CIP放入TCP Option中,然后转发给RS - RS收到请求包,使用ctk模块读取TCP OPTION中的CIP
- ctk模块截获回复包
RIP -> VIP
,并将其修改为VIP -> CIP
- RS将修改后的回复包直接发给Client
2. 优点
- LVS和RS不必在同一VLAN
- RS出去的流量不走LVS
3. 缺点
需要在所有RS上安装ctk组件(类似Full NAT中的toa)