LVS 介绍与选型指南

介绍 LVS/IPVS 内核四层负载均衡的架构、转发模式、调度算法、ipvsadm 用法与适用边界,并与 HAProxy、Nginx、Keepalived 组合做选型对比。

LVSLVS负载均衡2026/10/19

LVS 介绍与选型指南

一、信息基准

本文为认知篇(A1),纯依据官方公开资料溯源编写,不包含本地安装与实测内容。查询日期为 2026-10-19。

LVS(Linux Virtual Server)由两部分构成:其一是已合入 Linux 内核主线的 IPVS(IP Virtual Server)子系统,版本随内核发布、无独立版号;其二是用户态管理工具 ipvsadm,有独立版本序列。因此本文标题不带版本号,版本口径以「内核子系统 + ipvsadm 工具」双线描述。

1.1 版本依据表(2026-10-19 实查)

组件版本基准说明官方来源
IPVS 内核子系统随 Linux 内核发布,无独立版号当前 stable 线 7.2.11(2026-10-15),长期维护线 6.18.57、6.12.113 等kernel.org/releases.json
ipvsadm 工具1.31kernel.org utils 目录当前最新发布包kernel.org/pub/linux/utils/kernel/ipvsadm/
Keepalived(常搭配的高可用组件)v2.4.32026-07-20 发布,用于 VRRP 双机热备github.com/acassen/keepalived/releases.atom

1.2 官方来源清单

来源URL用途
LVS 项目官网https://www.linuxvirtualserver.org/项目总览、HOWTO 文档
Linux 内核官网https://www.kernel.org/内核版本与 IPVS 源码树
ipvsadm 官方发布目录https://www.kernel.org/pub/linux/utils/kernel/ipvsadm/ipvsadm 源码包与手册页
Keepalived 官网https://www.keepalived.org/高可用搭配组件资料
HAProxy 官网https://www.haproxy.org/选型对比数据
Nginx 官网https://nginx.org/选型对比数据

二、软件概述

LVS(Linux Virtual Server,Linux 虚拟服务器)是 1998 年 5 月由章文嵩博士发起的开源服务器集群项目,目标是用多台廉价的通用服务器以可伸缩的方式对外提供高可用、高性能的网络服务。项目核心成果 IPVS 代码自 Linux 2.4 内核起合入内核主线,成为内核原生支持的四层负载均衡子系统,二十余年来持续随内核演进。

按 2026-10-19 的官方实查口径,本文介绍的版本基准为:内核侧 IPVS 子系统随当前 stable 内核 7.2.x 提供;用户态管理工具为 ipvsadm 1.31。ipvsadm 是对内核 IPVS 规则进行增删查改的标准命令行界面,LVS 的部署与运维几乎都通过它(或解析同样规则的 Keepalived)完成。

LVS 在体系中的位置:它运行于负载均衡器(Director)的内核态,将发往虚拟 IP(VIP)的连接按调度算法分发给后端真实服务器(Real Server),对外表现为一个「虚拟服务器」。它不解析应用层内容,属于纯四层(传输层)负载均衡。

三、核心架构

3.1 三层体系结构

LVS 官方 HOWTO 描述的集群体系由三部分组成:

  1. 负载调度器(Load Balancer / Director):整个集群对外的唯一入口,持有虚拟 IP(VIP),运行 IPVS 内核模块完成报文分发;
  2. 服务器池(Server Pool):一组真实服务器(Real Server),实际处理请求,彼此提供相同服务;
  3. 后端共享存储:让服务器池中各节点访问一致的内容(如共享文件系统或数据库),保证任意节点返回相同结果。

3.2 IPVS 在内核中的实现

IPVS 代码位于内核树 net/netfilter/ipvs/ 目录,通过 Netfilter 框架在报文途经的钩子点上拦截发往 VIP 的连接,在连接级(而非报文级)做出调度决策:同一连接的后续报文始终送往首次选定的真实服务器,从而保证 TCP 状态一致。调度器维护一张连接哈希表,记录连接与真实服务器的绑定关系。

3.3 三种报文转发模式

模式原理特点
NAT(网络地址转换)改写目标地址后转发,响应报文再经调度器改写源地址返回后端可在任意网段;进出流量都经过调度器,调度器易成瓶颈
TUN(IP 隧道)在原 IP 报文外封装一层 IP 头送往后端,后端解封装后直接响应客户端后端可跨网段部署;响应不经过调度器,吞吐高;要求后端支持隧道协议
DR(直接路由)只改写目标 MAC 地址,将报文交给同网段后端,后端以 VIP 为源地址直接响应性能开销最小,是最常用的高性能模式;要求调度器与后端处于同一二层网络

3.4 调度算法

ipvsadm 手册页列出的调度算法共十种,分为静态(不考虑服务器实时负载)与动态(依据连接数等状态)两类:

  • 静态:rr(轮询)、wrr(加权轮询)、dh(目标地址散列)、sh(源地址散列)、sed(最短期望延迟)、nq(永不排队);
  • 动态:lc(最少连接)、wlc(加权最少连接,默认)、lblc(基于局部性的最少连接)、lblcr(带复制的基于局部性的最少连接)。

四、功能特性

  • 内核态四层负载均衡:在内核中完成报文转发,无用户态进程开销,单机可支撑海量并发连接;
  • 多种转发模式:NAT、TUN、DR 三种模式覆盖不同网络拓扑需求(见 3.3);
  • 十种调度算法:覆盖从简单轮询到基于局部性的动态调度(见 3.4);
  • 会话保持:通过 -p 选项开启持久化连接,将同一客户端在超时窗口内的多个连接固定到同一真实服务器;
  • 高可用组网:LVS 本身不含 VRRP 能力,标准做法是搭配 Keepalived,由后者以主备方式管理 VIP 并自动漂移,同时接管 IPVS 规则与健康检查;
  • 健康检查:IPVS 自身不探测后端,由 Keepalived 的 virtual_server/real_server 配置块(TCP 端口检查或 HTTP GET 检查)动态摘除故障节点;
  • 协议与地址族:支持 TCP、UDP 协议及 IPv4/IPv6(-t/-u/-f 与 -6 用法详见 ipvsadm 手册页);
  • SYN Proxy 防护:内核 IPVS 提供 --synproxy 能力,由调度器代替后端完成三次握手,缓解 SYN Flood 攻击对真实服务器的影响;
  • 连接统计可视:/proc/net/ip_vs 及 ipvsadm -L --stats/--rate 提供吞吐、连接数等计数。

五、快速上手

以下示例引自 ipvsadm 官方手册页(man ipvsadm)与 Keepalived 官方资料中的标准用法,仅作认知示意,不包含本地实测结果。

5.1 用 ipvsadm 建立 NAT 模式虚拟服务

# 打开内核转发(NAT 模式必需)
sysctl -w net.ipv4.ip_forward=1

# 创建一个对外的虚拟服务:VIP 的 80 端口,wlc 调度
ipvsadm -A -t 207.175.44.110:80 -s wlc

# 添加两台真实服务器,NAT 模式(-m)
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m

# 查看当前规则与统计
ipvsadm -L -n --stats

上述 VIP 与地址取自 ipvsadm 手册页示例;-A 增加虚拟服务、-a 增加真实服务器、-t 指定 TCP 服务、-s 指定调度算法、-m 指定 NAT 模式。

5.2 用 Keepalived 声明式管理 LVS

生产环境通常不用手工 ipvsadm 命令,而是由 Keepalived 的配置文件声明虚拟服务,Keepalived 启动后负责下发 IPVS 规则、执行健康检查并进行 VRRP 主备切换。来源:keepalived.conf 手册页(man keepalived.conf)。

virtual_server 207.175.44.110 80 {
    delay_loop      6
    lb_algo         wlc
    lb_kind         DR
    protocol        TCP

    real_server 192.168.10.1 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
    real_server 192.168.10.2 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }
}

5.3 官方文档入口

六、适用场景与限制

6.1 适用场景

  • 超高四层吞吐与并发连接:数据库、消息队列、DNS、游戏长连接等纯传输层服务的前置分发,内核态转发开销极小;
  • 大流量网站入口(DR/TUN 模式):响应流量绕过调度器直接回客户端,适合下载、视频等出入流量严重不对称的业务;
  • 与 Keepalived 组成主备入口:VIP 漂移 + 健康检查 + IPVS 规则托管的一体化方案,是自建高可用网关的经典组合;
  • 内核原生依赖场景:不希望在业务链路中引入额外用户态代理进程的环境。

6.2 限制

  • 不具备七层能力:不能依据 HTTP 路径、Host、Cookie 等内容做路由,也无法做 TLS 终止之外的七层改写,需要时须在其后串接 HAProxy/Nginx;
  • 配置与观测偏底层:ipvsadm 规则是内核态表项,排障依赖内核计数与日志,学习曲线比应用层代理陡;
  • 健康检查需外部组件:IPVS 自身不带后端探测,脱离 Keepalived/ldirectord 时需自行维护节点摘除;
  • DR 模式的网络约束:要求调度器与真实服务器同处一个二层网络,且后端需对 ARP 做特殊处理(抑制对 VIP 的 ARP 应答);
  • 规则不跨节点同步:主备调度器各自维护规则,依赖 Keepalived 在切换时重新下发,不宜频繁变更。

七、同类选型对比

按任务口径对比三个参照系:HAProxy、Nginx(负载均衡角色)、以及与 LVS 强绑定的 Keepalived 组合。下列数据均为 2026-10-19 联网实查。

7.1 量化对比表

维度LVS(IPVS + ipvsadm)HAProxyNginx(LB 角色)Keepalived(与 LVS 组合)
开源许可GPL-2.0(随内核)GPL-2.0(官网声明)BSD-2-ClauseGPL-2.0
GitHub stars官方未公布(IPVS 随内核树发布,ipvsadm 托管于 kernel.org,无独立 star 计数仓库)6,931(github.com/haproxy/haproxy 页面实查)31,912(nginx/nginx 为官方只读源码副本,star 数据仅供参考)4,726(github.com/acassen/keepalived 页面实查)
最近发版ipvsadm 1.31(kernel.org 官方目录);IPVS 随 stable 内核 7.2.11(2026-10-15)3.4.7(haproxy.org 下载页实查)stable 线 1.30.6;mainline 线 1.31.7(nginx.org 官方下载页实查)v2.4.3(2026-07-20,GitHub releases.atom 实查)
版本节奏随内核主线滚动演进;ipvsadm 独立工具更新缓慢(当前 1.31)每年推出一条新稳定分支,多分支并行维护stable/mainline 双线并行,约每数周发布补丁版本长期维持 2.x 序列,小步迭代
工作层次纯四层(内核态)四层 + 七层(用户态)四层 + 七层(用户态)高可用(VRRP)+ IPVS 托管
兼容矩阵Linux 内核原生,随发行版内核提供跨平台:Linux、BSD 等多平台构建跨平台:Linux、BSD、Windows 等多平台构建仅 Linux(依赖内核 IPVS 与 VRRP)

7.2 选型分析

  • LVS 的不可替代点在内核态四层性能与连接容量上限最高,且零额外进程;代价是没有七层能力、生态工具链较薄;
  • HAProxy 胜在七层精细调度(内容路由、健康检查内建、可观测性强),是业务级流量治理的首选;
  • Nginx 同时覆盖 Web 服务与负载均衡,许可宽松(BSD),部署面广,但七层高级能力部分集中在商业版;
  • Keepalived 与 LVS 是互补关系而非替代:它为 LVS 提供 VIP 高可用与配置托管,二者组合是自建四层高可用入口的事实标准。

选型建议一句话:追求极致四层吞吐、流量模型简单时选 LVS+Keepalived;需要七层内容路由、精细健康检查与灰度能力时选 HAProxy(或 Nginx),也可将 LVS 置于前端、HAProxy/Nginx 置于后端组成两层负载均衡架构。

八、参考链接

  1. LVS 项目官网:https://www.linuxvirtualserver.org/
  2. Linux 内核版本发布页(releases.json):https://www.kernel.org/releases.json
  3. ipvsadm 官方发布目录与手册:https://www.kernel.org/pub/linux/utils/kernel/ipvsadm/
  4. Keepalived 官网:https://www.keepalived.org/
  5. Keepalived 发布记录(releases.atom):https://github.com/acassen/keepalived/releases.atom
  6. HAProxy 官网下载页:https://www.haproxy.org/
  7. Nginx 官方下载页:https://nginx.org/en/download.html