LVS原理与配置全解析:四层负载均衡核心技术揭秘
一、LVS核心架构深度剖析
1. LVS的三大核心组件
LVS(Linux Virtual Server)的负载均衡能力由Linux内核中的三个核心模块协同实现:
-
IPVS(IP Virtual Server):
内核态的负载均衡引擎,负责流量分发和会话管理。相比用户态方案(如Nginx),IPVS直接在内核处理数据包,性能提升10倍以上。 -
Netfilter框架:
Linux内核的包过滤框架,LVS通过注册Netfilter钩子(HOOK)实现流量拦截和转发。 -
调度算法模块:
内置10余种调度策略,决定如何将请求分配给后端真实服务器(Real Server)。
2. 数据包转发全流程(以DR模式为例)
-
客户端发起请求
数据包目标地址为VIP(Virtual IP):目标IP=192.168.1.200
,目标MAC=LVS的MAC
-
LVS接收请求
- IPVS根据调度算法(如wrr)选择一台真实服务器(如RS1)
- 修改数据帧的目标MAC地址为RS1的MAC
- 源/目标IP地址保持不变
-
真实服务器处理请求
- RS1的网卡发现目标MAC是自己,接收数据包
- 由于VIP绑定在lo接口,内核认为该请求合法,交给应用处理
-
直接响应客户端
RS1构造响应包:源IP=VIP
,目标IP=客户端IP
,直接通过默认网关返回客户端
二、三种工作模式技术细节对比
维度 | NAT模式 | DR模式 | TUN模式 |
---|---|---|---|
数据包修改 | 修改目标IP和端口 | 仅修改目标MAC地址 | 封装为IP隧道包 |
响应路径 | 必须经过LVS | 直接返回客户端 | 直接返回客户端 |
服务器位置 | 可跨不同子网 | 必须同一局域网 | 可跨公网部署 |
性能损耗 | 较高(处理双向流量) | 最低(仅处理入站) | 中等(隧道封装开销) |
配置复杂度 | 低(需配置SNAT) | 中(需ARP抑制) | 高(需支持IP隧道) |
典型应用场景 | 小型私有云集群 | 电商大促、直播高并发 | 混合云、异地多活 |
三、DR模式超详细配置指南
1. 实验环境准备
-
网络拓扑
客户端 (192.168.1.100) || 目标VIP: 192.168.1.200↓ LVS服务器 (192.168.1.10)| |↓ ↓ RS1 (192.168.1.101) RS2 (192.168.1.102)
-
关键要求
- 所有RS必须与LVS在同一二层网络
- RS需绑定VIP到lo接口并抑制ARP响应
- 关闭所有节点的rp_filter:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter