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

相关推荐
xywww1689 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
梦想的颜色12 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
欢呼的太阳13 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
sdghterhd14 小时前
WebSocket 快速入门教程(附示例源码)
网络·websocket·网络协议
夜雪一千14 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
donoot15 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
xy345315 小时前
Wireshark捕获过滤器——语法元素详解
网络·测试工具·渗透测试·wireshark
ITKEY_15 小时前
macOS brew 安装的nginx 文件在哪里?
运维·nginx·macos
Elastic 中国社区官方博客15 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_16 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯