12.5.2 工作模式与转发机制对比(NAT/DR/TUN)
本节聚焦LVS三种工作模式的核心机制与适用场景,对比转发路径、网络要求与运维要点,并给出可执行示例、安装与排错思路,便于在Keepalived集成时做出合理选择。
工作模式概述#
LVS通过调度器(Director)将客户端请求转发至后端Real Server,三种模式的差异主要体现在数据包的目的/源地址是否改写、回包路径是否经过调度器、对网络拓扑与服务器配置的要求。
安装与基础命令
# CentOS/RHEL
yum -y install ipvsadm keepalived
# Debian/Ubuntu
apt-get update && apt-get -y install ipvsadm keepalived
# 查看LVS规则与统计
ipvsadm -Ln --stats
NAT模式(LVS-NAT)#
转发机制
- 入站:客户端 → 调度器(DNAT改写目标地址为RS)
- 出站:RS → 调度器(SNAT改写源地址为VIP) → 客户端
- 双向流量都经过调度器
sequenceDiagram
participant C as Client
participant D as Director
participant R as RealServer
C->>D: 请求VIP
D->>R: DNAT到RS
R->>D: 回包经Director
D->>C: SNAT回客户端
示例:NAT模式最小可用配置
- 目标:VIP 10.0.0.100,RS为 10.0.0.11/12,调度器 10.0.0.10
# 调度器:开启转发
sysctl -w net.ipv4.ip_forward=1
# 调度器:创建LVS服务(TCP/80)
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.11:80 -m
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.12:80 -m
# 解释:
# -A 新建虚拟服务;-t TCP;-s rr 轮询算法
# -a 添加RS;-m NAT模式(masq)
# RS:网关指向调度器(必须)
ip route add default via 10.0.0.10
优点/缺点/适用场景
- 优点:部署简单、RS无需公网IP
- 缺点:双向转发瓶颈、调度器压力大
- 适用:中小规模、改造成本低
常见排错
# 调度器不转发
sysctl net.ipv4.ip_forward
# RS回包丢失(网关错误)
ip route | head
# LVS规则是否生效
ipvsadm -Ln --stats
DR模式(LVS-DR)#
转发机制
- 入站:客户端 → 调度器(改写目标MAC转发,IP不变) → RS
- 出站:RS → 客户端(直接回包)
sequenceDiagram
participant C as Client
participant D as Director
participant R as RealServer
C->>D: 请求VIP
D->>R: 改写MAC转发
R->>C: 直接回包
关键要求
- VIP需配置在调度器与所有RS上(RS为隐藏/别名)
- ARP抑制:避免RS响应VIP ARP
- 调度器与RS同一二层网络
示例:DR模式最小可用配置
# 调度器:创建LVS服务(DR模式)
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.11:80 -g
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.12:80 -g
# -g 表示DR模式(gatewaying)
# RS:配置VIP到lo并抑制ARP(以eth0为例)
ip addr add 10.0.0.100/32 dev lo
cat >/etc/sysctl.d/lvs_dr.conf <<'EOF'
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
EOF
sysctl -p /etc/sysctl.d/lvs_dr.conf
优点/缺点/适用场景
- 优点:调度器仅处理入站,高性能
- 缺点:同二层要求、ARP配置复杂
- 适用:数据中心内网、高并发Web/缓存
常见排错
# ARP冲突检查
arp -an | grep 10.0.0.100
# RS是否配置VIP
ip addr show lo | grep 10.0.0.100
# 调度器收包但RS不回包
tcpdump -i eth0 host 10.0.0.100
TUN模式(LVS-TUN)#
转发机制
- 入站:客户端 → 调度器(IP隧道封装) → RS(解封装处理)
- 出站:RS → 客户端(直接回包)
sequenceDiagram
participant C as Client
participant D as Director
participant R as RealServer
C->>D: 请求VIP
D->>R: IPIP封装转发
R->>C: 直接回包
关键要求
- RS支持IPIP隧道
- RS可跨三层网络,不要求同二层
示例:TUN模式最小可用配置
# 调度器:创建TUN服务
ipvsadm -A -t 10.0.0.100:80 -s rr
ipvsadm -a -t 10.0.0.100:80 -r 10.0.1.11:80 -i
ipvsadm -a -t 10.0.0.100:80 -r 10.0.2.12:80 -i
# -i 表示TUN模式(IPIP)
# RS:加载ipip并配置VIP
modprobe ipip
ip addr add 10.0.0.100/32 dev tunl0
ip link set tunl0 up
优点/缺点/适用场景
- 优点:性能接近DR,可跨网段
- 缺点:配置复杂,隧道有开销
- 适用:跨网段/异地高性能集群
常见排错
# ipip模块是否加载
lsmod | grep ipip
# 隧道接口状态
ip link show tunl0
# 抓包验证封装
tcpdump -i eth0 proto 4
模式对比总结#
- 性能:DR ≈ TUN > NAT
- 部署复杂度:NAT < DR < TUN
- 网络要求:NAT(最宽松) / DR(同二层) / TUN(需隧道)
- 回包路径:NAT经调度器;DR/TUN直接回客户端
- 扩展性:DR/TUN更适合大规模集群
选型建议#
- 快速落地、规模较小:优先NAT
- 同机房高并发服务:优先DR
- 跨网段/多机房:优先TUN
实战练习#
- 使用NAT模式部署2台RS的HTTP服务,访问VIP验证轮询效果,记录
ipvsadm -Ln --stats结果。 - 将模式切换为DR,完成ARP抑制配置,使用
tcpdump验证回包不经过调度器。 - 在跨网段环境构建TUN模式,检查
proto 4封装流量并截图保存。