一、LVS-DR 核心知识点补充
1. 什么是 LVS-DR
LVS-DR(Linux Virtual Server - Direct Routing,直接路由模式)是生产环境最常用 的 LVS 工作模式,通过二层 MAC 地址改写实现流量分发,响应流量直接由后端 Real Server 返回客户端,不经过调度器,性能极高、延迟极低。
2. LVS-DR 关键特性
- 调度器与后端节点必须在同一物理网段
- 仅请求流量经过调度器,响应流量直连客户端
- 调度器与后端节点共用同一个 VIP
- 后端节点网关不能指向调度器
- 通过
arp_ignore/arp_announce避免 VIP 的 ARP 冲突
3. 核心参数说明
arp_ignore=1:仅响应目标 IP 为本网卡物理 IP的 ARP 请求,拒绝 VIP 的 ARP 请求arp_announce=2:发送 ARP 时仅使用物理网卡主 IP,不使用 VIPsend_redirects=0:关闭 ICMP 重定向,防止调度器发送错误路由信息-g:ipvsadm 指定 DR 模式;-s rr:轮询调度算法
一、实验环境说明
- LVS 调度器(Director):192.168.10.101
- Web 节点服务器 1(Real Server):192.168.10.102
- Web 节点服务器 2(Real Server):192.168.10.103
- 虚拟 IP(VIP):192.168.10.172
- 工作模式:DR(直接路由)
- 调度算法:rr(轮询)
- 对外服务:HTTP 80 端口
二、所有节点统一初始化操作(调度器 + Web 节点均执行)
bash
运行
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
📘 知识点LVS-DR 依赖二层网络通信与 ARP 协议,防火墙会拦截转发报文,SELinux 会限制内核参数修改,实验环境必须关闭,保障集群正常通信。
三、LVS 调度器(Director)配置
1. 配置虚拟 IP(VIP)
bash
运行
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
写入配置内容:
plaintext
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.172
NETMASK=255.255.255.0
bash
运行
nmcli connection reload
nmcli connection up ens33
📘 知识点
- VIP 是集群对外统一访问入口,采用子接口 ens33:0 配置,不影响主网卡。
- DR 模式核心要求:调度器与所有后端节点必须配置同一个 VIP。
2. 关闭内核重定向报文
bash
运行
vim /etc/sysctl.conf
末尾添加参数:
plaintext
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
bash
运行
sysctl -p
📘 知识点
- 内核默认会发送重定向报文,导致数据包路由紊乱,无法正常转发。
- DR 模式下调度器仅负责转发请求,禁止发送重定向报文,保障流量路径稳定。
3. 安装 ipvsadm 并配置负载均衡策略
bash
运行
yum -y install ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.10.172:80 -s rr
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
ipvsadm-save
systemctl enable ipvsadm
systemctl start ipvsadm
📘 知识点
ipvsadm:LVS 核心管理工具,负责定义集群规则、分发流量。- 参数解释:
-A:添加虚拟服务-t:指定 TCP 协议服务-s rr:采用轮询调度算法-a:添加后端真实服务器-r:指定后端服务器 IP-g:启用 DR 直接路由模式-w 1:设置服务器权重为 1
- DR 模式仅修改数据包目标 MAC 地址,不修改 IP 地址,转发效率极高。
4. 查看 LVS 集群状态
bash
运行
ipvsadm -ln
📘 知识点可查看虚拟服务、后端节点、转发模式(Route 代表 DR 模式)、连接数等信息,验证规则是否生效。
四、Web 节点服务器配置(两台节点均执行)
1. 回环接口配置 VIP 与本地路由
bash
运行
# 临时配置 VIP(重启失效)
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
# 永久配置(写入开机自启脚本)
vim /etc/rc.local
添加内容:
plaintext
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
bash
运行
chmod +x /etc/rc.local
📘 知识点
- VIP 配置在 lo 回环接口,不会对外广播,避免 IP 冲突。
- 本地路由确保访问 VIP 的报文仅在本机内部处理,防止路由紊乱。
/etc/rc.local需添加执行权限,否则重启后配置失效。
2. 调整 ARP 内核参数(DR 模式核心)
bash
运行
vim /etc/sysctl.conf
添加参数:
plaintext
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
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
bash
运行
sysctl -p
📘 知识点
arp_ignore=1:仅当请求 IP 属于当前网卡时,才响应 ARP 请求。arp_announce=2:发送 ARP 报文时,仅使用物理网卡主 IP,不使用 VIP。- 核心作用:禁止后端节点抢占 VIP,保证只有调度器响应 VIP 的 ARP 请求。
3. 安装 HTTP 服务并创建测试页面
bash
运行
yum -y install httpd
# Web 节点 1 执行
echo "<h1>LVS-DR Web Server 01 -- 192.168.10.102</h1>" > /var/www/html/index.html
# Web 节点 2 执行
echo "<h1>LVS-DR Web Server 02 -- 192.168.10.103</h1>" > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
📘 知识点
- 后端节点提供真实 Web 服务,处理客户端请求。
- DR 模式下,响应报文直接返回给客户端,不经过调度器,大幅降低调度器压力。
五、客户端测试集群
bash
运行
# 单次访问
curl http://192.168.10.172
# 循环 10 次访问,验证负载均衡
for i in $(seq 10); do curl http://192.168.10.172; done
📘 知识点
- 频繁刷新或循环访问,页面会交替显示两台 Web 节点内容,说明轮询调度生效。
- 若仅显示一台节点内容,需检查 ARP 参数、ipvsadm 规则、防火墙状态。
六、LVS-DR 核心知识总结
- 工作原理:请求流量经调度器转发,响应流量由后端节点直接返回客户端,调度器仅修改 MAC 地址。
- 模式优势:性能远高于 NAT 模式,适合高并发、大流量 Web 服务,生产环境首选。
- 部署前提 :调度器与后端节点必须在同一物理网段。
- 关键配置:ARP 参数抑制、回环接口 VIP、内核重定向关闭,缺一不可。
- 适用场景:电商网站、API 服务、短视频平台等高并发业务。