LVS-DR 群集部署

一、LVS-DR 作用与核心特点

作用

LVS-DR(Linux Virtual Server - Direct Routing,直接路由模式)是生产环境最常用 的负载均衡模式,核心作用是将客户端高并发请求均匀分发 到多台后端真实服务器(Real Server),避免单点故障提升系统并发能力降低响应延迟,保障业务高可用。

核心特点

  1. 调度器(Director Server)与真实服务器(Real Server)必须在同一物理网络

  2. 请求报文经调度器分发,响应报文直接回传给客户端,不经过调度器,性能极高。

  3. 调度器与真实服务器共用 VIP,真实服务器在 lo 接口配置 VIP。

  4. 真实服务器网关不能指向调度器

二、实验环境规划

主机角色 操作系统 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)
  1. 进入网卡配置目录,复制网卡配置文件

bash

复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
  1. 编辑虚接口配置文件

bash

复制代码
vim ifcfg-ens33:0

写入内容:

复制代码
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.255  # 掩码必须全1
  1. 重启网络服务并查看 VIP

bash

复制代码
systemctl restart NetworkManager
ifconfig ens33:0
2. 调整内核参数(关闭重定向)
  1. 编辑 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
  1. 生效内核参数

bash

复制代码
sysctl -p
3. 配置 ipvsadm 负载策略
  1. 清空原有策略,添加集群服务(轮询 rr 算法)

bash

复制代码
ipvsadm -C
ipvsadm -A -t 192.168.10.100:80 -s rr
  1. 添加后端真实服务器(-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
  1. 保存策略并设置开机自启

bash

复制代码
systemctl enable ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm

(二)配置 Real Server(Web 节点 1、节点 2,两台操作一致)

1. 配置 lo:0 虚拟 VIP
  1. 临时配置(重启失效)

bash

复制代码
vip='192.168.10.100'
ip addr add ${vip}/32 dev lo label lo:0
ip route add local ${vip}/32 dev lo
  1. 永久配置(写入开机自启)

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)
  1. 编辑 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
  1. 生效内核参数

bash

复制代码
sysctl -p
3. 部署 Web 服务
  1. 安装 httpd

bash

复制代码
yum -y install httpd
  1. 挂载 NFS 共享目录(可选,统一页面)

bash

复制代码
mount 192.168.10.104:/opt/wwwroot /var/www/html
  1. 创建测试页面

bash

复制代码
echo "<h1>LVS-DR 测试 - Web 节点1</h1>" > /var/www/html/index.html
  1. 启动并自启 httpd

bash

复制代码
systemctl start httpd
systemctl enable httpd

(三)集群测试

  1. 客户端浏览器访问 VIP:http://192.168.10.100

  2. 多次刷新页面,可看到轮询访问节点 1、节点 2

  3. 调度器查看负载状态

bash

复制代码
ipvsadm -ln

显示两个 Web 节点连接数均匀,即部署成功。

四、关键原理总结

  1. 客户端请求目标 IP 为 VIP,调度器修改MAC 地址分发至 Real Server。

  2. Real Server 用 VIP 作为源 IP,直接回包给客户端,不经过调度器。

  3. ARP 参数约束:避免真实服务器抢占 VIP,保证调度器正常分发。

相关推荐
langmeng1102 小时前
Linux安装Kafka3.8.0版本不使用zookeeper
linux·运维·服务器
亚空间仓鼠2 小时前
Shell脚本详解:从理论到实践(二)
linux·运维·服务器
董崇德2 小时前
当CPU飙高时,SRE的排查清单——USE Method实战
运维
岳来2 小时前
网络小白docker network create时如何指定subnet 和gateway
网络·docker·gateway·subnet
D4c-lovetrain2 小时前
Linux个人心得25 (mysql⑤)
linux·运维·mysql
复园电子2 小时前
HTTPS与TLS1.2双重加密:USB网络数据传输安全的底层核心技术解析
服务器·网络·安全·https
菜_小_白2 小时前
RTP协议收发组件开发
linux·网络·c++
航Hang*2 小时前
Windows Server 配置与管理——第11章:配置虚拟专用网络服务器
运维·服务器·windows
Deitymoon2 小时前
linux——UDP编程
linux·网络·udp