跳到主要内容
Linux Virtual Server (LVS) 负载均衡基础与实战部署 | 极客日志
Shell / Bash 算法
Linux Virtual Server (LVS) 负载均衡基础与实战部署 Linux Virtual Server (LVS) 是 Linux 内核层实现的高性能负载均衡集群技术。文章涵盖 LVS 基础认知、核心术语、四大工作模式(NAT、DR、TUN、FullNAT)对比,以及静态与动态调度算法原理。重点解析了 ipvsadm 管理工具的使用,并通过 NAT 和 DR 模式的实验步骤,演示了集群部署、内核参数配置、VIP 冲突解决及规则持久化的完整流程。
落日余晖 发布于 2026/3/16 更新于 2026/10/7 102 浏览Linux Virtual Server (LVS)
一、LVS 基础认知
1.1 LVS 简介
LVS(Linux Virtual Server)是 Linux 内核层实现的高性能、高可用负载均衡集群技术,由章文嵩博士开发,现为 Linux 内核标准模块。其核心作用是将前端请求流量分发到后端多台真实服务器(RS),提升服务的并发处理能力和可用性。
1.2 集群与分布式核心区别
系统性能扩展分为向上扩展(Scale UP,增强单台设备性能)和向外扩展(Scale Out,增加设备数量),LVS 属于 Scale Out 方案,核心解决多设备的调度分配问题。
特性 集群(Cluster) 分布式(Distributed) 部署逻辑 同一业务部署在多台服务器,功能/数据/代码一致 一个业务拆分为多个子业务,各服务器功能/数据/代码不同 效率提升方式 提高单位时间内执行的任务数 缩短单个任务的执行时间 故障影响 单台服务器故障,其他服务器可顶替 单台节点故障,对应子业务直接失效 典型应用 LVS 负载均衡集群、Nginx 集群 Hadoop 计算、Ceph 存储、微服务架构
1.3 LVS 核心术语
LVS 集群的网络交互依赖以下核心 IP/角色定义,访问流程为:CIP <--> VIP == DIP <--> RIP
VS :Virtual Server,调度器,核心负责流量分发
RS :Real Server,真实服务器,负责实际提供业务服务
CIP :Client IP,客户端主机 IP
VIP :Virtual IP,调度器外网 IP,对外开放的客户访问 IP
DIP :Director IP,调度器内网 IP,用于和后端 RS 通信
RIP :Real Server IP,真实服务器的 IP 地址
二、LVS 核心知识点梳理
2.1 LVS 四大工作模式
LVS 通过不同的报文转发方式实现负载均衡,分为 NAT、DR、TUN、FullNAT 四种模式,其中 NAT 和 DR 为实际应用中最常用的模式,TUN 和 FullNAT 仅作了解。四种模式的核心差异在于报文修改方式、网络拓扑、数据转发路径,核心总结如下:
工作模式 核心转发原理 数据路径特点 网络要求 端口映射 适用场景 NAT 多目标 IP 的 DNAT,修改目标 IP/端口 请求 + 响应报文均经过 VS RIP 与 DIP 同网段,RS 网关指向 DIP 支持 后端服务器数量少的场景 DR(默认) 重新封装 MAC 首部,IP/端口不变 请求报文经 VS,响应报文由 RS 直连客户端 VS 和 RS 同物理网络,均配置 VIP 不支持 高并发、大流量场景 TUN 原 IP 报文外封装新 IP 首部 请求报文经 VS,响应报文由 RS 直连客户端 DIP/VIP/RIP 均为公网 IP
FullNAT 同时修改请求报文的源/目标 IP 请求 + 响应报文均经过 VS RIP 与 DIP 可不同网段 支持 复杂网络拓扑场景
重点模式:DR 模式核心特点 DR 是 LVS 默认且应用最广泛的模式,性能远高于 NAT 模式(避免 VS 成为瓶颈),但需解决 VIP 地址冲突问题(VS 和 RS 均配置 VIP,需防止 ARP 广播导致的地址解析异常),解决方案有 3 种:
前端网关做静态绑定(VIP 与 VS 的 MAC 地址);
RS 上使用 arptables 工具限制 ARP 请求;
RS 上修改内核参数 arp_ignore 和 arp_announce(最常用)。
2.2 LVS 调度算法 LVS 的调度算法分为静态算法(仅按算法本身调度,不考虑 RS 负载)和动态算法(根据 RS 实时负载状态调度,负载值 Overhead 越小越优先),4.15 版本内核新增了 FO/OVF 算法,适用于灰度发布等场景。
2.2.1 静态调度算法 算法 英文全称 核心逻辑 适用场景 RR Round Robin 轮询,平均分配请求 RS 配置性能一致的场景 WRR Weighted RR 加权轮询,权重越高调度次数越多 RS 配置性能不一致的场景 SH Source Hashing 源 IP 哈希,同一 IP 请求固定到同一 RS 需会话绑定的场景 DH Destination Hashing 目标 IP 哈希,同一目标地址请求固定到同一 RS 正向代理缓存(如宽带运营商)
2.2.2 动态调度算法 默认调度算法为 WLC(加权最少连接),核心计算负载值 Overhead,值越小优先级越高:
LC :最少连接,Overhead = 活动连接数×256 + 非活动连接数,适用于长连接应用;
WLC :加权最少连接,Overhead = (活动连接数×256 + 非活动连接数)/权重;
SED :最短预期延迟,Overhead = (活动连接数 +1+ 非活动连接数)×256/权重,高权重 RS 优先;
NQ :永不排队,第一轮均匀分配,后续按 SED 调度;
LBLC/LBLCR :基于本地的最少连接,解决 DH 算法的负载不均衡问题。
2.2.3 内核新增算法
FO :加权故障转移,遍历找到未过载 + 权重最高的 RS,适用于灰度发布;
OVF :溢出连接,权重最高的 RS 直到活动连接数超过权重值,再调度至下一个 RS。
2.3 LVS 管理工具:ipvsadm LVS 的集群配置与管理依赖 ipvsadm 工具,其核心功能为集群服务管理、RS 管理、规则查看/保存/重载,先通过 yum install ipvsadm -y 安装,核心信息如下:
组件 路径/命令 作用 主程序 /usr/sbin/ipvsadm 核心配置命令 规则保存 ipvsadm-save / ipvsadm -S 保存调度规则到文件 规则重载 ipvsadm-restore / ipvsadm -R 从文件重载调度规则 配置文件 /etc/sysconfig/ipvsadm 调度规则持久化文件 系统服务 ipvsadm.service 开机自启 LVS 规则
ipvsadm 核心命令 功能 核心命令格式 关键参数说明 添加集群服务 ipvsadm -A -t VIP:Port 指定虚拟服务地址 添加 RS ipvsadm -a -t VIP:Port -r RIP:Port 指定真实服务器 查看规则 ipvsadm -Ln [--rate]-n 不解析 IP,--rate 查看流量速率保存规则 ipvsadm -Sn > 配置文件路径持久化规则,防止重启失效 重载规则 ipvsadm -R < 配置文件路径从文件恢复规则 清空规则 ipvsadm -C清空所有调度规则 持久连接 ipvsadm -A -t 服务地址 -s 算法 -p 超时时间默认定时 360s,实现会话保持
三、LVS 实验 实验分为 NAT 模式集群部署和 DR 模式集群部署
3.1 实验 1:NAT 模式 LVS 集群部署
3.1.1 实验说明 实验目的 :掌握 NAT 模式 LVS 集群的部署流程,验证 RR/WRR 调度算法的效果;
实验原理 :VS 通过 DNAT 修改请求报文的目标 IP/端口,将流量分发到 RS,RS 响应报文经 VS 回传给客户端,RS 网关必须指向 VS 的 DIP;
主机名 IP 地址 角色 核心配置要求 VS 172.25.254.100(DIP) 调度器(VS) 双网卡(NAT+ 仅主机),开启内核路由 RS1 192.168.0.10 真实服务器(RS1) 仅主机网卡,网关指向 192.168.0.100 RS2 192.168.0.20 真实服务器(RS2) 仅主机网卡,网关指向 192.168.0.100 预期结果 :测试机多次访问 VIP,请求会按 RR/WRR 算法均匀/加权分发到 RS1 和 RS2。
3.1.2 操作步骤(所有操作在 root 用户下执行)
步骤 1:VS 开启内核路由功能 NAT 模式依赖 Linux 内核的 IP 转发功能,需开启,执行以下命令:
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
验证 :执行 sysctl -p,输出 net.ipv4.ip_forward = 1 即为成功。
步骤 2:VS 安装 ipvsadm 工具
步骤 3:修改调度算法为 WRR,验证加权效果 将 RS1 权重设为 2,RS2 权重设为 1,请求分发比例应为 2:1:
ipvsadm -A -t 172.25.254.100:80 -s wrr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1
ipvsadm -Ln
for N in {1..6};do curl 172.25.254.100;done
预期效果 :RS1 被调度 4 次,RS2 被调度 2 次,比例 2:1。
步骤 4:持久化 LVS 调度规则 默认 ipvsadm 配置为临时生效,重启后丢失,需保存规则并设置开机自启:
ipvsadm-save -n > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm.service
systemctl status ipvsadm.service
3.2 实验 2:DR 模式 LVS 集群部署
3.2.1 实验说明 实验目的 :掌握 DR 模式 LVS 集群的部署流程,解决 VIP 地址冲突问题,验证 WRR 调度算法;
实验原理 :VS 仅修改请求报文的 MAC 地址,RS 直接将响应报文回传给客户端,VS 和 RS 均配置 VIP,需修改 RS 内核参数限制 ARP 解析;
主机名 IP 地址 VIP 角色 核心配置要求 client 172.25.254.10 无 测试机 NAT 网卡,可访问路由器 router 172.25.254.100/192.168.0.10 无 路由器 双网卡(NAT+ 仅主机) lvs 192.168.0.100 192.168.0.200 调度器(VS) 仅主机网卡,lo 口配置 VIP RS1 192.168.0.100 192.168.0.200 真实服务器 1 仅主机网卡,lo 口配置 VIP,修改内核参数 RS2 192.168.0.100 192.168.0.200 真实服务器 2 仅主机网卡,lo 口配置 VIP,修改内核参数 预期结果 :测试机访问 VIP,请求经 VS 分发到 RS,响应报文由 RS 直连测试机,实现高并发负载均衡。
3.2.2 操作步骤(核心步骤,省略基础网卡配置)
步骤 1:所有 RS(RS1/RS2)配置 VIP 到 lo 回环口 DR 模式要求 VS 和 RS 均配置 VIP,将 VIP 绑定到 lo 口(避免网卡冲突),执行以下命令:
vim /etc/NetworkManager/system-connections/lo.nmconnection
[connection]
id =lo type =loopback interface-name=lo
[ethernet]
[ipv4]
address1=127.0.0.1/8
address2=192.168.0.200/32
method=manual
nmcli connection up lo
ip addr show lo
步骤 2:所有 RS(RS1/RS2)修改内核参数,解决 VIP 地址冲突 修改 arp_ignore 和 arp_announce,限制 ARP 请求/通告,两台 RS 操作完全一致:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
arp_ignore=1:仅对请求的目标 IP 配置在接收接口上时,才响应 ARP;
arp_announce=2:仅向本网络通告本机接口信息,避免 VIP 暴露。
步骤 3:添加策略
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.200
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g
步骤 4:测试机(client)验证 DR 模式负载均衡效果 在测试机执行循环 curl 命令,访问 VIP,查看请求分发结果:
for N in {1..10};do curl 192.168.0.200;done
预期效果 :请求在 RS1 和 RS2 之间交替分发,响应报文由 RS 直连测试机,VS 仅处理请求分发,无响应瓶颈。
步骤 5:持久化 DR 模式调度规则 与 NAT 模式一致,保存规则并设置 ipvsadm 服务开机自启:
ipvsadm -Sn > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm.service
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online