LVS-DR群集

LVS-DR (Direct Routing, 直接路由) 是 Linux Virtual Server (LVS) 三种工作模式中性能最高、生产环境最常用 的四层负载均衡方案。它通过二层 MAC 地址改写实现请求分发,响应包直接由后端服务器返回客户端,彻底规避调度器带宽瓶颈。

一、核心原理与特点

核心思想请求进调度器,响应直连客户

  • 架构角色
    • Director (调度器):对外暴露 VIP,接收并分发请求。
    • Real Server (RS, 真实服务器):处理业务,直接响应客户端。
    • VIP (Virtual IP):集群统一入口 IP,Director 与所有 RS 共享。
  • 数据流向
    1. 客户端 → Director
      • 包:源 IP=CIP, 目标 IP=VIP, 目标 MAC=Director MAC
    2. Director → RS
      • 仅改写:源 MAC=Director, 目标 MAC = 选中 RS
      • IP 地址完全不变(CIP → VIP)
    3. RS 处理
      • RS 收到包,发现目标 IP 是本机 lo 上的 VIP,接收并处理。
    4. RS → 客户端
      • 响应包:源 IP=VIP, 目标 IP=CIP
      • 直接从 RS 物理网卡发出,不经过 Director
  • 关键特性
    • 同网段强制 :Director 与所有 RS 必须在同一物理二层网络(同一交换机)。
    • VIP 共享 :Director 配置在物理网卡,RS 配置在 lo 回环接口
    • ARP 抑制 :RS 必须禁止响应 VIP 的 ARP(arp_ignore=1, arp_announce=2),否则 IP 冲突。
    • 无端口映射:Director 与 RS 服务端口必须一致(如都 80)。
    • 性能最优 :仅二层转发,调度器无回传流量,支持10 万 + 并发

二、部署步骤(CentOS/RHEL)

环境示例

  • VIP:192.168.1.100
  • Director (DIP):192.168.1.10
  • RS1 (RIP):192.168.1.20
  • RS2 (RIP):192.168.1.21

1. Director 配置

1.1 安装工具

bash

运行

复制代码
systemctl stop firewalld
setenforce 0
modprobe ip_vs
yum install -y ipvsadm keepalived

1.2 配置 VIP

bash

运行

复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0

# 编辑 ifcfg-ens33:0
DEVICE=ens33:0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.255  # 关键:32位掩码
ONBOOT=yes

ifup ens33:0

1.3 配置 LVS 规则

bash

运行

复制代码
ipvsadm -C  # 清空
# 添加VIP服务(-s wrr=加权轮询)
ipvsadm -A -t 192.168.1.100:80 -s wrr
# 添加RS(-g=DR模式)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.21:80 -g -w 1

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm

1.4 内核参数(可选)

bash

运行

复制代码
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
sysctl -p

2. Real Server 配置(所有 RS 执行)

2.1 配置 VIP 到 lo

bash

运行

复制代码
# 临时生效
ip addr add 192.168.1.100/32 dev lo label lo:0
# 永久
echo "ip addr add 192.168.1.100/32 dev lo label lo:0" >> /etc/rc.local
chmod +x /etc/rc.local

2.2 强制 ARP 抑制(核心)

bash

运行

复制代码
vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2

sysctl -p
  • arp_ignore=1 :只响应目标 IP 是本机物理网卡的 ARP。
  • arp_announce=2:不宣告 lo 上的 VIP 到网络。

2.3 关闭路由转发

bash

运行

复制代码
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
sysctl -p

三、验证与管理

bash

运行

复制代码
# 查看规则
ipvsadm -Ln
# 查看连接状态
ipvsadm -Lnc
# 测试
curl http://192.168.1.100

四、优缺点

  • 优点
    • 性能最强:无回传流量,调度器无瓶颈。
    • 延迟低:二层转发,响应直连。
    • 配置清晰:RS 网关无需指向 Director。
  • 缺点
    • 不支持跨网段:Director 与 RS 必须同局域网。
    • 不支持端口映射:端口必须统一。
    • ARP 抑制必须正确,否则不通。

五、适用场景

  • 高并发 Web、API、游戏服务
  • 电商秒杀、直播、大流量入口
  • 追求极致性能的四层负载均衡

六、与 NAT 模式对比

表格

特性 LVS-DR LVS-NAT
转发层级 二层(MAC) 三层(IP)
回传流量 RS 直连 必须经 Director
性能 最高 中等(调度器瓶颈)
跨网段 ❌ 必须同网段 ✅ 支持跨网段
端口映射 ❌ 不支持 ✅ 支持
生产首选 ✅ 是 ❌ 较少
相关推荐
炸炸鱼.1 天前
LVS 负载均衡群集实战指南
运维·负载均衡·lvs
_下雨天.1 天前
LVS负载均衡
服务器·负载均衡·lvs
WangJunXiang62 天前
LVS 负载均衡群集
运维·负载均衡·lvs
百结2142 天前
LVS 负载均衡群集
运维·负载均衡·lvs
卤炖阑尾炎2 天前
从原理到实战:LVS 负载均衡集群全解析(OpenEuler 环境)
运维·负载均衡·lvs
gwjcloud8 天前
Lvs+Keepalived详解
运维·lvs
.柒宇.9 天前
构建 keepalived + LVS + Nginx + DNS + NFS 的高可用集群系统
运维·nginx·lvs
源远流长jerry9 天前
负载均衡概述
linux·运维·网络·架构·负载均衡·lvs
小宇的天下13 天前
Calibre LVS Circuit Comparison(1)
linux·数据库·lvs