LVS — Linux Virtual Server

LVS(Linux Virtual Server,Linux 虚拟服务器)是 Linux 内核层面的四层负载均衡方案,由章文嵩博士在 1998 年发起。它工作在内核态,性能直追硬件 F5(数十万元级别),是开源四层负载均衡的”王者”。

架构组成

LVS 由两部分构成:

ipvsadm(用户态,配置规则)
    ↓ 写入
ipvs(内核态,执行转发)
    ↓ 工作在 Netfilter 框架
数据包转发
  • ipvs(内核模块):工作在内核 Netfilter 框架的 INPUT 链上,负责实际的数据包转发
  • ipvsadm(命令行工具):管理 ipvs 规则,仅在添加规则时使用,转发过程完全不依赖它

四种工作模式

模式请求路径响应路径适用场景
DR(Direct Routing)走 LVS直回客户端生产首选,同局域网
NAT走 LVS走 LVS需要端口映射
TUN(IP Tunneling)IP 隧道可直回跨机房/跨网段
FullNAT全地址转换走 LVS云环境

DR 模式详解

为什么这么快

  1. 工作在内核态,无需用户态/内核态上下文切换(而 Nginx/Haproxy 需要)
  2. 请求走 LVS,响应直接由 Real Server 返回客户端,不走 LVS

核心术语

术语含义配置位置
CIP客户端 IP客户端
VIP虚拟 IP(对外入口)LVS: 物理网卡 / RS: lo 网卡
DIPLVS 与 RS 通信的 IPLVS 物理网卡
RIPReal Server 真实 IPRS 物理网卡

数据包流程

1. 客户端发包:CIP → VIP(到达 LVS)
2. LVS 调度算法选 RS → 改目标 MAC 为 RS 的 MAC(不改 IP,不改端口)
3. RS 收到包 → lo 网卡上的 VIP 识别 → 处理请求
4. RS 直接回复:RIP → CIP(完全不走 LVS)

关键限制

  • LVS 与所有 Real Server 必须在同一个二层网络(同一局域网)
  • RS 上需配置:VIP 在 lo 网卡 + arp_ignore=1 + arp_announce=2(抑制 ARP 响应,防 VIP 冲突)

调度算法

静态算法

  • rr(Round Robin):轮询
  • wrr(Weighted RR):加权轮询
  • dh(Destination Hashing):目标地址哈希
  • sh(Source Hashing):源地址哈希

动态算法

  • lc(Least Connections):最少连接
  • wlc(Weighted LC):加权最少连接(默认
  • lblc(Locality-Based LC):基于本地的最少连接

典型部署架构

用户 → LVS(四层,VIP)→ Nginx/Haproxy(七层)→ Web 服务器集群
                ↓(Keepalived 高可用)
          备 LVS 节点

LVS 也直接代理数据库集群(需先做好主从同步):写操作 → LVS 写地址 → 主库;读操作 → LVS 读地址 → 从库。

负载均衡选型对比

方案层级性能特点
LVS四层⭐⭐⭐内核态,性能堪比 F5
Nginx四/七层⭐⭐七层功能最强
Haproxy四/七层⭐⭐ACL 灵活,健康检查细致
F5四/七层⭐⭐⭐硬件,价格极高

相关页面