LVS-DR 负载均衡集群
目录
一、简介
1.1 LVS-DR工作原理核心特性
1.2 数据包流向深度解析
二、实验环境准备与规划
三、LVS调度器配置实战
3.1 绑定虚拟IP地址(VIP)
3.2 调整内核参数禁用重定向
3.3 配置负载均衡策略
四、真实服务器节点配置
4.1 绑定VIP到lo接口
4.2 调整ARP响应参数
4.3 部署Web服务与NFS挂载
五、集群功能验证与性能测试
5.1 负载均衡效果验证
5.2 客户端访问测试
六、LVS-DR模式应用场景
6.1 应用场景
6.2 生产环境优化建议
总结
一、简介
在互联网高并发场景下,负载均衡技术是保障系统稳定性的核心组件。LVS(Linux Virtual Server)作为Linux平台下的高性能负载均衡解决方案,其DR(Direct Routing)模式因其"请求进、响应出"的高效数据路径设计,成为生产环境的首选方案。
1.1 LVS-DR工作原理核心特性
- 流量分发机制:调度器(Director Server)仅处理入站请求,响应数据由真实服务器(Real Server)直接返回客户端,避免流量回环
- 网络拓扑要求:调度器与真实服务器需位于同一二层网络(VLAN或物理网段),依赖MAC地址重写实现数据转发
- VIP共享机制:调度器与真实服务器均需配置虚拟IP(VIP),但真实服务器通过lo接口绑定VIP,避免ARP冲突
1.2 数据包流向深度解析
- 请求阶段:客户端发送CIP→VIP的数据包到调度器
- 调度处理:调度器修改数据包MAC地址(源MAC→调度器MAC,目标MAC→真实服务器MAC),IP地址保持不变
- 响应阶段:真实服务器通过lo接口封装VIP→CIP的响应包,直接返回客户端
这种设计使得LVS-DR模式的吞吐量可达NAT模式的3-5倍,尤其适合静态资源服务场景。
二、实验环境准备与规划
主机角色
操作系统
物理IP地址
配置职责
LVS调度器
openEuler 24.03
192.168.10.101
负载分发、VIP绑定
Web服务器节点1
openEuler 24.03
192.168.10.102
提供Web服务、绑定VIP
Web服务器节点2
openEuler 24.03
192.168.10.103
提供Web服务、绑定VIP
NFS共享服务器
openEuler 24.03
192.168.10.104
存储共享Web内容
网络规划关键点:
- VIP地址:192.168.10.100/32(主机路由模式,避免广播)
- 所有节点网关不可指向调度器IP,确保响应直接回客户端
- 真实服务器通过lo:0接口绑定VIP,防止ARP冲突
三、LVS调度器配置实战
3.1 绑定虚拟IP地址(VIP)
# 进入网络配置目录 cd /etc/sysconfig/network-scripts/ # 复制物理网卡配置文件创建虚拟接口配置 cp ifcfg-ens33 ifcfg-ens33:0 # 编辑虚拟接口配置文件 vim ifcfg-ens33:0 # 配置内容说明: # NAME=ens33:0 # 接口名称 # DEVICE=ens33:0 # 设备名称 # ONBOOT=yes # 开机自启 # IPADDR=192.168.10.100 # VIP地址 # NETMASK=255.255.255.255 # 全1子网掩码,指定为单播主机地址 # 重启网络服务使配置生效 systemctl restart NetworkManager # 验证接口配置(示例输出) ifconfig ens33:0 # 输出说明: # inet 192.168.10.100 # VIP地址 # netmask 255.255.255.255 # 子网掩码 # ether 00:0c:29:93:80:05 # 物理网卡MAC地址
3.2 调整内核参数禁用重定向
# 编辑系统参数配置文件 vim /etc/sysctl.conf # 添加以下配置: net.ipv4.conf.all.send_redirects=0 # 禁用所有接口重定向 net.ipv4.conf.default.send_redirects=0 # 禁用默认接口重定向 net.ipv4.conf.ens33.send_redirects=0 # 禁用物理网卡重定向 # 使配置立即生效 sysctl -p
配置意义:DR模式下调度器与真实服务器共享VIP,禁用重定向可避免内核尝试将响应包转发回调度器,导致路由混乱。
3.3 配置负载均衡策略
# 清除原有策略(首次配置可跳过) ipvsadm -C # 添加集群服务(TCP协议,VIP:80端口) ipvsadm -A -t 192.168.10.100:80 -s rr # 参数说明: # -A:添加集群服务 # -t:指定TCP协议 # -s rr:使用轮询(Round Robin)调度算法 # 添加真实服务器节点1(-g表示DR模式) ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.102 -g -w 1 # 参数说明: # -a:添加真实服务器 # -r:真实服务器IP # -g:DR模式 # -w 1:权重1(可根据服务器性能调整) # 添加真实服务器节点2 ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103 -g -w 1 # 保存策略到配置文件 ipvsadm-save > /etc/sysconfig/ipvsadm # 配置开机自启 systemctl enable ipvsadm
四、真实服务器节点配置
4.1 绑定VIP到lo接口
# 定义VIP变量(便于批量部署) vip='192.168.10.100' # 临时添加VIP到lo:0接口(重启失效) ip addr add $vip/32 dev lo label lo:0 # 说明:/32子网掩码指定为单播主机,仅本地生效 # 临时添加本地路由(重启失效) ip route add local $vip/32 dev lo # 说明:确保访问VIP的数据包仅在本地处理,不参与网络路由 # 配置永久生效(通过rc.local) echo "ip addr add $vip/32 dev lo label lo:0" | tee -a /etc/rc.local echo "ip route add local $vip/32 dev lo" | tee -a /etc/rc.local chmod +x /etc/rc.local
4.2 调整ARP响应参数
# 编辑系统参数配置文件 vim /etc/sysctl.conf # 添加以下配置: net.ipv4.conf.all.arp_ignore=1 # 忽略非本地接口的ARP请求 net.ipv4.conf.all.arp_announce=2 # 限制ARP公告只使用本地接口地址 net.ipv4.conf.default.arp_ignore=1 net.ipv4.conf.default.arp_announce=2 net.ipv4.conf.lo.arp_ignore=1 # 特别配置lo接口 net.ipv4.conf.lo.arp_announce=2 # 使配置立即生效 sysctl -p
核心作用:
- arp_ignore=1:当请求的IP地址不是本接口绑定的地址时,忽略ARP请求
- arp_announce=2:强制使用指定接口的IP地址作为ARP响应源,避免真实服务器响应VIP的ARP请求,防止MAC地址冲突
4.3 部署Web服务与NFS挂载
# 安装HTTP服务 yum -y install httpd # 挂载NFS共享目录(示例路径) mount 192.168.10.104:/opt/wwwroot /var/www/html # 说明:共享存储确保多节点内容一致性 # 创建测试网页 vim /var/www/html/index.html # 内容示例:
LVS负载均衡群集--节点1测试网页
# 注意:节点2可修改为"节点2测试网页"用于区分 # 启动HTTP服务并设置开机自启 systemctl start httpd systemctl enable httpd五、集群功能验证与性能测试
5.1 负载均衡效果验证
# 在调度器上查看当前负载分配状态 ipvsadm -ln # 输出示例: 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 1 -> 192.168.10.103:80 Route 1 0 1 # 关键指标说明: # ActiveConn:当前活动连接数 # InActConn:非活动连接数 # Weight:节点权重
5.2 客户端访问测试
- 在浏览器中访问http://192.168.10.100,刷新页面观察内容是否在"节点1"与"节点2"测试页间切换
- 使用ab压力测试工具验证负载均衡效果:
ab -n 1000 -c 100 http://192.168.10.100/ # 参数说明: # -n 1000:发送1000个请求 # -c 100:并发100个连接
六、LVS-DR模式应用场景
6.1 应用场景
- 高并发静态资源服务(如图片、文件下载服务器集群)
- 流量峰值明显的电商促销活动支撑
- 对响应延迟敏感的API服务集群
6.2 生产环境优化建议
- 健康检查机制:结合keepalived实现调度器高可用,添加real server健康检查
- TCP参数优化:调整net.ipv4.tcp_fin_timeout等参数提升连接回收效率
- 网络优化:启用RSS(Receive Side Scaling)多队列技术,提升多核CPU处理能力
- 日志与监控:部署Prometheus+Grafana监控集群负载、连接数等核心指标
总结
LVS-DR模式通过二层转发设计,实现了"请求进、响应出"的高效流量路径,在不增加网络复杂度的前提下显著提升集群吞吐量。其核心配置要点在于:VIP共享机制的正确实现、ARP参数的精准调整、网络拓扑的严格遵循。