LVS(Linux Virtual Server)全面解析与实验手册:集群概念、工作模式与调度算法
摘要本文深入解析 LVSLinux Virtual Server负载均衡技术涵盖集群核心概念、三大分类、四种工作模式NAT、DR、TUN、FULLNAT及十三种调度算法。通过详细的实验手册手把手指导多端口轮询FWM和会话粘滞Redis持久连接的配置。每条命令均附带详细注释可直接复制执行助您从理论到实践全面掌握 LVS。一、什么是集群Cluster集群Cluster是一组相互独立的计算机节点通过高速网络互联对外表现为一个单一系统共同对外提供服务。其核心思想是将多台计算机组合起来以较低的成本获得与大型主机相当的性能和可用性。1.1 核心概念Scale Up纵向扩展提升单台服务器的硬件配置CPU、内存、磁盘成本高、有上限存在单点故障SPOF。Scale Out横向扩展增加服务器数量通过集群技术协同工作成本低、弹性好是高并发场景的标准做法。集群的关键在于“协同”多台机器不是简单堆叠而是通过调度器和统一入口对外提供透明服务。1.2 集群核心特征特征说明单一系统映像用户看到的是一个整体入口VIP不需要关心背后有多少台服务器。高可用性单节点故障不影响整体服务衡量标准 A MTBF/(MTBFMTTR)目标 99.999%。可扩展性通过增加节点水平扩展Scale Out性能线性增长。负载均衡请求由调度器按算法智能分发到各节点避免单点过载。透明性客户端无需修改代码后端 RS 对用户完全透明。1.3 集群架构示意客户端请求 (CIP → VIP) │ ┌──────▼──────┐ │ 负载均衡器 │ ← Director / Load Balancer │ (LVS) │ 对外暴露 VIP对内分发请求 └──────┬──────┘ ┌───────┼───────┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐ │RS 1 │ │RS 2 │ │RS 3 │ ← Real Server真实服务器 │Web │ │Web │ │Web │ 处理实际业务请求 └──┬──┘ └──┬──┘ └──┬──┘ └───────┼───────┘ ┌──────▼──────┐ │ 共享存储 │ ← NFS / Ceph / GlusterFS / FastDFS └─────────────┘ 保障数据一致性二、集群分类集群按功能目标分为三大类实际生产环境中通常混合使用。2.1 负载均衡集群LB — Load Balancing特性说明目标将大量并发请求分发到多台服务器提升系统吞吐量。典型实现LVS四层、Nginx七层、HAProxy四/七层、F5硬件。工作层次四层传输层IP:Port或七层应用层HTTP/HTTPS。适用场景Web服务、API网关、DNS解析、邮件服务。核心价值用多台廉价服务器替代昂贵的大型机成本低且弹性好。2.2 高可用集群HA — High Availability特性说明目标保证服务连续性单点故障(SPOF)时自动切换到备用节点。典型实现KeepalivedVRRP协议、Heartbeat、Corosync Pacemaker。适用场景数据库主备(Master-Slave)、核心服务冗余、VIP漂移。衡量指标可用性 A MTBF/(MTBFMTTR)常见目标 99.9% ~ 99.999%5个9。SLAService Level Agreement服务等级协议定义可用性目标。故障切换时间Keepalived 通常 1~3 秒完成 VIP 漂移。2.3 高性能计算集群HPC — High Performance Computing特性说明目标将大规模计算任务拆分到多节点并行处理聚合算力。典型实现MPI消息传递接口、Hadoop MapReduce、Apache Spark。适用场景科学计算、气象预测、基因分析、AI 大模型训练。分布式存储Ceph、GlusterFS、FastDFS、MogileFS、Hadoop HDFS。数据处理Hadoop MapReduce、Apache Spark内存计算。2.4 三类集群对比LB (负载均衡) HA (高可用) HPC (高性能) ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 分发用户请求 │ │ 主备故障切换 │ │ 并行拆分计算 │ │ 横向扩展容量 │ │ 服务永不中断 │ │ 聚合算力求解 │ │ 对外一个入口 │ │ VIP 自动漂移 │ │ 任务调度分发 │ │ LVS/Nginx │ │ Keepalived │ │ MPI/Spark │ └──────────────┘ └──────────────┘ └──────────────┘★ 生产环境标准组合LVS四层LB KeepalivedHAVIP高可用 Nginx七层代理 RedisSession共享。三、LVS 的作用LVSLinux Virtual Server是章文嵩博士于 1998 年开发的开源负载均衡项目已从 Linux 2.4 内核开始集成到内核空间。官网http://www.linuxvirtualserver.org/。3.1 LVS 核心术语缩写全称含义VSVirtual Server虚拟服务器即 LVS 调度器本身RSReal Server真实服务器后端处理请求的服务器CIPClient IP客户端 IP 地址发起请求的源地址VIPVirtual IP虚拟 IPVS 对外暴露的 IP客户端访问的目标地址DIPDirector IP调度器 IPVS 与 RS 通信时使用的内网 IPRIPReal Server IP真实服务器 IPRS 自身的 IP 地址3.2 LVS 数据流模型数据包流转路径CIP (客户端IP) ──请求── VIP (虚拟IP) 调度 DIP (调度器内网IP) ──转发── RIP (真实服务器IP)通俗理解用户只知道 VIP也只访问 VIP。VIP 像公司的总机号码DIP/RIP 像内部员工的分机号。LVS 的工作就是接到总机来电后根据策略转给合适的分机。3.3 LVS 核心定位维度说明工作空间内核空间kernel space基于 Netfilter 框架处理效率极高。工作层次四层传输层基于 IP:Port 调度不解析 HTTP 等七层协议。核心模块ip_vs 内核模块通过 ipvsadm 用户态工具管理。性能百万级并发连接DR 模式下 CPU 占用近乎为零。转发方式只做分发不做代理DR/TUN或做简单 NAT 转换NAT/FULLNAT。3.4 LVS 在 Netfilter 框架中的位置数据包进入后经过 Netfilter 的 5 个钩子点PREROUTING → INPUT → FORWARD → OUTPUT → POSTROUTINGLVS 工作在 INPUT 链上VIP 的数据包到达 PREROUTING → 路由判断是本机 → 进入 INPUT。ip_vs 模块在 INPUT 链上拦截数据包根据调度规则修改目标地址。NAT 模式修改后的包走 FORWARD → POSTROUTING 发往 RS。DR 模式修改 MAC 地址后直接通过交换机发往 RS。四、LVS 的 4 种工作模式及原理LVS 的四种工作模式按数据包修改的层次不同分为lvs-nat修改 IP 层DNAT、lvs-dr修改 MAC 层、lvs-tunIP 隧道封装、lvs-fullnat双向全 NAT。4.1 NAT 模式Network Address Translation【原理】LVS 修改数据包的目标 IP 地址DNAT将 VIP 转换为选中 RS 的 RIP。RS 处理完毕后响应必须原路返回 Director再由 Director 做 SNAT 还原源 IP 后返回客户端。数据包流转NAT 模式┌────────┐ ①请求(CIP→VIP) ┌────────────┐ ②DNAT(VIP→RIP) ┌──────────┐ │ Client │ ──────────────────► │ Director │ ──────────────────► │ Real Srv │ │ CIP:X │ │ VIP/RIP │ │ RIP │ │ │ ◄────────────────── │ 改目标IP │ ◄────────────────── │ │ └────────┘ ④响应(VIP→CIP) └────────────┘ ③响应(RIP→CIP) └──────────┘ 由Director SNAT还原 RS的默认网关必须是Director项目说明修改内容目标 IP 地址入站做 DNAT 源 IP 地址出站做 SNATRS 默认网关必须指向 Director 的 DIP192.168.0.100否则响应无法原路返回Director 压力大——进出双向流量都要经过 Director网卡带宽是瓶颈支持端口映射✅ 支持例如 VIP:80 → RS:8080端口可以不同RS 规模上限10~20 台受 Director 网卡吞吐量限制RS 操作系统任意 OSLinux / Windows / …对 RS 完全透明跨网段不支持——RS 必须与 Director 网络可达且同在一个广播域Director 要求必须开启 IP 转发net.ipv4.ip_forward 1★ NAT 模式的工作流程逐步详解客户端发送请求CIP → VIP:PortDirector 收到后做 DNAT将目标 IP 从 VIP 改为选中 RS 的 RIPRS 收到请求处理后生成响应RIP → CIP响应必须经过 Director因 RS 默认网关指向 DirectorDirector 做 SNAT将源 IP 从 RIP 还原为 VIP返回给客户端六、LVS NAT模式实验配置以下为LVS NAT模式实验环境配置的详细命令每条命令均附带注释说明可直接在Xshell中执行。6.1 环境说明主机网络模式功能是否设定网关lvsnat-172.25.254.100hostonly-192.168.0.100vs虚拟服务器/调度器-rs1hostonly-192.168.0.10rs真实服务器1192.168.0.100rs2hostonly-192.168.0.20rs真实服务器2192.168.0.1006.2 环境设定操作6.2.1 基本环境配置lvs主机网络配置eth0 - nat模式 - 172.25.254.100eth1 - hostonly模式 - 192.168.0.100rs1主机网络配置eth0 - hostonly模式 - 192.168.0.10注意使用脚本设定IP时不设定网关后续手动设定rs2主机网络配置eth0 - hostonly模式 - 192.168.0.20注意使用脚本设定IP时不设定网关后续手动设定6.2.2 设定RS1和RS2的网关在RS1主机上执行以下命令# 修改eth0网卡的网关为192.168.0.100指向LVS的DIP [rootrs1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 重新加载网络连接配置 [rootrs1 ~]# nmcli connection reload 激活eth0网络连接 [rootrs1 ~]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/4 查看路由表确认网关设置生效 [rootrs1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0在RS2主机上执行以下命令# 修改eth0网卡的网关为192.168.0.100指向LVS的DIP [rootrs2 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 重新加载网络连接配置 [rootrs2 ~]# nmcli connection reload 激活eth0网络连接 [rootrs2 ~]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/4 查看路由表确认网关设置生效 [rootrs2 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth06.2.3 环境验证配置效果验证所有IP之间可以直接ping通RS1和RS2的默认网关都指向LVS的DIP192.168.0.100LVS可以同时访问nat网络172.25.254.0/24和hostonly网络192.168.0.0/24网络连通性测试命令# 从LVS ping RS1 [rootlvs ~]# ping 192.168.0.10 从LVS ping RS2 [rootlvs ~]# ping 192.168.0.20 从RS1 ping LVS [rootrs1 ~]# ping 192.168.0.100 从RS2 ping LVS [rootrs2 ~]# ping 192.168.0.100 从RS1 ping RS2通过LVS网关转发 [rootrs1 ~]# ping 192.168.0.20 从RS2 ping RS1通过LVS网关转发 [rootrs2 ~]# ping 192.168.0.10注意事项NAT模式下RS的默认网关必须指向Director的DIP否则响应包无法返回确保所有主机的防火墙已关闭或配置了相应规则LVS主机需要开启IP转发功能sysctl -w net.ipv4.ip_forward1建议将IP转发配置写入/etc/sysctl.conf文件永久生效五、LVS 调度算法LVS 内置了 13 种调度算法可根据业务场景灵活选择。算法缩写说明适用场景轮询rr按顺序轮流分配请求所有 RS 性能相近加权轮询wrr按权重比例分配请求RS 性能差异明显最少连接lc将请求发给当前连接数最少的 RS长连接服务如数据库加权最少连接wlc考虑权重的最少连接默认算法通用场景性能最佳基于局部性的最少连接lblc考虑目标 IP 的局部性相同目标 IP 发往同一 RS缓存服务器带复制的基于局部性的最少连接lblcrlblc 的改进版允许复制到负载较轻的 RS缓存服务器集群目标地址散列dh根据目标 IP 的哈希值选择 RS反向代理缓存源地址散列sh根据源 IP 的哈希值选择 RS会话保持

相关新闻

3分钟实现Windows本地实时语音转文字:TMSpeech全功能指南

3分钟实现Windows本地实时语音转文字:TMSpeech全功能指南

3分钟实现Windows本地实时语音转文字:TMSpeech全功能指南 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 你是否曾因会议记录手忙脚乱?是否在在线学习时既要听讲又要记笔记而分身乏术&#x…

2026/10/13 20:10:04 阅读更多 →
车机主流芯片龙鹰一号8155/8295/8775/8797算力基础知识与技术分享

车机主流芯片龙鹰一号8155/8295/8775/8797算力基础知识与技术分享

—— CPU 占用率与 KDMIPS 算力换算详解 适用对象:座舱 / 智驾软件、系统、性能工程师 文档信息 项目内容文档主题车机主流芯片算力基础 CPU% ↔ KDMIPS 换算方法重点芯片龙鹰一号 SE1000 / SA8155P / SA8295P / SA8775P / SA8797P核心内容CPU 百分比 ↔ 绝对算力…

2026/10/13 20:10:33 阅读更多 →
探索XStreaming的FSR技术:从2.0到3.1版本的画质提升对比

探索XStreaming的FSR技术:从2.0到3.1版本的画质提升对比

探索XStreaming的FSR技术:从2.0到3.1版本的画质提升对比 【免费下载链接】XStreaming Open source Xbox streaming(remote play) client that allows you stream Xbox and play xCloud anytime, supporting Android/iOS/HarmonyOS. 项目地址: https://gitcode.com…

2026/10/13 21:11:18 阅读更多 →

最新新闻

TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

1. 这不是“换壳”,而是一次精准的协议层手术“80行 TypeScript Mods,把 Claude Code 改造成 Deepseek Harness”——这个标题乍看像极了某些技术圈里常见的“魔改教程”,但实际操作中,我很快意识到:它根本不是在 UI 上…

2026/10/14 19:57:05 阅读更多 →
高效贡献开源Hermes agent:从源码阅读到PR合入的完整路线

高效贡献开源Hermes agent:从源码阅读到PR合入的完整路线

1. 为什么值得把精力花在贡献 Hermes agent 上先说一个很多人的误解:贡献开源项目不等于闷头写代码,尤其像 Hermes agent 这类项目,它是一个持续推进的工程产物,有设计取舍、有兼容负担、也有社区协作的规范。第一次接触时容易觉得…

2026/10/14 19:57:05 阅读更多 →
DOM遍历不是for循环:深度优先与广度优先的工程选型指南

DOM遍历不是for循环:深度优先与广度优先的工程选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 19:57:05 阅读更多 →
ESP32-S3开发板入门:从环境搭建到GPIO、PSRAM与USB应用全解析

ESP32-S3开发板入门:从环境搭建到GPIO、PSRAM与USB应用全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 19:57:05 阅读更多 →
FPGA现货采购避坑指南:从型号解读到验货实战

FPGA现货采购避坑指南:从型号解读到验货实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 19:57:05 阅读更多 →
手写负载均衡:从轮询到一致性哈希的算法与工程实践

手写负载均衡:从轮询到一致性哈希的算法与工程实践

手写负载均衡这件事,听起来像是业务代码写多了自娱自乐,但真把它当回事做一遍的人,对分布式流量的理解完全不一样。很多时候我们一直在用现成组件——Nginx、LVS、各种注册中心自带的负载策略——出了问题只能对着文档调参数,根本…

2026/10/14 19:56:03 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →