LVS三种负载均衡模式详解
LVS(Linux Virtual Server)有三种工作模式:DR模式(直接路由) 、NAT模式(网络地址转换) 和 TUN模式(IP隧道) 。下面结合你提供的图片,详细解析每种模式的工作原理、优缺点和配置要点。
一、DR模式(Direct Routing,直接路由)
1.1 工作原理图示
User
│
▼
Internet/Intranet
│
▼
Requests ──► LinuxDirector (VIP)
│
▼
Internal Network (同一物理网段)
│
├──► Real Server 1 (绑定VIP到lo接口)
├──► Real Server 2 (绑定VIP到lo接口)
└──► Real Server n (绑定VIP到lo接口)
1.2 数据流转过程
用户请求 ──► 调度器(LB) ──► 修改MAC地址 ──► Real Server
│
▼
直接响应给用户
(不经过LB)
1.3 详细工作原理
步骤 操作 说明 1 用户请求到达VIP 请求包目标IP=VIP,目标MAC=LB的MAC 2 LB修改MAC地址 将目标MAC改为选中的Real Server的MAC 3 转发给Real Server 通过交换机直接发送到Real Server 4 Real Server处理请求 由于绑定了VIP,认为自己是目标 5 直接返回给用户 响应包源IP=VIP,直接通过网关发给用户
1.4 DR模式小结
特性 说明 核心机制 通过修改数据包的目的MAC地址实现转发 数据包变化 源IP不变,目的IP不变(仍是VIP),只改MAC 响应路径 请求经过LB,响应直接返回用户(不经过LB) 性能 最高 ,适合大并发场景网络要求 所有RS和LB必须在同一物理网段 RS配置要求 需要在lo接口绑定VIP,并配置ARP抑制 端口要求 RS必须使用和VIP相同的端口提供服务 网关配置 RS的默认网关指向上级路由,不是LB
1.5 ARP抑制配置示例
# 在Real Server上执行
echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p
# 在lo接口绑定VIP
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
二、NAT模式(Network Address Translation,网络地址转换)
2.1 工作原理图示
User
│
▼
Internet/Intranet
│
▼
1) Requests ──► Load Balancer (VIP)
│
▼
2) Scheduling & rewriting packets
│
▼
Switch/Hub
│
├──► Real Server 1 (网关指向LB)
├──► Real Server 2 (网关指向LB)
└──► Real Server n (网关指向LB)
│
▼
4) Rewriting replies
│
▼
5) Replies ──► User
2.2 数据流转过程
用户请求 ──► LB(公网IP) ──► 修改目的IP为RS ──► Real Server
│
▼
RS处理完成 ──► 返回给LB ──► 修改源IP为VIP ──► 用户
2.3 详细工作原理
步骤 方向 操作 说明 1 请求 用户访问VIP 请求包目标IP=VIP(公网) 2 请求 LB修改目的IP 将目标IP改为选中的Real Server的内网IP 3 请求 LB转发给RS 通过内网发送给RS 4 响应 RS处理请求 RS处理完成后返回给LB 5 响应 LB修改源IP 将源IP改为VIP,返回给用户
2.4 NAT模式优缺点
优点 缺点 ✅ LB和RS可以不在同一网段 ❌ 响应也经过LB ,LB易成瓶颈 ✅ 只需要LB配置公网IP ❌ 节点数量受限(通常10-20台) ✅ 支持端口转换 ❌ RS的网关必须指向LB ✅ RS可使用任何操作系统 ❌ 性能比DR模式低
2.5 NAT模式配置要点
# LB上开启IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# RS配置
# 所有RS的默认网关必须指向LB的内网IP
route add default gw 192.168.1.100
三、FULL NAT模式
3.1 与NAT模式的区别
对比项 NAT模式 FULL NAT模式 请求处理 只修改目的IP 修改源IP和目的IP 响应处理 只修改源IP 修改源IP和目的IP 性能 基准 下降10%左右 网络要求 RS网关指向LB RS和LB可跨网段
3.2 FULL NAT工作原理
请求:Client(1.1.1.1) ──► LB(VIP)
└─► LB修改源IP为自己,目的IP为RS
响应:RS ──► LB
└─► LB修改源IP为VIP,目的IP为Client
四、TUN模式(IP Tunneling,IP隧道)
4.1 工作原理图示
User
│
▼
Internet/Intranet
│
▼
Requests ──► Load Balancer
│
▼
IP Tunnel封装
│
▼
Real Server 1 (绑定VIP) ──► 直接响应给用户
Real Server 2 (绑定VIP) ──► 直接响应给用户
Real Server n (绑定VIP) ──► 直接响应给用户
4.2 数据流转过程
用户请求 ──► LB ──► IP隧道封装 ──► Real Server
│
▼
解开隧道封装
│
▼
处理请求并直接返回给用户
4.3 详细工作原理
步骤 操作 说明 1 用户请求到达LB 请求包目标IP=VIP 2 LB封装新IP头 将原包封装在新IP包中,目标IP为RS 3 通过隧道发送 可以是内网或外网传输 4 RS解封装 去掉外层IP头,看到原始请求 5 RS处理并响应 直接返回给用户(不经过LB)
4.4 TUN模式注意事项
特性 说明 RS要求 所有Real Server必须绑定VIP 网络要求 LB和RS可以跨网段,甚至跨机房 通信方式 通过IP隧道传输,内网外网均可 响应路径 RS直接响应给用户,不经过LB 运维难度 较高 ,隧道配置复杂使用频率 较少使用 ,一般用DR替代
4.5 TUN模式配置示例
# RS上绑定VIP
ifconfig tunl0 192.168.1.100 netmask 255.255.255.255 up
# 配置ARP抑制(同DR模式)
echo "net.ipv4.conf.tunl0.arp_ignore = 1" >> /etc/sysctl.conf
五、三种模式对比总结
对比项 DR模式 NAT模式 TUN模式 性能 ⭐⭐⭐⭐⭐ 最高 ⭐⭐ 较低 ⭐⭐⭐⭐ 高 响应路径 直接返回用户 经过LB返回 直接返回用户 LB和RS网络 同一网段 可不同网段 可不同网段 RS数量 100+ 10-20 100+ RS绑定VIP 需要 不需要 需要 ARP抑制 需要 不需要 需要 端口转换 不支持 支持 不支持 RS操作系统 支持Linux 几乎全部 支持隧道即可 配置复杂度 中等 简单 复杂 使用频率 最常用 较常用 很少用
六、选择建议
场景 推荐模式 原因 同机房、高性能需求 DR模式 性能最好,配置相对简单 跨网段、RS分布广 TUN模式 可通过隧道跨机房调度 RS使用Windows NAT模式 Windows不支持绑定VIP和隧道 小规模集群 NAT模式 配置简单,足够使用 需要端口转换 NAT模式 DR和TUN不支持端口转换
一句话总结 :
DR模式 :性能最好,用得最多
NAT模式 :通用性强,支持端口转换
TUN模式 :可跨机房,但配置复杂
发表回复