lvs集群路由核心是基于ipvs模块在l3/l4层调度流量,非代理而是流量调度器;包含director、real server、vip三角色;支持nat/dr/tun/fullnat模式,其中dr性能最优;需keepalived保障高可用。

LVS 构建集群路由的核心在于利用 Linux 内核的 IPVS 模块,在网络层(L3/L4)完成请求分发,不解析应用层内容,因此性能远高于 Nginx 或 HAProxy。它不是“代理”,而是“流量调度器”——客户端看到的是同一个 VIP,但实际连接由后端 Real Server 直接响应(DR/TUN 模式)或经调度器双向转发(NAT/FullNAT 模式)。
LVS 集群路由的关键组成
一个可运行的 LVS 路由集群必须包含三类角色:
-
Director(调度器):运行 ipvsadm 工具,配置 VIP 和调度策略,是唯一对外暴露的入口;需开启内核路由转发(
net.ipv4.ip_forward=1)或禁用重定向(DR 模式下) - Real Server(真实服务器):提供业务服务(如 httpd、tomcat),不直接监听 VIP(DR/TUN 模式下仅绑定 VIP 到本地 lo 接口,且需抑制 ARP 响应)
- VIP(虚拟 IP):客户端访问的统一地址,必须在 Director 上配置为可用接口地址(如 eth0:0),并在 Real Server 上以“隐藏方式”绑定(如 lo:0 + /32 子网掩码)
选择适合场景的工作模式
模式决定数据包如何流转,直接影响部署约束和性能表现:
- NAT 模式:请求和响应都经过 Director;要求所有 RS 网关指向 DIP;支持跨网段,但吞吐受限于调度器带宽;配置最简单,适合测试或小规模环境
- DR 模式:请求经 Director 调度(改 MAC),响应由 RS 直接返回客户端(零拷贝);要求 Director 与所有 RS 同一广播域(二层互通);性能最优,延迟最低,是生产环境首选
- TUN 模式:通过 IP 隧道封装请求包,RS 解包后响应直回;支持跨子网甚至跨机房;需 RS 内核支持 IPIP 模块;适用于异地多活容灾场景
- FullNAT 模式:对源 IP 和目的 IP 同时做 NAT,解决复杂 NAT 环境下 RS 回包路由问题;性能略低于 DR,但网络适应性更强
DR 模式下的典型配置步骤
以 Web 服务为例,假设 VIP=192.168.100.200,Director IP=192.168.100.10,RS1=192.168.100.11,RS2=192.168.100.12:
- 在 Director 上:启用 VIP(
ip addr add 192.168.100.200/32 dev eth0),关闭 ICMP 重定向(sysctl -w net.ipv4.conf.all.send_redirects=0),加载 ip_vs 模块,用 ipvsadm 添加服务:ipvsadm -A -t 192.168.100.200:80 -s rripvsadm -a -t 192.168.100.200:80 -r 192.168.100.11:80 -gipvsadm -a -t 192.168.100.200:80 -r 192.168.100.12:80 -g - 在每台 RS 上:绑定 VIP 到 lo 接口(
ip addr add 192.168.100.200/32 dev lo),抑制 ARP 响应(echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore,echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce),确保 Web 服务监听 *:80 或 127.0.0.1:80
保障高可用与可观测性
单点 Director 是风险点,必须搭配 Keepalived 实现 VIP 自动漂移:
- Keepalived 通过 VRRP 协议选举主备,主节点持有 VIP 并运行 ipvsadm 规则;故障时 1~3 秒内完成切换
- 健康检查需自行补充:ipvsadm 不检测 RS 状态,建议用脚本定期 curl 测试后端端口,并触发
ipvsadm -d或-e动态增删节点 - 查看当前路由状态用
ipvsadm -ln,输出中Route字段为Route表示 DR,Masq表示 NAT,Tunnel表示 TUN











