跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash算法

LVS(Linux Virtual Server)负载均衡架构与调度算法详解

综述由AI生成LVS(Linux Virtual Server)负载均衡技术,涵盖其架构、三种工作模式(NAT、DR、TUN)的原理与区别、常用调度算法(静态与动态)以及持久化配置。文章通过实验步骤演示了 NAT 模式和 DR 模式的搭建过程,重点讲解了如何通过 ipvsadm 配置调度规则、调整权重及设置 ARP 抑制以防止冲突。内容旨在帮助读者理解 LVS 内核机制并掌握实际部署方法。

监控大屏发布于 2026/3/24更新于 2026/5/3035 浏览

1. LVS(Linux Virtual Server)

LVS 全称 Linux Virtual Server,是 Linux 内核层实现的高性能、高可用的负载均衡集群技术,由章文嵩博士开发,目前是 Linux 内核的标准模块之一。它的核心作用是将前端的请求流量分发到后端多台真实服务器(Real Server)上,从而提升服务的并发处理能力和可用性。

2. LVS 运行原理

2.1 LVS 集群体系结构

文章配图

工作原理:VS 根据请求报文的目标 IP 和目标协议及端口将其调度转发至某 RS,根据调度算法来挑选 RS。

2.2 LVS 概念

  • DS (Director Server - 负载均衡调度器): 类似于餐厅的'前台'。它是集群的入口,负责接收用户请求并根据算法转发。
  • RS: Real Server(真实业务主机),就是后面的'服务员'。它们是真正干活的服务器。
  • CIP: Client IP(客户端主机的 IP)。
  • VIP: Virtual Server IP(VS 外网的 IP),对外开放的让客户访问的 IP。就像餐厅的'招牌电话',用户只知道访问这个 IP,不知道后面具体是谁在服务。
  • DIP: Director IP(VS 内网的 IP),调度器负责访问内网的 IP。
  • RIP: Real Server IP(真实业务主机 IP),后面 RS(服务员)自己真实的网卡 IP,用于内部通信。

访问流程:CIP <--> VIP == DIP <--> RIP

2.3 LVS 集群的类型

  • lvs-nat: 修改请求报文的目标 IP,多目标 IP 的 DNAT。
  • lvs-dr: 操纵封装新的 MAC 地址。
  • lvs-tun: 在原请求 IP 报文之外新加一个 IP 首部。
  • lvs-fullnat: 修改请求报文的源和目标 IP。
2.3.1 NAT 模式

lvs-nat:

  • 本质是多目标 IP 的 DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS 的 RIP 和 PORT 实现转发。
  • RIP 和 DIP 应在同一个 IP 网络,且应使用私网地址;RS 的网关要指向 DIP。
  • 请求报文和响应报文都必须经由 Director 转发,Director 易于成为系统瓶颈。
  • 支持端口映射,可修改请求报文的目标 PORT。
  • VS 必须是 Linux 系统,RS 可以是任意 OS 系统。
2.3.2 NAT 模式数据逻辑
  1. 客户端发送访问请求,请求数据包中含有请求来源(CIP),访问目标地址(VIP),访问目标端口(9000 port)。
  2. VS 服务器接收到访问请求做 DNAT,把请求数据包中的目的地由 VIP 换成 RS 的 RIP 和相应端口。
  3. RS1 响应请求,发送响应数据包,包中的响应报文为数据来源(RIP1),响应目标(CIP),响应端口(9000 port)。
  4. VS 服务器接收到响应数据包,改变包中的数据来源(RIP1 --> VIP),响应目标端口(9000 --> 80)。
  5. VS 服务器把修改过报文的响应数据包回传给客户端。
  • LVS 的 NAT 模式接收和返回客户端数据包时都要经过 LVS 的调度机,所以 LVS 的调度机容易阻塞。
  • 文章配图

    客户请求到达 VIP 后进入 PREROUTING,在没有 ipvs 的时候应该进入本机 INPUT,当 IPVS 存在后访问请求在通过 PREROUTING 后被 ipvs 拦截并作 nat 转发。

    因为 ipvs 的作用点是在 PREROUTING 和 INPUT 链之间,所以如果在 prerouting 中设定规则会干扰 ipvs 的工作。所以在做 lvs 时要把 iptables 的防火墙策略全清理掉。

    2.3.3 DR 模式

    DR (Direct Routing): 直接路由,LVS 默认模式,应用最广泛。通过为请求报文重新封装一个 MAC 首部进行转发,源 MAC 是 DIP 所在的接口的 MAC,目标 MAC 是某挑选出的 RS 的 RIP 所在接口的 MAC 地址;源 IP/PORT,以及目标 IP/PORT 均保持不变。

    2.3.4 DR 模式数据逻辑

    文章配图

    在 DR 模式中,RS 接收到访问请求后不需要回传给 VS 调度器,直接把回传数据发送给 client,所以 RS 和 VS 上都要有 VIP。

    2.3.5 DR 模式数据传输过程

    文章配图

    1. 客户端发送数据帧给 VS 调度主机,帧中内容为客户端 IP + 客户端的 MAC + VIP + VIP 的 MAC。
    2. VS 调度主机接收到数据帧后把帧中的 VIP 的 MAC 改为 RS1 的 MAC,此时帧中的数据为客户端 IP + 客户端的 MAC + VIP + RS1 的 MAC。
    3. RS1 得到 2 中的数据包做出响应回传数据包,数据包中的内容为 VIP + RS1 的 MAC + 客户端 IP + 客户端 IP 的 MAC。
    2.3.6 DR 模式的特点
    1. Director 和各 RS 都配置有 VIP。
    2. 确保前端路由器将目标 IP 为 VIP 的请求报文发往 Director。
    3. 在前端网关做静态绑定 VIP 和 Director 的 MAC 地址。
    4. 在 RS 上使用 arptables 工具:
      arptables -A IN -d $VIP -j DROP
      arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
      
    5. 在 RS 上修改内核参数以限制 arp 通告及应答级别: /proc/sys/net/ipv4/conf/all/arp_ignore /proc/sys/net/ipv4/conf/all/arp_announce
    6. RS 的 RIP 可以使用私网地址,也可以是公网地址;RIP 与 DIP 在同一 IP 网络。
    7. RIP 的网关不能指向 DIP,以确保响应报文不会经由 Director。
    8. RS 和 Director 要在同一个物理网络。
    9. 请求报文要经由 Director,但响应报文不经由 Director,而由 RS 直接发往 Client。
    10. 不支持端口映射(端口不能修改)。
    11. RS 可使用大多数 OS 系统。
    2.3.7 TUN 模式(了解)

    转发方式:不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP 报文之外再封装一个 IP 首部(源 IP 是 DIP,目标 IP 是 RIP),将报文发往挑选出的目标 RS;RS 直接响应给客户端(源 IP 是 VIP,目标 IP 是 CIP)。

    2.3.8 TUN 模式数据传输过程

    文章配图

    1. 客户端发送请求数据包,包内有源 IP + VIP + dport。
    2. 到达 VS 调度器后对客户端发送过来的数据包重新封装添加 IP 报文头,新添加的 IP 报文头中包含 TUNSRCIP(DIP) + TUNDESTIP(RSIP1) 并发送到 RS1。
    3. RS 收到 VS 调度器发送过来的数据包做出响应,生成的响应报文中包含 SRCIP(VIP) + DSTIP(CIP) + port,响应数据包通过网络直接回传给 client。
    2.3.9 TUN 模式特点
    1. DIP, VIP, RIP 都应该是公网地址。
    2. RS 的网关一般不能指向 DIP。
    3. 请求报文要经由 Director,但响应不能经由 Director。
    4. 不支持端口映射。
    5. RS 的 OS 须支持隧道功能。

    3. 常用调度算法

    静态算法(不考虑服务器当前忙不忙)
    • RR (Round Robin): 一个一个来,轮询 RS 分别被调度,当 RS 配置有差别时不推荐。
    • WRR (Weighted RR): 谁能力强(配置高),谁多干点。比如 A 机器 8 核,B 机器 4 核,那就让 A 接 2 单,B 接 1 单。
    • SH (Source Hash): 实现 session sticky,源 IP 地址 hash;将来自于同一个 IP 地址的请求始终发往第一次挑中的 RS,从而实现会话绑定。
    • DH (Destination Hash): 目标地址哈希,第一次轮询调度至 RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的 RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商。
    动态算法(主要根据 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 会被调度)
    • LC (Least Connections): 最少链接法,适用于长连接应用。Overhead(负载值)= activeconns(活动链接数)x 256 + inactiveconns(非活动链接数)。
    • WLC (Weighted LC): 权重最少链接,默认调度方法。Overhead = (activeconns x 256 + inactiveconns) / weight。
    • SED (Shortest Expectation Delay): 初始连接高权重优先。Overhead = (activeconns + 1 + inactiveconns) x 256 / weight。但是,当 node1 的权重为 1,node2 的权重为 10,经过运算前几次的调度都会被 node2 承接。
    • NQ (Never Queue): 第一轮均匀分配,后续 SED。
    • LBLC (Locality-Based LC): 动态的 DH 算法,使用场景:根据负载状态实现正向代理。
    • LBLCR (LBLC with Replication): 带复制功能的 LBLC,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的 RS。

    4. NAT 模式实验

    NAT 模式环境设定

    文章配图

    VS 主机中
    [root@vsnode ~]# vmset.sh eth0 172.25.254.100 vsnode
    [root@vsnode ~]# vmset.sh eth1 192.168.0.100 vsnode noroute
    

    文章配图

    RS1 服务器中

    文章配图

    RS2 服务器中

    文章配图

    测试环境结果(在 vs 主机中进行测试)

    文章配图

    NAT 模式实现方法

    在 vs 主机中
    1. 开启内核路由功能(让 VS 主机中两个不同的网段进行通信)

    文章配图

    1. 编写策略并进行测试(记得安装 ipvsadm)

    文章配图

    更改权重

    文章配图

    由此可见 lvs 的 nat 模式已经实现。

    5. 规则持久化

    核心概念:什么是持久化?

    简单的说:让同一个客户端 IP,在一段时间内,始终转发到同一台后端真实服务器(RS)。

    开启持久化 (-p 参数): LVS 会记录一个小本本(内存中的持久化模板)。一旦记录了'IP A -> Server1',那么在设定的倒计时内,IP A 发来的所有请求,无视调度算法,统统扔给 Server1。

    核心作用

    1. 保证会话不丢失: 比如登录态、购物车、session 存在后端服务器本地。如果负载均衡每次都换机器,用户会反复掉线、登录失效。
    2. 实现 '同一 IP → 同一 RS': 只要是同一个源 IP 来的请求,在超时时间内,都扔给同一台后端。

    常见配置形式

    文章配图

    -p 3600 就是 开启持久化,超时 3600 秒。

    在 vs 调度器中

    执行查看命令,你会发现多了一个 persistent 标志:

    文章配图

    验证实验

    全为 RS1 或 RS2

    文章配图

    等待超时(等待超过设置的时间)

    文章配图

    6. DR 模式实验

    DR 模式实验过程

    文章配图

    在路由器中

    设置 IP

    文章配图

    数据转发策略

    文章配图

    在 vs 调度器中

    配置 IP

    文章配图

    配置 eth0 网卡

    文章配图

    配置 lo 接口

    文章配图

    激活网卡等

    文章配图

    在客户端中

    配置 IP

    文章配图

    eth0 网卡

    文章配图

    激活

    文章配图

    在 rs1 和 rs2 中

    设置 lo 接口并设置 lo 网卡

    文章配图

    文章配图

    ARP 禁止响应(禁止 rs 服务器响应外网)

    目的:既然 RS 上也有 VIP,为了不让局域网内的其他机器(包括路由器)知道 RS 上有这个 IP。

    文章配图

    • arp_ignore=1: 别人问 VIP 是谁,我坚决不回答(除非问的是我的物理 IP)。
    • arp_announce=2: 我发包出去时,坚决不用 VIP 作为源地址。

    目录

    1. 1. LVS(Linux Virtual Server)
    2. 2. LVS 运行原理
    3. 2.1 LVS 集群体系结构
    4. 2.2 LVS 概念
    5. 2.3 LVS 集群的类型
    6. 2.3.1 NAT 模式
    7. 2.3.2 NAT 模式数据逻辑
    8. 2.3.3 DR 模式
    9. 2.3.4 DR 模式数据逻辑
    10. 2.3.5 DR 模式数据传输过程
    11. 2.3.6 DR 模式的特点
    12. 2.3.7 TUN 模式(了解)
    13. 2.3.8 TUN 模式数据传输过程
    14. 2.3.9 TUN 模式特点
    15. 3. 常用调度算法
    16. 静态算法(不考虑服务器当前忙不忙)
    17. 动态算法(主要根据 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 会被调度)
    18. 4. NAT 模式实验
    19. NAT 模式环境设定
    20. VS 主机中
    21. RS1 服务器中
    22. RS2 服务器中
    23. 测试环境结果(在 vs 主机中进行测试)
    24. NAT 模式实现方法
    25. 在 vs 主机中
    26. 5. 规则持久化
    27. 核心概念:什么是持久化?
    28. 核心作用
    29. 在 vs 调度器中
    30. 验证实验
    31. 全为 RS1 或 RS2
    32. 等待超时(等待超过设置的时间)
    33. 6. DR 模式实验
    34. DR 模式实验过程
    35. 在路由器中
    36. 在 vs 调度器中
    37. 在客户端中
    38. 在 rs1 和 rs2 中
    39. ARP 禁止响应(禁止 rs 服务器响应外网)
    • 💰 8折买阿里云服务器限时8折了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • Trae AI IDE 完全上手指南:从安装到熟练应用
    • OpenClaw 配置飞书机器人教程
    • AIAgent 项目文件上传与解析:MD5、MinIO 及 Spring 配置
    • 2025 年 12 月 GESP C++ 四级真题解析
    • 昇腾 CANN 生态语言体系解析与学习路径推荐
    • Hydro 系统本地部署指南与 CSP/GESP 题库导入
    • Bugku Web 实战:PHP Assert 绕过与文件读取
    • 10 款 AI PPT 生成工具实测:从答辩到汇报的选型指南
    • 机器人标准 DH 与改进 DH 参数对比
    • Ubuntu 20.04 网络配置指南
    • Python 与 PyCharm 环境搭建实战指南
    • 人工智能入门:AI 核心概念速通教程
    • OpenClaw 配置 Nginx 反向代理及 HTTPS 安全接入指南
    • Phi-3-Vision-128K-Instruct 开源镜像:国产昇腾/寒武纪平台适配指南
    • AI 变现真相:为何掌握百种工具仍难盈利,核心在于商业认知
    • 基于 Higress 将 REST API 转换为 MCP Server 工具配置指南
    • 通义千问免费额度使用指南:Spring AI Alibaba 整合实战
    • EhViewer 安卓版安装与使用全攻略:开源漫画阅读器配置指南
    • MySQL 表的内连接与外连接
    • HeyGem.ai 开源 AI 数字人安装配置指南

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如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