LVS的DR模式部署
目录
一、引言:高并发场景下的流量调度方案
二、LVS-DR 集群核心原理与架构设计
(一)工作原理与数据流向
数据包流向步骤3:
(二)模式特性与53网络要求
三、实战配置:从9环境搭建到参数调整
(一)案例环境规划
(二)负载调度器配置步骤
1. 绑定 VIP 地址(虚接口方式)
2. 关闭内核重定向参数
3. 配置负载均衡策略(轮询算法)
(三)真实服务器配置要点
1. 通过 lo 接口配置 VIP(回环接口)
2. 禁用 ARP 响应更新
3. 部署 Web 服务与 NFS 共享
四、集群验证与状态监控
(一)功能测试
(二)状态查看与11策略验证
五、总结与应用场景建议
六、常见问题排查与解决方案
(一)集群无响应或请求丢失
1. IP 配置冲突
2. ARP 广播冲突
3. iptables 防火墙拦截
(二)负载分配不均
1. 调度算法配置错误
2. Real Server 性能差异
七、性能优化与扩展策略
(一)内核参数调优
1. TCP 连接优化
2. IPVS 连接超时设置
(二)高可用扩展
1. 主备调度器(Keepalived)
2. 横向扩展 Real Server
八、LVS-DR 与其他负载均衡方案对比
九、总结与实践建议
(一)最佳实践清单
(二)学习路径推荐
一、引言:高并发场景下的流量调度方案
在数字化业务爆发式增长的今天,如何应对海量用户访问带来的系统压力成为关键挑战。负载均衡技术通过将流量合理分配至多个服务器,有效避免单点故障并提升系统扩展性。其中,LVS-DR(Direct Routing)模式凭借高性能、低延迟、流量分离处理的特性,成为构建大规模负载均衡集群的核心方案。本文将结合文档《部署 LVS-DR 群集_扫描版.pdf》内容,详细解析其工作原理、配置流程及实战验证方法。
二、LVS-DR 集群核心原理与架构设计
(一)工作原理与数据流向
LVS-DR 模式由Director Server(负载调度器)和Real Server(真实服务器)组成,两者需位于同一物理网络并共享VIP(虚拟 IP 地址)。其核心逻辑为:
请求入口:客户端通过 VIP 访问集群,请求由 Director Server 接收。
数据转发:Director Server 通过二层链路(MAC 地址重写)将请求分发至 Real Server,源 IP 与目标 IP 保持不变,仅修改 MAC 地址。
响应直连:12Real Server 直接将响应报文通过 lo 接口返回客户端,无需经过 Director Server,实现流量 “入站分发、出站直连”。
数据包流向步骤3:
客户端发送请求(源 IP=CIP,目标 IP=VIP)至 Director Server。
Director4 Server 通过 IPVS 判断为集群服务,修改 MAC 地址(源 MAC=Director,目标 MAC=Real Server)后转发。
Real Ser2ver 接收报文,封装响应(源 IP=VIP,目标 IP=CIP)并通过物理网卡直接返回客户端。
(二)模式特性与53网络要求
物理网络限制:Director 与 Real Server 必须处于同一局域网,依赖二层通信(如 VLAN 或交换机直连)。
- *IP 配置规则6*:
- Real Server 通过 lo 接口配置 VIP(仅作响应源地址,不监听请求)。
- Real Se7rver 网关不可指向 Director IP,避免响应报文绕行。
- *流量效率优势8*:响应报文无需经过 Director,大幅降低调度器负载,提升吞吐量。
三、实战配置:从9环境搭建到参数调整
(一)案例环境规划
主机角色 | 操作系统 | 主 IP 地址 | VIP 地址 | 核心组件 |
---|---|---|---|---|
负载调度器(LVS) | openEuler 24.03 | 192.168.10.101 | 192.168.10.100 | ipvsadm |
真实服务器 1(Web1) | openEuler 24.03 | 192.168.10.102 | 192.168.10.100 | Apache、NFS |
真实服务器 2(Web2) | openEuler 24.03 | 192.168.10.103 | 192.168.10.100 | Apache、NFS |
NFS 共享服务器 | openEuler 24.03 | 192.168.10.104 | - | NFS |
(二)负载调度器配置步骤
1. 绑定 VIP 地址(虚接口方式)
通过ens33:0
虚接口为调度器配置 VIP,子网掩码设为255.255.255.255
(全 1 掩码),确保 VIP 仅本地可见:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0 # 复制主网卡配置
vim ifcfg-ens33:0 # 修改为VIP地址,NETMASK=255.255.255.255
IPADDR=192.168.10.100
systemctl restart NetworkManager # 生效配置
2. 关闭内核重定向参数
避免调度器向客户端发送错误路由重定向,修改/etc/sysctl.conf
并生效:
echo "net.ipv4.conf.all.send_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.ens33.send_redirects=0" >> /etc/sysctl.conf
sysctl -p # 应用配置
3. 配置负载均衡策略(轮询算法)
使用ipvsadm
添加集群服务,将请求分发至 Real Server(-g
表示 DR 模式):
ipvsadm -C # 清除原有策略
# 添加集群服务(TCP 80端口,轮询算法rr)
ipvsadm -A -t 192.168.10.100:80 -s rr
# 添加真实服务器(权重均为1)
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
ipvsadm-save > /etc/sysconfig/ipvsadm # 保存策略
systemctl enable ipvsadm # 开机自启
(三)真实服务器配置要点
1. 通过 lo 接口配置 VIP(回环接口)
VIP 仅作为响应报文源地址,通过lo:0
接口绑定并限制路由:
vip="192.168.10.100"
# 临时配置(重启失效)
ip addr add ${vip}/32 dev lo label lo:0
ip route add local ${vip}/32 dev lo
# 永久配置(写入rc.local)
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 响应更新
防止 Real Server 广播 VIP 的 MAC 地址,避免与 Director 冲突:
vim /etc/sysctl.conf
# 添加以下参数
net.ipv4.conf.all.arp_ignore=1 # 忽略非本地目标IP的ARP请求
net.ipv4.conf.all.arp_announce=2 # 限制ARP公告仅发送主IP
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
sysctl -p # 生效配置
3. 部署 Web 服务与 NFS 共享
以 Apache 为例,挂载 NFS 共享实现内容一致性(文档建议参考第 1 章配置 NFS):
yum -y install httpd # 安装Web服务
mount 192.168.10.104:/var/www/html /var/www/html # 挂载NFS共享
echo "<h1>LVS负载均衡群集--测试网页</h1>" > /var/www/html/index.html # 创建测试页
systemctl start httpd && systemctl enable httpd # 启动服务
四、集群验证与状态监控
(一)功能测试
通过浏览器访问http://192.168.10.100
,刷新页面观察请求是否轮询分发至 Web1 和 Web2。若 Real Server 配置不同测试内容(如不同 HTML 标题),可直观验证负载均衡效果。
(二)状态查看与11策略验证
使用ipvsadm -ln
命令查看当前集群状态,确认调度算法、Real Server 列表及连接统计:
ipvsadm -ln
# 示例输出(轮询算法rr,两台Real Server)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.100:80 rr-> 192.168.10.102:80 Route 1 0 3-> 192.168.10.103:80 Route 1 0 2
五、总结与应用场景建议
LVS-DR 模式通过二层转发 + 响应直连的设计,显著提升了高并发场景下的流量处理效率,适用于电商平台、视频网站等需要低延迟、高吞吐的业务场景。但需注意:
网络局限性:依赖同一局域网,跨网段部署需结合其他模式(如 LVS-TUN)。
配置关键点:VIP 路由限制、ARP 参数调整是避免集群冲突的核心。
通过本文的原理剖析与710实战操作,可快速掌握 LVS-DR 集群的搭建与调优方法,为构建稳定的分布式系统提供技术支撑。
以下是对 LVS-DR 集群的进一步扩展内容,涵盖常见问题排查、性能优化方向及与其他负载均衡方案的对比,帮助读者更全面掌握该技术:
六、常见问题排查与解决方案
(一)集群无响应或请求丢失
1. IP 配置冲突
- 现象:客户端无法访问 VIP,或 Real Server 响应报文未走 lo 接口。
- 排查:
- 检查 Director 与 Real Server 的 VIP 是否均通过正确接口(调度器 ens33:0,Real Server lo:0)配置。
- 确保 Real Server 的网关未指向 Director IP(执行
route -n
查看默认网关)。
- 解决:修正网关配置,确保 Real Server 直接通过本地网关访问外网。
2. ARP 广播冲突
- 现象:客户端 ping VIP 返回 Real Server 的 MAC 地址,导致请求未到达 Director。
- 排查:在 Real Server 执行
arp -a
,查看是否错误广播 VIP 的 MAC 地址。 - 解决:
- 确认
arp_ignore=1
和arp_announce=2
已生效(sysctl net.ipv4.conf.all.arp_ignore
查看值是否为 1)。 - 重启网络服务或服务器使配置生效。
- 确认
3. iptables 防火墙拦截
- 现象:请求到达 Director 后未被转发,
ipvsadm
日志无记录。 - 排查:检查调度器的 iptables 规则是否拦截了 VIP 流量。
- 解决:
- 开放 VIP 的 HTTP/HTTPS 端口:
iptables -A INPUT -d 192.168.10.100 -p tcp --dport 80 -j ACCEPT
- 关闭 iptables(测试环境适用):
systemctl stop firewalld && systemctl disable firewalld
- 开放 VIP 的 HTTP/HTTPS 端口:
(二)负载分配不均
1. 调度算法配置错误
- 现象:
ipvsadm -ln
显示某台 Real Server 连接数远高于另一台。 - 排查:确认调度算法是否正确(如轮询
rr
、加权轮询wrr
),权重配置是否一致。 - 解决:
- 重置策略并重新添加 Real Server:
ipvsadm -C ipvsadm -A -t VIP:80 -s wrr # 使用加权轮询 ipvsadm -a -r RealServer1 -g -w 2 # 权重设为2 ipvsadm -a -r RealServer2 -g -w 1 # 权重设为1
- 重置策略并重新添加 Real Server:
2. Real Server 性能差异
- 现象:高性能节点负载低,低性能节点负载高。
- 解决:根据服务器配置调整权重(
-w
参数),性能强的节点分配更高权重。
七、性能优化与扩展策略
(一)内核参数调优
1. TCP 连接优化
在 Director Server 和 Real Server 中调整以下参数,提升 TCP 处理效率:
vim /etc/sysctl.conf
# 快速回收TIME_WAIT连接
net.ipv4.tcp_fin_timeout=30
# 允许重用TIME_WAIT连接的端口
net.ipv4.tcp_tw_reuse=1
# 增加TCP半连接队列长度
net.ipv4.tcp_max_syn_backlog=8192
sysctl -p
2. IPVS 连接超时设置
缩短空闲连接超时时间,释放资源:
ipvsadm -E -t VIP:80 -s rr -p 60 # 设置连接保持时间为60秒
(二)高可用扩展
1. 主备调度器(Keepalived)
为避免 Director 单点故障,引入 Keepalived 实现双机热备:
- 配置要点:
- 主备调度器共享虚拟 IP(VIP)。
- 通过 VRRP 协议监控主节点状态,故障时自动切换。
- 参考命令:
yum install keepalived # 安装Keepalived # 主节点配置(/etc/keepalived/keepalived.conf) vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100virtual_ipaddress {192.168.10.100} }
2. 横向扩展 Real Server
当集群负载超过现有节点处理能力时,可直接添加新的 Real Server 至ipvsadm
策略,无需停机:
ipvsadm -a -t VIP:80 -r 192.168.10.105 -g -w 1 # 添加新节点
八、LVS-DR 与其他负载均衡方案对比
方案 | 核心原理 | 优势 | 局限性 | 适用场景 |
---|---|---|---|---|
LVS-DR | 二层转发 + MAC 重写 | 高性能、低延迟、流量分离 | 依赖同一局域网 | 大规模高并发集群 |
Nginx | 七层代理(HTTP/HTTPS) | 支持 URL 路由、缓存、动态负载均衡 | 单机性能有限(万级连接) | 应用层负载均衡(如 Web) |
HAProxy | 四层 / 七层代理 | 支持 TCP/UDP、健康检查、会话保持 | 配置复杂度较高 | 混合协议场景 |
云厂商 SLB | 托管式负载均衡 | 自动扩展、高可用 | 依赖云平台、成本较高 | 云原生架构 |
九、总结与实践建议
(一)最佳实践清单
- 网络规划:确保 Director 与 Real Server 在同一 VLAN,使用交换机而非路由器连接(避免三层转发)。
- 配置验证:
- 部署后通过
arp -n
检查客户端是否获取 Director 的 MAC 地址(正常应为调度器 MAC)。 - 使用
tcpdump
抓包分析请求 / 响应路径,确认响应报文直接由 Real Server 发出。
- 部署后通过
- 监控体系:
- 监控 Director 的 CPU / 内存使用率(避免成为瓶颈)。
- 监控 Real Server 的负载、连接数及健康状态(可结合 Nagios 或 Prometheus)。
(二)学习路径推荐
- 基础巩固:深入理解 IPVS 内核模块原理(参考《Linux 内核源代码情景分析》)。
- 实战进阶:在测试环境中尝试混合使用 LVS-DR 与 Nginx(LVS 负责四层分发,Nginx 处理七层逻辑)。
- 前沿探索:研究 Kubernetes 中 LVS 的应用(如 kube-proxy 的 IPVS 模式)。