LVS 负载均衡核心原理深度剖析:从 NAT 到 DR 模式详解

LVS 负载均衡核心原理深度剖析:从 NAT 到 DR 模式详解

前言

在构建高并发、高可用的互联网架构时,LVS (Linux Virtual Server) 是绕不开的核心组件。作为一款运行在 Linux 内核层(Layer 4)的负载均衡软件,它以极其强悍的性能著称。

很多初学者能照着文档部署 LVS,但在排错或架构选型时往往因为不懂底层原理而"踩坑"。本文将通俗易懂地拆解 LVS 的四大核心模式(NAT、TUN、DR、FULLNAT),并深入剖析数据包在网络层与链路层的流向。


一、 核心术语(必读)

在深入原理之前,必须统一以下四个核心角色的代号,这是理解 LVS 流量走向的基石:

  • CIP (Client IP):客户端 IP,即发起请求的用户 IP。
  • VIP (Virtual IP):虚拟 IP,直接面向公网,用户访问的"门面" IP。
  • DIP (Director IP):负载均衡器(LB)内部用于和后端服务器通信的 IP。
  • RIP (Real IP):后端真实服务器(Real Server)的 IP。

二、 LVS-NAT 模式 (Network Address Translation)

1. 核心概念

NAT 模式类似于家庭路由器的工作方式。LVS 充当了网关的角色,所有入站请求和出站响应都必须经过 LVS

  • 生活类比: 传达室大爷。信件寄给"公司(VIP)",大爷把收件人改成"员工张三(RIP)"转交。张三回信时,必须先给大爷,大爷把发件人改成"公司",再寄给客户。

2. 数据包流向

  1. 入站 (CIP -> VIP): 客户端请求到达 LVS。LVS 通过 DNAT (目标地址转换),将目标 IP 从 VIP 修改为 RIP
  2. 转发 (CIP -> RIP): LVS 将修改后的包发给后端服务器。
  3. 处理: 后端服务器处理请求。关键点: 后端服务器的网关必须指向 LVS 的 DIP,否则回包无法送达 LVS。
  4. 出站 (RIP -> CIP): 后端服务器回包给 LVS。
  5. 回复 (VIP -> CIP): LVS 收到回包,通过 SNAT (源地址转换),将源 IP 从 RIP 修改回 VIP,最终发给客户端。

3. 优缺点分析

  • 优点: 配置简单,支持端口映射(后端端口可与 VIP 端口不同)。
  • 缺点: 性能瓶颈明显。由于请求和响应流量都经过 LVS,而响应包(如视频、图片)通常很大,LVS 网卡容易被打满。

三、 LVS-TUN 模式 (IP Tunneling)

1. 核心概念

TUN 模式主要用于异地容灾。LVS 不修改原数据包,而是将原数据包"封装"在新的 IP 包中,通过隧道传给异地服务器。

  • 生活类比: 俄罗斯套娃。LVS 收到信后,不拆信,而是把整个信封塞进一个写着"上海分公司"的大信封里寄出。上海分公司拆开大信封,处理完内部的信件后,直接按原地址回复客户。

2. 数据包流向

  1. 入站 (CIP -> VIP): 请求到达 LVS。
  2. 封装: LVS 在原数据包外层再封装一层 IP 头(源是 DIP,目标是 RIP),形成 IPIP 隧道包。
  3. 解封: 后端服务器收到包,剥离外层 IP 头,露出里面的 CIP -> VIP
  4. 直连返回 (VIP -> CIP): 后端服务器处理完毕,直接通过自己的公网网关将响应发回给客户端,不再经过 LVS。

3. 优缺点分析

  • 优点: 实现了跨机房负载均衡;回包不经过 LVS,性能较高。
  • 缺点: 所有后端服务器必须支持隧道协议,且需要配置公网 IP 或能独立上网,网络维护复杂。

四、 LVS-DR 模式 (Direct Routing) ------ 生产环境首选

1. 核心概念

DR 模式是性能最强的模式。LVS 在这里不做 IP 转换,而是玩弄"链路层魔法"------修改 MAC 地址

  • 生活类比: 导游与游客。游客找"导游(VIP)",LVS 仅仅是指路人,他把游客直接领到"景点(RIP)"门口,却告诉游客"这就是导游"。景点接待完游客后,游客直接自行离开。

2. 数据包流向 (重点)

假设 LVS 与后端服务器在同一局域网:

  1. 入站 (CIP -> VIP): 客户端请求到达 LVS。
  2. MAC 欺骗: LVS 不修改 IP 地址 (包里依然是 CIP->VIP),只修改数据链路层的目标 MAC 地址,将其改为后端服务器的 MAC 地址。
  3. 接收: 后端服务器收到包,拆开链路层,发现目标 IP 是 VIP。
    • 关键技术: 后端服务器必须在环回接口 (lo) 上绑定 VIP,否则它会认为"这不是给我的包"而丢弃。
  4. 直连返回 (VIP -> CIP): 后端服务器处理完,直接通过本地网关回包给客户端。

3. 核心难点:ARP 抑制

在 DR 模式下,LVS 和所有后端服务器都绑定了 VIP。

  • 问题: 当路由器广播询问"谁是 VIP?"时,后端服务器和 LVS 都会抢答,导致流量混乱。
  • 解决: 必须调整后端 Linux 内核参数 (arp_ignore, arp_announce),让后端服务器对 VIP 的 ARP 请求"保持沉默",只有 LVS 响应。

4. 优缺点分析

  • 优点: 性能极致。LVS 只处理入站的小流量请求,出站的大流量直接由后端分担,一台 LVS 可抗住极高的并发。
  • 缺点: 灵活性较差,LVS 和后端服务器必须在同一个二层网络(同一 VLAN/交换机)。

五、 LVS-FULLNAT 模式

1. 核心概念

为了解决 NAT 模式性能差、DR 模式跨网段难的问题,出现了 FULLNAT(全地址转换)。

2. 数据包流向

  1. 入站: LVS 将目标 IP 改为 RIP,同时将源 IP 改为 DIP
  2. 处理: 后端服务器看到的请求来自 DIP,处理后回包给 DIP。
  3. 出站: LVS 收到回包,将源/目 IP 再次转换回 VIP/CIP。

3. 优缺点分析

  • 优点: LVS 和后端服务器可以跨 VLAN 部署,网络架构极其灵活。
  • 缺点: 性能不如 DR;后端服务器丢失了真实的客户端 IP(CIP),需要通过 TOA (TCP Option Address) 内核模块来获取真实 IP。

六、 总结与选型指南

在实际架构设计中,如何选择?请参考下表:

模式 核心原理 性能 响应路径 适用场景
NAT 修改目标 IP (DNAT) ⭐⭐ 必须经过 LVS 小规模集群,业务流量小
TUN IP 隧道封装 ⭐⭐⭐ 直接返回用户 跨机房、异地容灾
DR 修改 MAC 地址 ⭐⭐⭐⭐⭐ 直接返回用户 中大型互联网公司核心流量入口
FULLNAT 双向 NAT (SNAT+DNAT) ⭐⭐ 必须经过 LVS 复杂的云环境、跨 VLAN 环境

结论:

  • 绝大多数互联网公司的流量入口(HTTP/HTTPS)首选 LVS-DR 模式,配合 Keepalived 实现高可用。
  • 如果你的网络环境复杂,无法保证 LVS 和后端在同一二层网络,考虑 FULLNAT(需注意获取真实 IP 问题)。
相关推荐
三花猫咪2 小时前
UBUNTU串口打印终端,X86主机变开发板
linux·运维·嵌入式硬件·ubuntu
HalvmånEver2 小时前
Linux:深入剖析 System V IPC上(进程间通信八)
linux·运维·数据库·c++·system v·管道pipe
EndingCoder2 小时前
泛型类和高级用法
linux·运维·前端·ubuntu·typescript
Filotimo_2 小时前
在前端开发中,Jenkins 的作用
运维·jenkins
济6172 小时前
linux(第十五期)--蜂鸣器实验-- Ubuntu20.04
linux·运维·服务器
JANGHIGH2 小时前
ipcs命令行工具
运维·服务器
A-刘晨阳2 小时前
【云原生】Prometheus之PromQL用法详解
运维·云原生·grafana·prometheus·监控·promql
Run_Teenage2 小时前
Linux:硬链接与软链接
linux·运维·服务器
每日出拳老爷子2 小时前
【浏览器方案】只用浏览器访问的内网会议系统设计思路(无客户端)
运维·服务器·webrtc·实时音视频·流媒体