LVS 负载均衡集群(DR 模式)

一、LVS-DR 模式核心原理

1.1. DR 模式工作原理

LVS-DR(Direct Routing)模式通过 数据链路层(MAC 层) 实现负载均衡,其核心特点是 请求流量经过 Director,响应流量由 Real Server 直接返回客户端,从而突破 Director 的带宽瓶颈。以下是详细工作流程:

1.1.1.数据包流向分解

客户端发起请求

  • 客户端发送 HTTP 请求到 VIP(Virtual IP),目标 MAC 地址为 Director 的 MAC。

  • 关键点:客户端通过 ARP 协议解析 VIP 对应的 MAC 地址,此时应由 Director 响应 ARP 请求。

Director 处理入站请求

  • Director 接收请求后,根据负载均衡算法(如 wrr、lc)选择一个 Real Server。

  • 修改数据帧

    • 保留原始 IP 包头(源 IP= 客户端 IP,目标 IP=VIP)。

    • 仅修改目标 MAC 地址为选中的 Real Server 的 MAC 地址。

  • 转发数据帧到选中的 Real Server。

Real Server 处理请求

  • Real Server 的网卡接收到目标 MAC 为本机的数据帧,检查目标 IP 是否为本地配置的 VIP:

    • 由于 VIP 绑定在 Real Server 的 lo 接口(回环接口),操作系统认为该 IP 属于本机,接收并处理请求。
  • 生成HTTP响应数据包:

    • 源 IP=VIP,目标 IP= 客户端 IP。

    • 直接通过默认网关(不经过 Director) 返回给客户端。

客户端接收响应

  • 客户端收到响应,认为数据来自 VIP(对后端拓扑无感知)。

1.1.2.关键特性与优势

  • 高性能:响应流量不经过 Director,避免回程流量成为瓶颈。

  • 低延迟:Real Server 直接与客户端通信,减少中间跳数。

  • 透明性:客户端仅感知 VIP,无需修改应用逻辑。

二、环境准备

硬件与网络拓扑

  • 架构图示例:Director + 多台 Real Server(同局域网)。

  • 网络要求:所有节点需在同一物理网络(不支持跨路由)。

软件依赖

  • Director:ipvsadm。

  • Real Server:Web服务(如 Nginx)、VIP 配置工具。

IP规划示例

  • VIP:192.168.67.200

  • Director IP:192.168.67.50

  • Real Server IP:

    • RS1:192.168.67.10

    • RS2:192.168.67.20

  • Router IP:

    • 内网:192.168.67.100

    • 外网:192.168.13.100

  • Client IP:192.168.67.200

三、详细配置步骤

3.1.配置环境 IP

IP 规划根据上图,Router 需要两块网卡,需要打开内核路由,实现通信。其他主机根据规划的 IP 配置,网关指向规定的位置。

Client 需要吧网络适配器改为仅主机模式,Router 需要增加一块仅主机模式的网络适配器。

各主机配置相应的 IP

Client 主机网关指向 Router 外网仅主机接口

Director 和 RS1/2 主机网关指向 Router 内网 NAT 接口

3.1.1.Client

bash 复制代码
# ens160 需要用 ip a 命令看自己主机的网卡名字进行设置
# Client 主机配置 IP
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.13.200/24 ipv4.gateway 192.168.13.100 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli connection up ens160

3.1.2.Router

bash 复制代码
# Router 主机配置 IP
ip addr add 192.168.67.100/24 dev ens192    # 新网卡添加 IP
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.67.100/24 ipv4.gateway 192.168.67.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli connection up ens160
​
# 打开内核路由,实现通信 
vim /etc/sysctl.conf
net.ipv4.ip_forward=1   # 12行改为=1
# 使内核参数更改立即生效
sysctl -p

3.1.3.Director

需要在 Director,RS1,RS2 主机的环回接口上都添加同样的 VIP,VIP 是一个 IP 地址,所以子网要是 /32

bash 复制代码
# Director 主机配置 IP
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.67.50/24 ipv4.gateway 192.168.67.100 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli connection up ens160
​
# 添加 VIP
ip addr add 192.168.67.200/32 dev lo

3.1.4.RS1

bash 复制代码
# RS1 主机配置 IP
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.67.10/24 ipv4.gateway 192.168.67.100 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli connection up ens160
​
# 添加 VIP
ip addr add 192.168.67.200/32 dev lo

3.1.5.RS2

bash 复制代码
# RS2 主机配置 IP
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.67.20/24 ipv4.gateway 192.168.67.100 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli connection up ens160
​
# 添加 VIP
ip addr add 192.168.67.200/32 dev lo

3.1.6.添加 Hosts 解析(可不做)

添加 Hosts 解析是为了让 Director 主机做的 LVS 策略能够快速保存 save,要做 Hosts 解析,每个主机都需要做。

bash 复制代码
echo >> /etc/hosts << EOF
192.168.13.200 client
192.168.13.100 router
192.168.67.100 router
192.168.67.50 director
192.168.67.10 rs1
192.168.67.20 rs2
EOF

3.2.配置服务

3.2.1.Real Server 节点配置 Nginx 服务

安装 Nginx 服务,配置 Nginx

bash 复制代码
yum install nginx -y
# 为便于查看结果,在 RS1 和 RS2 上设置不同的 Nginx 访问界面
echo rs1 - 192.168.67.10 > /usr/share/nginx/html/index.html   # RS1
echo rs1 - 192.168.67.10 > /usr/share/nginx/html/index.html   # RS2
systemctl enable --now nginx  # 开启 Nginx 服务

3.2.2. Real Server 节点配置 ARP 抑制

原理

① ARP 问题的根源

在 DR 模式中,Director 和所有 Real Server 都配置了相同的 VIP。若未做特殊处理,会导致以下问题:

ARP 响应冲突

  • 当客户端广播 ARP 请求解析 VIP 的 MAC 地址时,Director 和所有 Real Server 都可能响应,导致客户端记录的 VIP MAC 地址不稳定。

数据包环路

  • Real Server 可能直接收到目标 MAC 为本机的客户端请求(绕过 Director),破坏负载均衡逻辑。

② ARP 抑制的解决方案

通过调整 Linux 内核的 ARP 响应行为,确保:

  • 只有 Director 响应 VIP 的 ARP 请求

  • Real Server 忽略针对 VIP 的 ARP 请求,仅在处理本机服务时使用 VIP。

内核参数 作用 推荐值(DR模式)
arp_ignore 控制是否响应 ARP 请求的条件: 1
arp_announce 控制 ARP 通告(宣告)的 IP 地址选择策略: 2

arp_ignore 详解

  • 定义:控制是否响应 ARP 请求的严格级别。

  • 关键值说明

    • 0(默认):只要本地任意接口有该 IP,就响应 ARP 请求。

    • 1:仅在 ARP 请求的目标 IP 配置在接收 ARP 请求的接口上时,才响应。

DR 模式配置逻辑

  • 将 VIP 绑定在 Real Server 的 lo 接口(非物理接口)。

  • 设置 arp_ignore=1,使得当物理接口(如eth0)收到针对 VIP 的 ARP 请求时,因 VIP 不在该接口上,Real Server 不响应。

  • 只有 Director 的 lo 接口配置 VIP,正常响应 ARP 请求。

arp_announce 详解

  • 定义:控制发送 ARP 通告时使用的源 IP 地址选择策略。

  • 关键值说明

    • 0(默认):允许使用任意本地接口的 IP 作为 ARP 通告的源 IP。

    • 2:优先选择与目标 IP 在同一子网的本地接口 IP,且避免使用非本地主 IP。

DR 模式配置逻辑

  • 设置 arp_announce=2,防止 Real Server 在发送 ARP 通告或响应时,错误地使用 VIP 作为源 IP。

  • 确保 Real Server 的物理接口仅通告其真实 IP,而非 VIP。

配置
bash 复制代码
# RS1 和 RS2 都需要设置
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 

ARP 抑制永久生效(可不做)

bash 复制代码
echo >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
EOF
​
# sysctl -p 设定
sysctl -p

3.2.3.Director 节点配置 LVS 服务

安装 ipvsadm 服务,配置策略

bash 复制代码
yum install ipvsadm -y
​
ipvsadm -A -t 192.168.67.200:80 -s wrr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.10:80 -g -w 1
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.20:80 -g -w 2
ipvsadm -Ln

四、测试(Client 访问)

测试结果:本次测试成功验证了 LVS 加权轮询算法的准确性与权重配置的有效性,表明集群能够按预设比例(1:2)合理分配请求负载。

总结

  • DR 模式适用场景

    • 高性能 Web 服务、对延迟敏感的业务。
  • 优缺点总结

    • 优点:吞吐量高、响应速度快。

    • 缺点:配置复杂、需同局域网。

相关推荐
鸡鸭扣1 小时前
Docker:3、在VSCode上安装并运行python程序或JavaScript程序
运维·vscode·python·docker·容器·js
A ?Charis2 小时前
k8s-对接NFS存储
linux·服务器·kubernetes
饮长安千年月2 小时前
Linksys WRT54G路由器溢出漏洞分析–运行环境修复
网络·物联网·学习·安全·机器学习
是小崔啊3 小时前
java网络编程02 - HTTP、HTTPS详解
java·网络·http
人工干智能4 小时前
科普:“Docker Desktop”和“Docker”以及“WSL”
运维·docker·容器
落笔画忧愁e4 小时前
FastGPT及大模型API(Docker)私有化部署指南
运维·docker·容器
前端郭德纲4 小时前
前端自动化部署的极简方案
运维·前端·自动化
车载诊断技术5 小时前
电子电气架构 --- 电子电器新技术及发展趋势
网络·架构·汽车·电子电器框架·车载充电器(obc)·电子电器新技术及发展趋势
卷心菜不卷Iris5 小时前
第1章大型互联网公司的基础架构——1.6 RPC服务
网络·网络协议·微服务·rpc·http协议·rpc协议
DC_BLOG5 小时前
Linux-GlusterFS进阶配置
linux·运维·服务器