LVS负载均衡彻底搞懂:三种工作模式原理与DR模式实战踩坑全记录
一、LVS 是什么LVSLinux Virtual ServerLinux 虚拟服务器是由章文嵩博士开发的内核级四层负载均衡技术工作在 OSI 模型的传输层TCP/UDP只处理 IP 和端口的转发不解析 HTTP 等应用层内容因此性能极高单台调度器可支撑上万并发连接。LVS 集群中有两类核心角色Director调度器接收客户端请求按照调度算法将数据包转发给后端真实服务器本身不处理业务。Real ServerRS真实服务器真正处理业务请求并将响应结果返回给客户端。LVS 是四层负载均衡Nginx 是七层负载均衡。LVS 只看 IP 端口Nginx 可以看 URL、Cookie、Header 等应用层信息。二、LVS 三种工作模式详解LVS 支持三种工作模式NAT 模式、DR 模式、TUN 模式。三者的本质区别在于数据包的转发方式和回包路径不同。2.1 NAT 模式网络地址转换参数-m工作原理客户端请求 VIP数据包到达调度器。调度器修改数据包的目标 IPDNAT将 VIP 改为某台 RS 的真实 IP转发给后端。RS 处理请求后将响应包发给调度器RS 的默认网关必须指向调度器。调度器修改响应包的源 IPSNAT将 RS 真实 IP 替换回 VIP返回给客户端。特点请求和响应全部流量都经过调度器调度器容易成为性能瓶颈。RS 可以和 VIP 不在同一个网段RS 只需要内网 IP不需要公网 IP。不需要在 RS 上配置 lo 回环网卡 VIP也不需要 ARP 抑制。支持任意操作系统的 RS。适用场景小规模集群、对性能要求不高的场景。配置示例ipvsadm-A-t10.1.8.100:80-srr ipvsadm-a-t10.1.8.100:80-r10.1.8.11:80-mipvsadm-a-t10.1.8.100:80-r10.1.8.12:80-mipvsadm-a-t10.1.8.100:80-r10.1.8.13:80-m关键所有 RS 的默认网关必须配置为调度器的内网 IP。2.2 DR 模式直接路由参数-g生产最常用工作原理客户端访问 VIP请求报文到达调度器。调度器不修改 IP只修改数据帧的目标 MAC 地址将其改为选中 RS 的物理网卡 MAC在二层转发给 RS。RS 收到数据包由于本机 lo 回环网卡绑定了 VIP能够识别并处理该请求。响应报文由 RS 直接返回给客户端不经过调度器。特点只有入方向请求经过调度器响应包 RS 直回客户端调度器压力小性能最高。调度器和所有 RS必须在同一个局域网因为是二层 MAC 转发。硬性约束踩坑重点VIP 必须绑定在 RS 的lo 回环网卡上掩码为/32绝对不能绑定在物理网卡如 ens33上。必须配置 ARP 抑制内核参数防止 RS 对外广播 VIP 的 ARP 响应否则客户端会绕过调度器直接访问某台 RS导致负载均衡失效。net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2适用场景同一局域网内的大规模 Web 集群生产环境中最常用。配置示例ipvsadm-A-t10.1.8.100:80-srr ipvsadm-a-t10.1.8.100:80-r10.1.8.11:80-gipvsadm-a-t10.1.8.100:80-r10.1.8.12:80-gipvsadm-a-t10.1.8.100:80-r10.1.8.13:80-g2.3 TUN 模式IP 隧道参数-i工作原理客户端请求 VIP数据包到达调度器。调度器在原有 IP 报文外面再封装一层新的 IP 头部IP 隧道封装将封装后的包发给 RS。RS 解开隧道外层 IP拿到原始请求包本机 lo 网卡配置了 VIP处理业务。RS 直接将响应返回客户端回包不经过调度器。特点RS 和调度器可以跨网段、跨机房不要求同一局域网。回包不走调度器性能较高。RS 内核必须支持并开启ipip隧道模块。硬性约束RS 主机内核必须加载ipip模块。VIP 配置在 RS 的 lo 回环网卡上。同样需要配置 ARP 抑制。适用场景跨机房、跨地域的分布式集群。配置示例ipvsadm-A-t10.1.8.100:80-srr ipvsadm-a-t10.1.8.100:80-r10.1.8.11:80-iipvsadm-a-t10.1.8.100:80-r10.1.8.12:80-iipvsadm-a-t10.1.8.100:80-r10.1.8.13:80-i2.4 三种模式对比汇总对比项NAT 模式DR 模式TUN 模式ipvsadm 参数-m-g-i入流量经过调度器经过调度器经过调度器出流量经过调度器RS 直回客户端RS 直回客户端RS 与调度器网段可不同网段必须同一局域网可跨网段 / 跨机房RS 是否需要 VIP不需要lo 绑定 VIPlo 绑定 VIP是否需要 ARP 抑制不需要必须必须特殊要求RS 网关指向调度器同局域网ipip 隧道模块性能较低调度器瓶颈最高高适用场景小规模集群同网段大规模集群最常用跨机房集群三、LVS 常用调度算法算法名称说明rr轮询按顺序依次分配每台 RS 轮流处理wrr加权轮询根据 RS 权重分配权重高的处理更多请求lc最少连接优先分配给当前连接数最少的 RSwlc加权最少连接结合权重和连接数综合分配默认算法lblc基于局部性的最少连接同一目标 IP 尽量分配给同一 RS四、DR 模式完整实战配置4.1 实验环境主机IP 地址角色lvs-dir[10.1.8.10](10.1.8.10)调度器 Directorweb1[10.1.8.11](10.1.8.11)RS 节点web2[10.1.8.12](10.1.8.12)RS 节点web3[10.1.8.13](10.1.8.13)RS 节点VIP[10.1.8.100](10.1.8.100)虚拟 IP4.2 调度器配置# 1. 绑定VIP到物理网卡ipaddradd10.1.8.100/24 dev ens33# 2. 安装ipvsadmyuminstall-yipvsadm# 3. 配置LVS规则ipvsadm-C# 清空旧规则ipvsadm-A-t10.1.8.100:80-srr# 添加虚拟服务轮询算法ipvsadm-a-t10.1.8.100:80-r10.1.8.11:80-g# 添加web1DR模式ipvsadm-a-t10.1.8.100:80-r10.1.8.12:80-g# 添加web2DR模式ipvsadm-a-t10.1.8.100:80-r10.1.8.13:80-g# 添加web3DR模式# 4. 查看规则ipvsadm-Ln4.3 所有 RS 节点配置web1/web2/web3 全部执行# 1. 绑定VIP到lo回环网卡/32掩码重点ipaddradd10.1.8.100/32 dev lo# 2. 配置ARP抑制echo1/proc/sys/net/ipv4/conf/all/arp_ignoreecho2/proc/sys/net/ipv4/conf/all/arp_announceecho1/proc/sys/net/ipv4/conf/lo/arp_ignoreecho2/proc/sys/net/ipv4/conf/lo/arp_announce# 3. 持久化ARP参数写入/etc/sysctl.conf防止重启失效cat/etc/sysctl.confEOF net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.ipv4.conf.lo.arp_ignore 1 net.ipv4.conf.lo.arp_announce 2 EOFsysctl-p4.4 验证负载均衡# 客户端执行90次请求统计各节点处理次数foriin{1..90};docurl-s10.1.8.100;done|sort|uniq-c正常结果三台 RS 各处理 30 次请求。五、实战踩坑总结坑 1流量全部落到同一台 RS现象90 次请求全部打到 web1web2 和 web3 零流量。原因RS 的 lo 网卡 ARP 抑制参数未生效arp_ignore0、arp_announce0RS 对外广播了 VIP 的 ARP 响应客户端 ARP 缓存直接指向 web1绕过了 LVS 调度器。解决# 检查ARP参数sysctlnet.ipv4.conf.lo.arp_ignore net.ipv4.conf.lo.arp_announce# 修正为1和2echo1/proc/sys/net/ipv4/conf/lo/arp_ignoreecho2/proc/sys/net/ipv4/conf/lo/arp_announce# 客户端清空ARP缓存arp-d10.1.8.100坑 2sysctl: invalid syntax 报错现象执行sysctl -p时报/etc/sysctl.conf(11): invalid syntax。原因配置文件中键值对等号两侧有空格或参数名拼写错误。解决sysctl.conf中键值对严格使用参数名值格式等号左右不要加空格注释行以#开头。坑 3ipvsadm: unexpected argument 报错现象添加 RS 时报unexpected argument。原因混淆了-A添加虚拟服务和-a添加后端 RS后端 RS 地址前缺少-r参数。解决大写-A只配 VIP小写-a配 RS 且必须加-r指定后端地址。坑 4nmcli 命令拼接报错现象invalid setting.property nmcli。原因两条独立的 nmcli 命令写在同一行被当成一条命令解析。解决每条 nmcli 命令单独执行不要同行拼接。六、总结DR 模式是生产环境最常用的 LVS 模式性能最高但必须配置 lo 绑定 VIP 和 ARP 抑制。NAT 模式配置最简单但调度器是瓶颈适合小规模场景。TUN 模式支持跨机房但需要 ipip 隧道支持使用较少。DR 模式下最常见的问题就是 ARP 抑制配置不到位导致客户端绕过调度器直接访问 RS表现为流量不均。排障思路先看ipvsadm -Ln确认规则正确再检查 RS 的 lo VIP 绑定和 ARP 参数最后清空客户端 ARP 缓存复测。

相关新闻

JVM 内存管理原理及生产配置实战:从“参数能启动”到“内存可控”

JVM 内存管理原理及生产配置实战:从“参数能启动”到“内存可控”

Java 应用明明配置了 -Xmx4g,容器限制也是 4 GiB,为什么还是会被 Kubernetes 以 OOM Killed 结束?老年代使用率一直很高,要不要立刻扩大堆?Full GC 多了,是垃圾回收器选错了,还是应用确实留住了…

2026/10/12 15:18:29 阅读更多 →
英语附加问句全解析:从核心规则到地道语调应用

英语附加问句全解析:从核心规则到地道语调应用

1. 附加问句:英语交流中的“确认按钮”如果你在英语对话中,说完一句话后,总感觉心里没底,不确定对方是否听懂了、是否同意,或者只是想缓和一下语气,让对话不那么生硬,那么附加问句就是你最需要掌…

2026/10/12 1:05:31 阅读更多 →
谷歌云TPU即服务实战指南:从环境配置到性能调优

谷歌云TPU即服务实战指南:从环境配置到性能调优

1. 先搞清楚“TPU即服务”到底能解决什么问题如果你在找大规模机器学习训练或推理的算力方案,特别是已经用GPU集群感到成本或效率瓶颈,那Alphabet(谷歌母公司)的TPU即服务就值得仔细看看。它不是一个新概念,但很多人对…

2026/10/9 22:32:28 阅读更多 →

最新新闻

DeepSeek Harness 插件体系从入门到精通:安装、配置与离线部署全指南

DeepSeek Harness 插件体系从入门到精通:安装、配置与离线部署全指南

1. 从零理解 DeepSeek Harness 插件体系到底在解决什么问题很多人第一次接触 DeepSeek Harness 的时候,脑子里冒出来的第一个问题往往是:这玩意儿跟直接用命令行调模型有什么区别?我一开始也是这个反应。后来真正把插件机制跑通之后才明白&am…

2026/10/14 14:40:57 阅读更多 →
Zabbix监控MariaDB实践:核心指标、触发器与告警配置全解析

Zabbix监控MariaDB实践:核心指标、触发器与告警配置全解析

先聊点实际的。上个月我接手了一台总是半夜告警的数据库服务器,CPU、内存指标看起来都没问题,Zabbix主机层面一切都是绿的,可业务方就是反馈查询慢、页面转圈。后来一查,问题全在MariaDB自身的连接数被打满、慢查询堆积上。主机活…

2026/10/14 14:40:57 阅读更多 →
TypeScript入门指南:静态类型与工程实践

TypeScript入门指南:静态类型与工程实践

1. TypeScript 基础入门:为什么选择它?第一次接触 TypeScript 是在 2016 年维护一个大型前端项目时。当时 JavaScript 代码已经膨胀到 3 万行,每次修改功能都像在雷区拆弹——你永远不知道哪个变量的类型变化会引发连锁崩溃。直到团队引入 Ty…

2026/10/14 14:40:56 阅读更多 →
博学谷习题界面开发实战:Android ListView自定义Adapter与判分逻辑实现

博学谷习题界面开发实战:Android ListView自定义Adapter与判分逻辑实现

做这个习题界面之前,我其实纠结了一段时间。博学谷这个模拟在线学习App做到第十一期,前面的章节页、详情页、视频播放流程都已经跑通了,用户能浏览课程、能看介绍,但一直都缺一个自我检验的入口。习题界面就是补上这个缺口&#x…

2026/10/14 14:40:56 阅读更多 →
三维模型导入技术解析与星图云实战指南

三维模型导入技术解析与星图云实战指南

1. 三维模型导入的核心价值与挑战在数字内容创作领域,三维模型就像建筑师的砖瓦。最近半年我参与了17个跨行业的三维项目,发现模型导入环节平均消耗了团队23%的有效工作时间。其中格式兼容性问题导致的返工占比高达68%,这个数据让我意识到系统…

2026/10/14 14:40:56 阅读更多 →
ComfyUI本地部署全攻略:从整合包到手动部署,跑通AI绘画工作流

ComfyUI本地部署全攻略:从整合包到手动部署,跑通AI绘画工作流

在家用电脑上折腾出一个自己的 ComfyUI,这事说难不难,说简单,又确实能把一大批人挡在门外。我见过太多人收藏了十几篇部署教程,结果打开一看全是"打开命令行输入 pip install xxx",人直接就懵了;…

2026/10/14 14:39:56 阅读更多 →

日新闻

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/13 16:22:04 阅读更多 →
影刀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 阅读更多 →