LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南

目录

一、核心原理与理论

二、背景与架构设计

三、全流程部署步骤

1. NFS共享存储配置(192.168.7.100)

 2. Real Server节点配置(四台服务器)

3. Director服务器配置

四、常见问题解决方案

五、生产环境总结

拓扑示意图:


一、核心原理与理论

LVS-DR(Direct Routing)模式通过MAC地址改写实现高效转发:

  • 数据流向

  • LVS-DR(Direct Routing)工作流程

    • 请求处理

      • 客户端访问VIP(172.16.16.172)

      • Director接收请求,通过调度算法选择Real Server

      • 修改目标MAC地址(不改变IP)转发至Real Server

      • Real Server通过lo:0接口直接响应客户端

    • 关键技术

      • ARP抑制:Real Server隐藏VIP(arp_ignore=1, arp_announce=2

      • 直接路由:响应流量不经过Director

      • 双网卡隔离:公网(ens33)处理客户端请求,内网(ens37)连接存储


二、背景与架构设计

网络规划

设备ens33 (公网)ens37 (存储内网)
Director172.16.16.171192.168.7.171
Real Server×4172.16.16.131-134192.168.7.131-134
NFS Server-192.168.7.100
VIP172.16.16.172-

核心优势

  • 吞吐量提升:响应流量直返客户端,避免Director瓶颈

  • 安全隔离:存储网络独立于公网

  • 数据一致性:NFS共享Web根目录

场景需求

  • 公网访问VIP:172.16.16.0/24(ens33)

  • 存储内网通信:192.168.7.0/24(ens37)

  • 共享存储:NFS服务器发布/var/www/html

架构优势

  • 解耦网络流量:公网/内网物理隔离

  • 数据一致性:NFS共享Web根目录

  • 高性能:DR模式避免Director带宽瓶颈


三、全流程部署步骤

1. NFS共享存储配置(192.168.7.100)

# 安装NFS服务
yum install -y nfs-utils rpcbind# 创建共享目录
mkdir -p /var/www/html
chmod 777 /var/www/html# 配置访问权限(/etc/exports)
echo "/var/www/html 172.16.16.0/24(rw,sync,no_root_squash)" >> /etc/exports
echo "/var/www/html 192.168.7.0/24(rw,sync,no_root_squash)" >> /etc/exports# 启动服务
systemctl enable --now rpcbind nfs-server
firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload

 2. Real Server节点配置(四台服务器)

# 挂载NFS存储
yum install -y nfs-utils
mkdir -p /var/www/html
mount -t nfs 192.168.7.100:/var/www/html /var/www/html
echo "192.168.7.100:/var/www/html /var/www/html nfs defaults 0 0" >> /etc/fstab# 配置VIP到lo:0
echo "DEVICE=lo:0" > /etc/sysconfig/network-scripts/ifcfg-lo:0
echo "IPADDR=172.16.16.172" >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo "NETMASK=255.255.255.255" >> /etc/sysconfig/network-scripts/ifcfg-lo:0
ifup lo:0# 添加永久路由
echo "route add -host 172.16.16.172 dev lo:0" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
route add -host 172.16.16.172 dev lo:0# 配置ARP抑制
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p# 安装Web服务(以Nginx为例)
yum install -y nginx
systemctl enable --now nginx

3. Director服务器配置

# 配置VIP到ens33:0
echo "DEVICE=ens33:0" > /etc/sysconfig/network-scripts/ifcfg-ens33:0
echo "IPADDR=172.16.16.172" >> /etc/sysconfig/network-scripts/ifcfg-ens33:0
echo "NETMASK=255.255.255.255" >> /etc/sysconfig/network-scripts/ifcfg-ens33:0
ifup ens33:0# 禁用ICMP重定向
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.ens33.send_redirects = 0" >> /etc/sysctl.conf
sysctl -p# 加载IP_VS模块
modprobe ip_vs# 安装管理工具
yum install -y ipvsadm# 配置LVS规则
ipvsadm -C
ipvsadm -A -t 172.16.16.172:80 -s rr
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.131:80 -g -w 1
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.132:80 -g -w 1
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.133:80 -g -w 1
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.134:80 -g -w 1# 保存配置
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm

 4. 验证配置

# 在客户端访问测试
curl http://172.16.16.172# 查看连接分发
ipvsadm -Ln --stats# 检查Real ServerARP抑制
sysctl -a | grep arp_ignore# 测试NFS写入
touch /var/www/html/testfile

 


 

四、常见问题解决方案

故障现象诊断方法解决方案
VIP无法访问ipvsadm -Ln查看规则状态检查Director的VIP配置和路由
所有请求分配到同一节点检查调度算法(-s参数)确认使用rr轮询而非sh等哈希算法
NFS写入权限被拒绝showmount -e 192.168.7.100检查exports的no_root_squash配置
节点服务器无法响应VIP请求tcpdump -i lo host 172.16.16.172验证ARP抑制参数是否生效
存储网络延迟高ping -s 8972 192.168.7.100调整MTU:ip link set ens37 mtu 9000

五、生产环境总结

性能优化建议

  1. 网卡调优

    # 启用巨帧(存储网络)
    ip link set ens37 mtu 9000
    ethtool -G ens37 rx 4096 tx 4096
  2. 内核参数优化

    # Director防止端口耗尽
    echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf# Real Server连接复用
    echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
  3. 会话保持方案

    # 启用源IP哈希调度
    ipvsadm -E -t 172.16.16.172:80 -s sh
    ​​​​​​​

容灾设计

  • 使用Keepalived实现Director双机热备

  • 存储网络配置bonding冗余

  • 实时监控:watch -n 1 "ipvsadm -Ln --stats"

 经验总结:在双网卡架构中,务必关闭存储网卡的ARP代理:

echo "net.ipv4.conf.ens37.proxy_arp = 0" >> /etc/sysctl.conf

拓扑示意图

[ 客户端 ]|| (访问 172.16.16.172)|
[ Director ]|      ||      | (ens37: 192.168.7.0/24)|      ||    [ NFS Server ]|      (192.168.7.100)|| (调度流量)|
[Real Server1]--[Real Server2]--[Real Server3]--[Real Server4]
(172.16.16.131) (172.16.16.132) (172.16.16.133) (172.16.16.134)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86253.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hall 定理学习笔记

定义 对于一张二分图 G ( V , E ) G(V,E) G(V,E),设其左右部点集分别为 V L , V R V_L,V_R VL​,VR​,不妨认为 ( ∣ V L ∣ ≤ ∣ V R ∣ ) (|V_L|\leq |V_R|) (∣VL​∣≤∣VR​∣),定义该二分图的一组 完备匹配 为左部 ∣ V L ∣ |V…

使用jmeter进行websocket连接测试

一、WebSocket Sampler 插件安装 下载地址:http://download.csdn.net/detail/easternunbeaten/9753723 下载后,解压直接拷贝到Jmeter的lib下的ext文件夹里面,重启Jmeter,Sanpler下多一个Websocket选项 二、WebSocket 取样器字段介绍 1、W…

网络安全漏洞扫描是什么?如何识别目标进行扫描?

,现在大家对于网络安全漏洞扫描那可是相当在意这网络安全,如今在咱这个大时代里可是相当重要的一个事咧!因为,随着互联网蹭蹭地发展,网络攻击还有数据泄露这类威胁那真是越来越多越来越大! 咱先来说说啥叫…

NoSQL之Redis配置优化

NoSQL之Redis配置优化 一、Redis1.关系数据库与非关系型数据库关系型数据库非关系型数据库非关系型数据库产生背景 2.Redis基础Redis简介Redis安装部署配置参数 3.Redis命令工具redis-cli命令行工具redis-benchmark 测试工具 4.Redis数据库常用命令key相关命令(1)keys&#xff…

《HTTP权威指南》 第14章 安全HTTP

安全HTTP需要提供的功能: 服务器认证客户端认证完整性加密效率普适性管理的可扩展性适应性在社会上的可行性 HTTPS HTTPS方案的URL以https://开头,区别于https://。 HTTPS在HTTP的基础上使用SSL或者TLS(传输层安全)进行加密。 …

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导 在微服务和云原生时代,容器编排已成为保证应用可用性与扩展性的核心技术。本文将从问题背景出发,深入对比 Kubernetes、Docker Swarm 和 Nomad 三大主流编排方案,分析各自…

c++开源库项目框架汇总

Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源…

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行?3. 准备工作(回顾)4. 核心:创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3…

3、NLP黄金九步法(问题定义-数据获取-数据探索)

🎯 为什么要学习NLP流程? 想象一下,你要做一道菜🍳。如果没有清晰的步骤,随便把食材扔进锅里,结果会怎样?NLP项目也是如此! 就像做菜有固定流程一样: 买菜 → 洗菜 → …

docker 安装DM8达梦数据库

搭建Docker 环境 查看docker 是否安装 yum list installed | grep docker如若未安装则安装docker 环境 yum -y install docker启动Docker systemctl start docker查看docker启动结果 systemctl status docker搭建达梦数据库 下载镜像 传送门 #导入镜像 docker load -i…

Chrome MCP Server:AI驱动浏览器自动化测试实战「喂饭教程」

Chrome MCP Server:AI驱动浏览器自动化测试实战 一、项目简介二、原理剖析1. 架构总览三、安装1. 环境准备2. 安装步骤2.1 下载 Chrome 扩展2.2 安装 mcp-chrome-bridge2.3 加载扩展2.4 启动 MCP Server2.5 配置 AI 客户端四、Chrome MCP Server API 参考五、用法实战1. 与 AI…

.NET多线程任务实现的几种方法及线程等待全面分析

文章目录 1. 引言2. .NET多线程编程基础2.1 线程概念回顾2.2 .NET线程模型概述 3. 多线程任务实现方法3.1 Thread类实现3.2 ThreadPool实现3.3 Task Parallel Library (TPL)3.4 Parallel类3.5 BackgroundWorker组件3.6 Async/Await模式3.7 各种方法的比较与选择 4. 线程等待机制…

Typecho handsome访客统计插件最新版VistorLoggerPro

文章目录 介绍功能特点页面预览安装及更新方法系统要求使用说明基本使用(Handsome主题适用) 隐私保护技术实现更新日志最后 介绍 这是一个为 Typecho 博客系统开发的访客统计插件,基于原版的VistorLogger修改版本。该插件提供了详细的访问统…

蓝桥杯备赛篇(上) - 参加蓝桥杯所需要的基础能力 1(C++)

目录 一、(工具)DevC的安装和使用1.1 DevC介绍1.2 下载1.3 部分使用技巧1.3.1 快捷键介绍1.3.2 调试快捷键 二、第一个C程序2.1 基础程序2.2 main函数2.3 字符串2.4 头文件2.5 cin和cout初识2.6 名字空间 三、注释四、题目练习3.1 输出第二个整数3.2 字符…

Bugku-CTF-web(适合初学者)

今天刷了一下 Bugku-CTF-web 的1-10题,比较简单,比较娱乐,基本上看看源代码就可以了,非常适合初学者。能够学习到base64编码,unicode编码,dirb web目录遍历,SourceLeakHacker 备份文件遍历&…

【实时Linux实战系列】基于实时Linux的音频处理应用开发

在实时系统中,音频处理应用(如实时音频效果处理、语音通信等)需要低延迟和高精度的时间控制。实时Linux通过优化内核调度和提供高效的I/O操作,能够满足音频处理对实时性的严格要求。掌握基于实时Linux的音频处理应用开发对于开发者…

Linux中信号的三种产生方式

在 Linux 中,信号(Signal)是一种进程间通信的机制,用于通知进程发生了某种事件。理解信号的来源对于开发可靠、健壮的程序至关重要。本文将介绍三种常见的信号产生方式,包括:kill 命令、键盘输入&#xff0…

Android15启动icon界面的背景图颜色

Android15启动icon界面的背景图颜色 在一加Ace 5启动时有个图标在中间的&#xff0c;它界面的背景图是灰色的&#xff0c;不好看&#xff0c;想改为白色。 解决方案&#xff1a; 在app下的AndroidManifest.xml文件的<application这个标签的android:theme增加&#xff1a;…

用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题

原因&#xff1a; 这个问题&#xff0c;其实是pdf自带了某个缩放比例&#xff0c;与窗口的比例不一致&#xff0c;因此会进行窗口缩放。 解决方法: 用acrobat&#xff08;我没有找到如何用福昕阅读器进行设置的方法&#xff09;&#xff0c;打开【文档属性】&#xff0c;然后打…

Windows环境Browser-Use平台部署与AI自动化远程访问实现过程

文章目录 前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda 4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息 5. 本地运行测试6. 安装内网穿透6.1 配置公网…