目录
1.1.1 负载均衡群集(Load Balance Cluster)
1.1.2 高可用群集(High Availability Cluster)
1.1.3 高性能运算群集(High Performance Computer Cluster)
2.3.2 加权轮询(Weighted Round Robin, WRR)
2.3.3 最少连接(Least Connections, LC)
2.3.4 加权最少连接(Weighted Least Connections, WLC)
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
:指定调度算法(如rr
、wrr
、lc
、wlc
);-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
列为节点权重,ActiveConn
和InActConn
分别表示活动连接数和非活动连接数。保存与恢复策略:
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-utils
和rpcbind
软件包:
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)实时跟踪集群状态。