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:性能之王,适合承载极高的并发连接(如直播、CDN边缘节点)。代价是网络拓扑必须二层互通,且无法修改端口。
LVS-NAT:配置简单、支持端口映射,但双向流量过调度器限制了扩展能力,适合后端服务器较少(<10台)、总流量<1Gbps的场景。
Nginx:功能最丰富,可根据URL、Header、Cookie进行复杂路由;支持健康检查、重试、缓存。四层(stream)性能中等,七层性能最低。适合作为API网关或微服务边缘入口。
生产架构最佳实践:LVS-DR + Nginx集群
由LVS-DR处理所有入向四层流量并均衡到多个Nginx,Nginx再完成七层业务逻辑。该架构兼具极致性能与丰富功能,是大型互联网的标准范式。
注:以上性能数据基于典型测试环境(Intel Xeon E5, 10GbE, 内核优化)。实际数值随硬件配置、网络延迟、报文大小而异,但相对差距保持稳定。