一、LVS-DR 作用与核心特点
作用
LVS-DR(Linux Virtual Server - Direct Routing,直接路由模式)是生产环境最常用 的负载均衡模式,核心作用是将客户端高并发请求均匀分发 到多台后端真实服务器(Real Server),避免单点故障 、提升系统并发能力 、降低响应延迟,保障业务高可用。
核心特点
-
调度器(Director Server)与真实服务器(Real Server)必须在同一物理网络。
-
请求报文经调度器分发,响应报文直接回传给客户端,不经过调度器,性能极高。
-
调度器与真实服务器共用 VIP,真实服务器在 lo 接口配置 VIP。
-
真实服务器网关不能指向调度器。
二、实验环境规划
| 主机角色 | 操作系统 | IP 地址 | 核心服务 / 工具 |
|---|---|---|---|
| LVS 调度器 | openEuler 24.03 | 192.168.10.101(DIP) | ipvsadm |
| Web 节点 1 | openEuler 24.03 | 192.168.10.102(RIP) | httpd、NFS 客户端 |
| Web 节点 2 | openEuler 24.03 | 192.168.10.103(RIP) | httpd、NFS 客户端 |
| NFS 共享存储 | openEuler 24.03 | 192.168.10.104 | NFS 服务端 |
| 集群 VIP | - | 192.168.10.100 | 虚拟 IP |
三、实验部署步骤
(一)配置 LVS 调度器(Director Server)
1. 配置 VIP(虚拟 IP)
- 进入网卡配置目录,复制网卡配置文件
bash
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
- 编辑虚接口配置文件
bash
vim ifcfg-ens33:0
写入内容:
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.255 # 掩码必须全1
- 重启网络服务并查看 VIP
bash
systemctl restart NetworkManager
ifconfig ens33:0
2. 调整内核参数(关闭重定向)
- 编辑 sysctl 配置文件
bash
vi /etc/sysctl.conf
添加以下参数:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
- 生效内核参数
bash
sysctl -p
3. 配置 ipvsadm 负载策略
- 清空原有策略,添加集群服务(轮询 rr 算法)
bash
ipvsadm -C
ipvsadm -A -t 192.168.10.100:80 -s rr
- 添加后端真实服务器(-g 表示 DR 模式)
bash
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103 -g -w 1
- 保存策略并设置开机自启
bash
systemctl enable ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
(二)配置 Real Server(Web 节点 1、节点 2,两台操作一致)
1. 配置 lo:0 虚拟 VIP
- 临时配置(重启失效)
bash
vip='192.168.10.100'
ip addr add ${vip}/32 dev lo label lo:0
ip route add local ${vip}/32 dev lo
- 永久配置(写入开机自启)
bash
echo "ip addr add ${vip}/32 dev lo label lo:0" >> /etc/rc.local
echo "ip route add local ${vip}/32 dev lo" >> /etc/rc.local
chmod +x /etc/rc.local
2. 调整 ARP 内核参数(禁止响应 VIP ARP)
-
编辑 sysctl 配置文件
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
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
- 生效内核参数
bash
sysctl -p
3. 部署 Web 服务
- 安装 httpd
bash
yum -y install httpd
- 挂载 NFS 共享目录(可选,统一页面)
bash
mount 192.168.10.104:/opt/wwwroot /var/www/html
- 创建测试页面
bash
echo "<h1>LVS-DR 测试 - Web 节点1</h1>" > /var/www/html/index.html
- 启动并自启 httpd
bash
systemctl start httpd
systemctl enable httpd
(三)集群测试
-
客户端浏览器访问 VIP:
http://192.168.10.100 -
多次刷新页面,可看到轮询访问节点 1、节点 2
-
调度器查看负载状态
bash
ipvsadm -ln
显示两个 Web 节点连接数均匀,即部署成功。
四、关键原理总结
-
客户端请求目标 IP 为 VIP,调度器修改MAC 地址分发至 Real Server。
-
Real Server 用 VIP 作为源 IP,直接回包给客户端,不经过调度器。
-
ARP 参数约束:避免真实服务器抢占 VIP,保证调度器正常分发。