LVS (Linux Virtual Server) 介绍

吴书松
吴书松
发布于 2026-05-29 / 11 阅读
0

LVS (Linux Virtual Server) 介绍

LVS(Linux Virtual Server)是集成在Linux内核中的四层负载均衡解决方案,由章文嵩博士于1998年发起。它工作于OSI模型的传输层(TCP/UDP),通过IPVS(IP Virtual Server)内核模块实现高效的请求分发,能够将大量并发连接智能地调度到后端真实服务器集群,构成高可用、高吞吐的虚拟服务器系统。

核心特点

  • 内核级处理:完全在内核空间完成数据包转发,无用户态上下文切换开销

  • 极高的吞吐能力:单节点可处理数十万级并发连接

  • 多种调度算法:支持轮询(RR)、加权轮询(WRR)、最少连接(LC)、源地址哈希(SH)等10+种算法

  • 三种工作模式:NAT、DR、TUN(隧道模式),适应不同网络环境

  • 透明性:客户端只感知虚拟IP(VIP),对后端服务器无侵入


LVS 两种工作模式与 Nginx 性能对比图表

1. LVS-NAT 模式

  • 原理:调度器重写请求报文的目标IP和端口(DNAT),转发给后端;后端响应必须经过调度器,调度器再重写源IP(SNAT)返回客户端。

  • 特点:支持端口映射;后端可与调度器跨网段;进出双向流量均过调度器,可能成为瓶颈。

2. LVS-DR 模式

  • 原理:调度器仅修改请求报文的目标MAC地址,通过二层广播转发;后端服务器在非ARP网卡(如lo)上配置相同的VIP,并抑制对VIP的ARP响应;响应直接由后端服务器返回客户端。

  • 特点:调度器只处理入向请求,性能极高;要求调度器与后端在同一物理网络;不支持端口映射。

3. Nginx(作为反向代理)

  • 原理:工作在七层(应用层),解析HTTP/HTTPS协议,建立与客户端的连接以及与后端的连接,可进行内容改写、缓存、SSL卸载等。

  • 特点:功能丰富、配置灵活;用户态进程处理,开销较大;适合七层分发场景,四层(stream模块)性能虽不错但仍低于LVS。


性能对比表(基于10Gbps网络,千字节级HTTP请求测试)

指标

LVS-DR

LVS-NAT

Nginx (四层)

Nginx (七层)

最大QPS

80万~100万+

3万~5万

8万~12万

2万~5万

并发连接数

100万+(内核友好)

10万~20万

5万~8万

5万~8万

P50延迟(ms)

< 1ms

2~5ms

1~3ms

3~10ms

CPU占用(满负荷)

极低(<10%)

高(70~90%)

中等(40~60%)

较高(60~80%)

内存占用

忽略不计(内核表项)

连接跟踪表占用中等

每个连接占用内存

每个连接占用内存更大

是否支持端口映射

❌ 不支持

✅ 支持

✅ 支持(proxy_bind)

✅ 支持

后端网络要求

二层直连

三层可达(可跨网段)

三层可达

三层可达

适用场景

大流量、高性能集群

小规模、端口转换需求

四层均衡+简单检查

内容分发、API网关、SSL卸载


数据解读与选型建议

  • LVS-DR:性能之王,适合承载极高的并发连接(如直播、CDN边缘节点)。代价是网络拓扑必须二层互通,且无法修改端口。

  • LVS-NAT:配置简单、支持端口映射,但双向流量过调度器限制了扩展能力,适合后端服务器较少(<10台)、总流量<1Gbps的场景。

  • Nginx:功能最丰富,可根据URL、Header、Cookie进行复杂路由;支持健康检查、重试、缓存。四层(stream)性能中等,七层性能最低。适合作为API网关或微服务边缘入口。

生产架构最佳实践:LVS-DR + Nginx集群

由LVS-DR处理所有入向四层流量并均衡到多个Nginx,Nginx再完成七层业务逻辑。该架构兼具极致性能与丰富功能,是大型互联网的标准范式。

:以上性能数据基于典型测试环境(Intel Xeon E5, 10GbE, 内核优化)。实际数值随硬件配置、网络延迟、报文大小而异,但相对差距保持稳定。