LVS(Linux Virtual Server) 是基于 Linux 内核的四层(TCP/UDP)高性能、高可用负载均衡群集技术,由章文嵩博士开发,是互联网架构中最核心的负载均衡方案之一。
一、LVS 群集三层架构
负载调度器(Director)
集群唯一入口,对外提供VIP(虚拟 IP)
运行 ip_vs 内核模块与 ipvsadm 管理工具
负责按算法分发请求到后端 RS
通常用 Keepalived 实现主备高可用(双机热备)
服务器池(Real Server, RS)
真正处理业务的后端服务器(Web/APP/DB 等)
拥有独立 RIP(真实 IP)
对客户端透明,可水平扩缩容
共享存储
保证所有 RS 数据一致(如 NFS、Ceph、分布式存储)
二、三种核心工作模式
- NAT 模式(VS/NAT)
原理:调度器修改目标 IP(VIP→RIP)转发请求;RS 响应先回调度器,再修改源 IP(RIP→VIP)发给客户端。
特点:
优点:RS 可用任意 OS,配置简单
缺点:双向流量都经 Director,易成瓶颈;RS 数量有限(10~20 台)
典型场景:小规模内网服务
- DR 模式(Direct Routing,直接路由)------ 生产最常用
原理:调度器仅修改目标 MAC 地址(Director MAC→RS MAC),IP 层不变(目标仍是 VIP)。RS 在 lo 口绑定 VIP,处理后直接回包客户端(绕过 Director)。
特点:
优点:性能最高(只处理入站)、吞吐量最大
缺点:Director 与 RS 必须同一物理网段;需配置 ARP 抑制
典型场景:Web/HTTP 大流量高并发服务
- TUN 模式(IP Tunneling,IP 隧道)
原理:调度器将 IP 包封装在新 IP 包中发给 RS;RS 解封装后处理,直接回包客户端。
特点:
优点:RS 可跨网段、跨机房
缺点:所有 RS 必须支持IPIP 隧道;有额外封装开销
典型场景:跨地域、异地多活集群
三、十大调度算法(ipvsadm -s)
静态算法(不考虑后端负载)
rr:轮询(Round Robin)
wrr:加权轮询(Weighted RR,按权重分配)
sh:源地址哈希(Source Hash,会话保持)
dh:目标地址哈希(Destination Hash)
动态算法(考虑后端连接数 / 负载)
lc:最少连接(Least Connections)
wlc:加权最少连接(默认)
sed:最短预期延迟(Shortest Expected Delay)
nq:永不排队(Never Queue)
lblc:基于局部的最少连接
lblcr:带复制的局部最少连接
四、LVS-DR 模式最简配置(CentOS/RHEL)
- Director 节点(调度器)
bash
运行
1. 安装工具
yum install -y ipvsadm keepalived
2. 配置VIP(如eth0:0)
ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 up
3. 添加LVS规则(DR模式,-g)
ipvsadm -A -t 192.168.1.100:80 -s wlc # 虚拟服务
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.21:80 -g # RS1 DR
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.22:80 -g # RS2 DR
4. 保存规则
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm
- Real Server 节点(所有 RS 执行)
bash
运行
1. lo口绑定VIP,抑制ARP
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
2. 永久配置(/etc/sysctl.conf)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
五、高可用(HA):LVS + Keepalived
Keepalived 作用:
实现 Director 主备自动切换(VRRP 协议)
自动 健康检查 RS(端口 / URL 探测)
故障 RS 自动剔除、恢复后自动加入
典型架构:双 Director(主 + 备)+ 多 RS,无单点故障。
六、LVS 特点总结
内核态:性能远高于 Nginx/HAProxy(七层)
四层转发:支持 TCP/UDP,不解析应用层内容
吞吐量高:DR 模式单机可扛10 万 + 并发
透明:客户端无感知,RS 可无缝扩缩容
成本低:纯软件、Linux 原生、免费开源
七、适用场景
高并发 Web 服务、电商、API 网关
游戏服务器、长连接服务
数据库读负载均衡(如 MySQL 只读实例)
云厂商四层 SLB 底层(如阿里云 SLB 基于 LVS)