当前位置: 首页 > news >正文

第一章 LVS 负载均衡群集核心概念与体系架构

目录

1.1 群集技术的演进与分类

1.1.1 负载均衡群集(Load Balance Cluster)

1.1.2 高可用群集(High Availability Cluster)

1.1.3 高性能运算群集(High Performance Computer Cluster)

1.2 负载均衡群集的分层架构设计

1.2.1 负载调度器(Load Balancer)

1.2.2 服务器池(Server Pool)

1.2.3 共享存储(Shared Storage)

1.3 负载均衡工作模式解析

1.3.1 NAT 模式(地址转换模式)

1.3.2 TUN 模式(IP 隧道模式)

1.3.3 DR 模式(直接路由模式)

1.4 三种模式对比与选型建议

第二章 LVS 虚拟服务器核心技术

2.1 LVS 项目起源与架构

2.2 ip_vs 模块与内核集成

2.2.1 模块加载与查看

2.2.2 模块功能特性

2.3 负载调度算法详解

2.3.1 轮询(Round Robin, RR)

2.3.2 加权轮询(Weighted Round Robin, WRR)

2.3.3 最少连接(Least Connections, LC)

2.3.4 加权最少连接(Weighted Least Connections, WLC)

2.4 ipvsadm 管理工具全解析

2.4.1 安装与版本查看

2.4.2 创建与删除虚拟服务器

2.4.3 管理真实服务器节点

2.4.4 查看与保存配置

3.1 NFS 协议基础与应用场景

3.2 NFS 服务端配置流程

3.2.1 软件包安装与服务启动

3.2.2 共享目录配置

3.2.3 刷新配置与验证

五、总结与扩展


1.1 群集技术的演进与分类

在互联网应用爆发式增长的背景下,单台服务器在处理高并发请求、保证服务稳定性等方面逐渐力不从心。群集技术通过整合多台服务器资源,形成一个具备高可用性、高扩展性和高性能的服务实体,成为企业级解决方案的核心架构。根据其核心目标差异,群集可划分为三类:

1.1.1 负载均衡群集(Load Balance Cluster)

负载均衡群集的核心目标是提升系统的并发处理能力,通过合理分配客户端请求,确保每个服务器节点的负载处于均衡状态,从而降低延迟、提高整体吞吐量。其工作原理基于主节点的分流算法,例如 “DNS 轮询” 通过域名解析将请求分发到不同 IP,“反向代理” 则在应用层根据请求内容动态转发。典型应用场景包括电商网站的订单系统、视频平台的流媒体服务等,通过将海量请求分散到多个节点,避免单一服务器过载。

1.1.2 高可用群集(High Availability Cluster)

高可用群集以保障服务连续性为核心,通过冗余设计和故障切换机制,最大限度减少系统中断时间。其工作模式主要有双工和主从两种:双工模式下所有节点同时在线,共同承担服务,当某一节点故障时,其他节点无缝接管其任务;主从模式则只有主节点提供服务,从节点处于热备状态,一旦主节点故障,从节点立即升级为主节点。常见应用如金融交易系统、医疗预约平台等对服务连续性要求极高的场景。

1.1.3 高性能运算群集(High Performance Computer Cluster)

高性能运算群集聚焦于提升大规模数据处理和复杂计算能力,通过分布式运算和并行计算技术,将多个服务器的 CPU、内存等资源整合为一个虚拟的超级计算机。典型应用包括科学计算、气象预测、基因测序等领域,例如云计算平台通过高性能群集为用户提供强大的算力支持。

1.2 负载均衡群集的分层架构设计

一个典型的负载均衡群集由三个层次的组件构成,各层分工明确,协同实现高效的请求处理和资源管理:

1.2.1 负载调度器(Load Balancer)

负载调度器是群集的唯一入口,对外使用虚拟 IP 地址(VIP)接收所有客户端请求。为确保高可用性,通常配置主备两台调度器,主调度器正常工作时处理所有请求,备用调度器实时同步配置和状态;当主调度器故障时,备用调度器自动接管 VIP,实现无缝切换。调度器的核心功能是根据预设的负载调度算法(如轮询、最少连接等),将请求分发到后端服务器池中的节点。

1.2.2 服务器池(Server Pool)

服务器池由多台真实服务器(Real Server,RIP)组成,负责实际处理客户端请求。每个节点具有独立的真实 IP 地址,仅处理调度器分发的请求,对客户端透明。服务器池的伸缩性通过动态添加或删除节点实现,当业务流量增加时,可快速加入新节点以提升处理能力;流量减少时,可下线部分节点以节省资源。节点故障时,调度器的容错机制会自动将其隔离,待故障排除后重新纳入服务器池。

1.2.3 共享存储(Shared Storage)

共享存储为服务器池中的所有节点提供统一的文件存取服务,确保各节点数据的一致性和完整性。在 Linux/UNIX 环境中,常用 NFS(Network File System)协议或 NAS(Network Attached Storage)设备实现共享存储。例如,多个 Web 服务器节点通过挂载同一 NFS 共享目录,实现网站静态资源的统一管理,避免因节点间数据不一致导致的服务异常。

1.3 负载均衡工作模式解析

基于 IP 的负载均衡技术主要有三种工作模式,每种模式在网络结构、通信路径和适用场景上各具特点:

1.3.1 NAT 模式(地址转换模式)
  • 网络结构:调度器作为服务器节点的网关,位于客户机和节点之间,形成类似防火墙的私有网络结构。服务器节点使用私有 IP 地址,与调度器位于同一物理网络。
  • 通信流程:客户端请求通过公网 IP 到达调度器,调度器将请求的目标 IP 转换为后端节点的私有 IP 并转发;节点处理请求后,响应数据包经调度器进行源 IP 转换(将私有 IP 转换为 VIP),再返回给客户端。
  • 特点:仅需一个公网 IP 地址,实现简单,安全性较高(节点私有 IP 对外不可见);但调度器需处理双向流量,可能成为性能瓶颈,适合节点数较少的中小型集群。
1.3.2 TUN 模式(IP 隧道模式)
  • 网络结构:调度器作为请求入口,节点分散在互联网不同位置,各自具备独立的公网 IP 地址。调度器与节点之间通过专用 IP 隧道(如 IPIP 隧道)通信,隧道用于封装调度器分发的请求数据包。
  • 通信流程:客户端请求到达调度器后,调度器将请求数据封装在 IP 隧道中,通过公网发送至目标节点;节点解封装后处理请求,并直接通过公网将响应返回给客户端,无需经过调度器。
  • 特点:节点可跨地域分布,负载能力强;但需为每个节点分配公网 IP,配置复杂,安全性较低(节点直接暴露在公网),适用于分布式大型集群。
1.3.3 DR 模式(直接路由模式)
  • 网络结构:节点与调度器位于同一物理网络,共享相同的子网。调度器通过修改数据包的 MAC 地址(而非 IP 地址)将请求分发到节点,节点的 IP 地址需与调度器的 VIP 在同一网段。
  • 通信流程:客户端请求到达调度器后,调度器将数据包的目标 MAC 地址修改为目标节点的 MAC 地址,IP 地址保持 VIP 不变;节点接收数据包后,直接通过本地网络将响应返回给客户端(源 IP 为 VIP)。
  • 特点:调度器仅处理请求入口流量,响应流量由节点直接返回,性能最高;但需确保节点与调度器在同一局域网,且节点需配置 ARP 抑制策略(避免 ARP 广播暴露真实 IP),适用于高负载、低延迟场景。

1.4 三种模式对比与选型建议

维度NAT 模式TUN 模式DR 模式
公网 IP 需求1 个(调度器)多个(调度器 + 所有节点)1 个(调度器)
流量路径调度器双向转发请求经调度器,响应直连客户端请求经调度器,响应直连客户端
节点位置同一局域网任意公网位置同一局域网
性能瓶颈调度器可能成为瓶颈无明显瓶颈无明显瓶颈
安全性高(节点私有 IP)低(节点公网暴露)中(需 ARP 防护)
适用场景中小型集群、硬件资源有限跨地域分布式集群高并发、低延迟场景

选型建议

  • 若集群规模较小且对安全性要求高,优先选择 NAT 模式;
  • 若节点需分布在不同地域,或需要处理海量并发请求,可考虑 TUN 或 DR 模式,其中 DR 模式因性能优势更常用。

第二章 LVS 虚拟服务器核心技术

2.1 LVS 项目起源与架构

LVS(Linux Virtual Server)由我国章文嵩博士于 1998 年创建,是 Linux 内核级的负载均衡解决方案。其核心思想是通过 IP 层的流量转发,将多个物理服务器虚拟为一个高性能、高可用的服务节点。LVS 作为 Linux 内核的一部分,默认编译为ip_vs模块,提供基于 IP 地址和端口的流量调度功能,支持多种负载均衡算法和工作模式。

2.2 ip_vs 模块与内核集成

2.2.1 模块加载与查看

在 CentOS 7、OpenEuler 等系统中,ip_vs模块默认已编译但未加载,可通过以下命令手动加载并查看信息:

modprobe ip_vs          # 加载模块
cat /proc/net/ip_vs     # 查看模块版本及支持的调度算法

输出结果显示模块版本(如IP Virtual Server version 1.2.1)和当前启用的调度算法列表。

2.2.2 模块功能特性
  • 多协议支持:支持 TCP、UDP、SCTP 等多种协议,可应用于 HTTP、FTP、DNS 等不同服务场景。
  • 连接跟踪:维护客户端连接状态,确保同一连接的后续请求始终分发到同一节点(会话保持)。
  • 热更新:支持动态调整负载调度算法和节点配置,无需重启服务。

2.3 负载调度算法详解

LVS 提供多种负载调度算法,根据服务器节点性能、连接状态等因素动态分配请求,以下是四种最常用算法:

2.3.1 轮询(Round Robin, RR)
  • 原理:将请求按顺序轮流分配给每个节点,不考虑节点的负载状态和性能差异,确保每个节点处理相同数量的请求。
  • 适用场景:节点性能相近、负载均匀的场景,如静态文件服务器集群。
  • 优点:实现简单,公平分配资源;
  • 缺点:无法应对节点性能差异,可能导致高性能节点资源浪费。
2.3.2 加权轮询(Weighted Round Robin, WRR)
  • 原理:为每个节点设置权重值(weight),权重越高的节点分配到的请求越多。权重可根据节点的 CPU、内存等性能指标动态调整。
  • 适用场景:节点性能差异较大的集群,如混合配置的服务器池。
  • 优点:充分利用高性能节点的资源,提升整体吞吐量;
  • 缺点:权重设置需要人工干预,无法实时动态调整。
2.3.3 最少连接(Least Connections, LC)
  • 原理:根据节点当前已建立的连接数进行分配,将请求优先发送给连接数最少的节点。适用于长连接服务(如数据库连接),避免节点过载。
  • 适用场景:动态内容服务(如 Web 应用),请求处理时间不均匀的场景。
  • 优点:实时感知节点负载,均衡效果更佳;
  • 缺点:需要维护每个节点的连接状态,增加调度器开销。
2.3.4 加权最少连接(Weighted Least Connections, WLC)
  • 原理:结合节点权重和连接数进行分配,公式为:active_conns / weight,数值最小的节点优先接收请求。既考虑节点性能差异,又动态跟踪负载状态。
  • 适用场景:高性能节点与普通节点混合的集群,需兼顾性能和实时负载的场景。
  • 优点:综合性能最优,资源利用率最高;
  • 缺点:算法复杂度较高,对调度器性能要求略高。

2.4 ipvsadm 管理工具全解析

ipvsadm是 LVS 的用户空间管理工具,用于在负载调度器上配置虚拟服务器、管理节点列表、查看运行状态等操作。以下是其核心功能及使用示例:

2.4.1 安装与版本查看

在 OpenEuler 系统中,需手动安装ipvsadm软件包:

dnf install ipvsadm    # 安装命令
ipvsadm -v             # 查看版本信息(如v1.31)
2.4.2 创建与删除虚拟服务器
  • 创建虚拟服务器:

    ipvsadm -A -t VIP:PORT -s 算法 [-m|-g|-i]
    
     
    • -A:添加虚拟服务器;
    • -t:指定 VIP 和端口(如172.16.16.172:80);
    • -s:指定调度算法(如rrwrrlcwlc);
    • -m|-g|-i:指定工作模式(-m:NAT;-g:DR;-i:TUN)。
      示例:创建 NAT 模式、轮询算法的 HTTP 虚拟服务器:
    ipvsadm -A -t 192.168.74.129:80 -s rr -m
    
  • 删除虚拟服务器

    ipvsadm -D -t VIP:PORT    # 删除指定虚拟服务器
    
2.4.3 管理真实服务器节点
  • 添加节点

    ipvsadm -a -t VIP:PORT -r RIP:PORT [-m|-g|-i] -w 权重
    
     
    • -a:添加真实服务器;
    • -r:指定节点的 RIP 和端口;
    • -w:设置节点权重(默认权重为 1,0 表示暂停节点)。
      示例:为虚拟服务器添加两个 NAT 模式、权重为 1 的节点:
    ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1
    ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1
    
  • 删除节点

    ipvsadm -d -t VIP:PORT -r RIP:PORT    # 删除指定节点
    
2.4.4 查看与保存配置
  • 查看群集状态

    ipvsadm -ln          # 以数字形式显示节点信息(避免DNS解析延迟)
    
     

    输出中Forward列显示工作模式(Masq为 NAT,Route为 DR),Weight列为节点权重,ActiveConnInActConn分别表示活动连接数和非活动连接数。

  • 保存与恢复策略

    ipvsadm-save > /etc/sysconfig/ipvsadm  # 保存当前策略到文件
    systemctl restart ipvsadm              # 重启服务加载策略
    

3.1 NFS 协议基础与应用场景

NFS(Network File System)是 Sun 公司开发的网络文件系统协议,基于 TCP/IP 实现跨主机的文件共享。在负载均衡群集中,NFS 用于为所有服务器节点提供统一的文件存储,确保各节点访问相同的静态资源(如网站 HTML 文件、图片等),避免数据不一致问题。其核心原理是通过 RPC(Remote Process Call)机制,将远程服务器的目录映射为本地文件系统的一部分,用户和应用程序可透明访问远程文件。

3.2 NFS 服务端配置流程

3.2.1 软件包安装与服务启动

在 OpenEuler 系统中,NFS 服务依赖于nfs-utilsrpcbind软件包:

yum -y install nfs-utils rpcbind    # 安装软件包
systemctl enable rpcbind nfs-server # 设置开机自启
systemctl start rpcbind nfs-server  # 启动服务

注意:需先启动rpcbind(提供 RPC 服务),再启动nfs-server

3.2.2 共享目录配置

NFS 的共享配置通过/etc/exports文件实现,格式为:

共享目录 客户机地址(权限选项)

  • 共享目录:需提前创建(如mkdir -p /opt/wwwroot);
  • 客户机地址:可以是 IP 地址、网段(如192.168.10.0/24)或通配符(如*表示所有客户机);
  • 权限选项:常见选项包括rw(读写)、ro(只读)、no_root_squash(允许 root 用户访问)、sync(同步写入)等。

示例 1:将/opt/wwwroot共享给 192.168.10.0/24 网段,允许读写且赋予 root 权限:

/opt/wwwroot 192.168.10.0/24(rw,no_root_squash,sync)

示例 2:将/var/ftp/public目录分别共享给两台客户机,一台只读,一台读写:

/var/ftp/public 192.168.10.101(ro) 192.168.10.102(rw)
3.2.3 刷新配置与验证

修改/etc/exports后,需重新加载配置使生效:

exportfs -r  # 重新导出共享目录

使用showmount命令查看当前共享列表:

showmount -e localhost  # 查看本机共享目录

输出类似:

Export list for localhost:
/opt/wwwroot 192.168.

 

五、总结与扩展

  • 核心价值:LVS 通过负载均衡算法和多模式支持,提升系统并发能力与可用性;NFS 确保群集数据一致性,是负载均衡群集的重要组成部分。
  • 扩展方向:结合 Keepalived 实现调度器高可用、探索 DR/TUN 模式优化、集成监控系统(如 Prometheus)实时跟踪集群状态。
http://www.xdnf.cn/news/668125.html

相关文章:

  • 计算机网络实验课(三)——直接使用数据构造以太网帧,打包并发送|使用SharpPcap库函数构造以太网帧,并发送出去
  • 哈希算法:原理、应用、安全演进与推荐
  • 学习路之PHP--easyswoole入门及文件热加载
  • 织梦dedecms arclist最新发布日期显示红色
  • Android 15 控制亮屏灭屏接口实现
  • WPF【11_2】WPF实战-重构与美化(Entity Framework)-示例
  • 数据仓库基础知识总结
  • Python-ArcGIS蒸散发组分解析与GPP估算技术
  • 数据中台(大数据平台)之数据仓库建设
  • LLM+RAG:文本分块处理策略
  • Apache DolphinScheduler存储系统详解| AI生成技术文档系列
  • Vue3进阶教程:1.初次了解vue
  • Mobaxterm解锁Docker
  • Docker Desktop for Windows 系统设置说明文档
  • DBCP连接池的使用方法和源码分析
  • PCB布局/走线
  • 2025年上半年第2批信息系统项目管理师论文真题解析与范文
  • 深入理解Java中的BigDecimal:高精度计算的核心工具
  • 第二批考更有利?软考高项两个批次考试难度对比分析!
  • 银河麒麟V10×R²AIN SUITE:用AI重构安全,以国产化生态定义智能未来
  • Ansible 配置Playbook文件格式、关键字和语法详解
  • 每日Prompt:古花卷
  • 探究Azure devops 流水线缓存
  • 详解MYSQL索引失效问题排查
  • 关于 Web 安全:6. 常见 CMS 开源系统风险点
  • 利用 `ngx_http_xslt_module` 实现 NGINX 的 XML → HTML 转换
  • 深度学习常用概念详解:从生活理解到技术原理
  • 新电脑配置五 jdk8,maven,idea,vscode
  • 单片机(MCU)的 IO 口静电、浪涌、电压异常等保护
  • OpenEuler-DNS多域服务器搭建