LVS三种模式及原理

LVS 的三种模式(NAT、DR、TUN)在流量路径、转发机制、网络限制、性能等方面有显著区别,以下是核心差异对比:

对比项 NAT 模式(网络地址地址转换) DR 模式(直接路由) TUN 模式(IP 隧道)
核心转发原理 双向修改 IP 地址:- 请求阶段:目标 IP 从 VIP 改为 RS 内网 IP- 响应阶段:源 IP 从 RS 内网 IP 改为 VIP 修改 MAC 地址:- 仅将请求包的目标 MAC 改为 RS 的 MAC,IP 不变(仍为 VIP) IP 隧道封装:- 请求包被封装在新 IP 包中(外层目标 IP 为 RS 隧道 IP),内层保留 VIP
流量路径 所有流量(请求 + 响应)必须经过 LVS 仅请求经过 LVS,响应由 RS 直接返回客户端 仅请求经过 LVS,响应由 RS 直接返回客户端
网段限制 无限制(LVS 与 RS 可跨网段) 必须同网段(LVS 与 RS 需二层互通) 无限制(支持跨网段,通过隧道通信)
LVS 角色 流量唯一出入口(瓶颈) 仅转发请求,不处理响应 仅转发请求,不处理响应
RS 配置要求 简单:只需将网关指向 LVS 内网 IP 复杂:- lo 接口绑定 VIP(/32 掩码)- 关闭 ARP 响应(避免 VIP 冲突) 复杂:- 绑定 VIP- 支持 GRE 隧道协议
性能 低(LVS 处理所有流量,易成为瓶颈) 极高(LVS 仅处理请求,响应直连客户端) 高(略低于 DR,因隧道封装消耗少量资源)
支持 RS 数量 少(通常 10-20 台) 多(数百台,受限于二层网络规模) 多(支持跨机房大规模集群)
适用场景 小规模网络、低成本内部服务(如测试环境) 高并发、同网段部署(如电商、门户网站) 跨网段 / 跨机房的分布式集群

一句话总结核心差异:

  • NAT 模式:靠改 IP 地址转发,所有流量走 LVS,简单但性能低;
  • DR 模式:靠改 MAC 地址转发,响应不经过 LVS,性能高但需同网段;
  • TUN 模式:靠隧道封装转发,支持跨网段,性能接近 DR 但配置复杂。

实际生产中,DR 模式因高性能成为主流,NAT 适合入门测试,TUN 用于跨网段特殊场景。

TUN模式:-i

LVS: VIP:192.168.146.100 DIP:192.168.146.200

RS1: VIP:192.168.146.100 RIP:192.168.146.101

RS2: VIP:192.168.146.100 RIP:192.168.101

原理:

LVS NAT 模式工作原理简化版:

  1. 用户请求发到负载均衡器(Director)的 VIP
  2. 负载均衡器把请求的目标地址换成某台真实服务器(RS)的地址,转发过去
  3. 真实服务器处理后,把结果返回给负载均衡器
  4. 负载均衡器把结果的源地址换成 VIP,再发给用户

LVS TUN 模式简化原理:

  1. 客户端请求发到负载均衡器(Director)的 VIP
  2. 负载均衡器不在修改原请求,只是给它套个新 "信封"(外层 IP:负载均衡器内网 IP→真实服务器隧道 IP)
  3. 真实服务器收到后,拆掉外层 "信封",发现里面是发给自己 lo 接口 VIP 的请求,开始处理
  4. 处理完后,直接从自身网卡发响应,源 IP 是 VIP,目标 IP 是客户端

客户端请求

  1. 客户端发送请求:客户端(CIP)向调度器(DIP)发送请求报文,报文的源IP为CIP,目标IP为VIP。

  2. 调度器封装报文:调度器接收到请求后,在原有报文的IP首部(CIP-VIP)外再封装一层IP首部(DIP-RIP),然后将封装后的报文发送给真实服务器(RS)。

真实服务器处理

  1. 真实服务器接收报文:RS收到封装后的报文,发现最外层的目标IP是自己的IP(RIP),于是接收该报文。

  2. 拆除封装并处理请求:RS拆除最外层的IP封装(DIP-RIP),发现内层报文的目标IP是自己的lo接口VIP,于是开始处理请求。

响应客户端

  1. 真实服务器响应:RS处理完请求后,通过lo接口将响应报文发送到ens33网卡,然后直接返回给客户端。此时响应报文的源IP为VIP,目标IP为CIP。

LVS DR 模式简化原理:

  1. 客户端请求发到负载均衡器的 VIP
  2. 负载均衡器只改请求的 MAC 地址(换成某台真实服务器的 MAC),IP 地址不变
  3. 真实服务器收到后直接处理,响应不经过负载均衡器,直接返回客户端
相关推荐
Yyyy4822 小时前
LVS、Nginx、HAProxy 的区别
运维·nginx·lvs
七夜zippoe2 小时前
微服务配置中心高可用设计:从踩坑到落地的实战指南(二)
微服务·架构·php
苏琢玉3 小时前
作为 PHP 开发者,我第一次用 Go 写了个桌面应用
node.js·go·php
JaguarJack3 小时前
PHP 8.2 vs PHP 8.3 对比:新功能、性能提升和迁移技巧
后端·php
ZeroNews内网穿透4 小时前
新版发布!“零讯”微信小程序版本更新
运维·服务器·网络·python·安全·微信小程序·小程序
<但凡.4 小时前
Linux 修炼:进程控制(一)
linux·运维·服务器·bash
✎﹏赤子·墨筱晗♪5 小时前
Ansible Playbook 入门指南:从基础到实战
linux·服务器·ansible
catchadmin6 小时前
PHP 快速集成 ChatGPT 用 AI 让你的应用更聪明
人工智能·后端·chatgpt·php
tritone12 小时前
我在阿贝云免费服务器上搭建RustDesk自建服务器(Self-Hosting)的真实体验【推荐】
运维·服务器