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,保证调度器正常分发。

相关推荐
wacsii17 分钟前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
共享家952719 分钟前
408 操作系统第一章
服务器·数据库·windows
默|笙1 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
相思难忘成疾1 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo1 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
云飞云共享云桌面1 小时前
1台SolidWorks服务器如何承载10个设计并发?
运维·服务器·网络·3d·制造
未来之窗软件服务1 小时前
WAF负载均衡+蜜罐混淆安全体系-东方仙盟
运维·安全·负载均衡·仙盟创梦ide·东方仙盟·阿雪技术观·网关开发
Linux-lucky2 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
Jenni see2 小时前
服装厂裁剪自动化怎么搞?自动铺布+激光裁床+六轴机械手裁片分拣,省料省人的实战指南
运维·自动化