从原理到实战:LVS 负载均衡集群全解析(OpenEuler 环境)

摘要

在互联网应用高并发、高可用的核心需求下,单台服务器的性能瓶颈早已成为业务发展的致命短板。LVS(Linux Virtual Server)作为 Linux 内核原生的负载均衡解决方案,凭借其高性能、高稳定性、低资源消耗的特性,成为企业级集群架构的核心组件。本文将从 LVS 的基础原理、核心架构、调度算法,到 OpenEuler 系统下的实战部署、NFS 共享存储配置、LVS-NAT 模式完整案例,全方位拆解 LVS 负载均衡集群的技术细节,帮助读者从零搭建一套高可用的企业级负载均衡系统,同时深入理解负载均衡分层架构、工作模式的核心差异,解决实际运维中的常见问题。


一、LVS 负载均衡集群基础认知

1.1 集群技术概述

在互联网应用的演进中,随着用户量、访问量的爆发式增长,单台服务器的硬件性能(CPU、内存、磁盘 I/O、网络带宽)存在天然上限,无法满足高并发场景下的业务需求。同时,单台服务器一旦出现故障,会直接导致业务中断,可用性无法保障。

集群技术(Cluster)正是为解决这一问题而生:集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个统一的计算资源池,对外表现为一个单一的系统实体。用户访问集群时,感知到的是一个统一的服务入口,而无需感知集群内部的多台服务器。

集群技术的核心价值体现在三个维度:

  • 高性能(High Performance):通过多台服务器并行处理请求,将单台服务器的性能瓶颈转化为集群的线性扩展能力,支撑更高的并发访问;
  • 高可用性(High Availability):通过冗余部署,当集群中某台服务器故障时,负载均衡器会自动将请求转发至健康的服务器,保障业务不中断;
  • 可扩展性(Scalability):无需修改业务架构,仅需向集群中新增服务器节点,即可提升集群整体处理能力,适配业务增长需求。

1.2 集群的核心类型

根据集群的业务场景和核心目标,主流集群可分为三类:

1.2.1 负载均衡集群(Load Balancing Cluster)

负载均衡集群是最常见的集群类型,核心目标是将用户请求均匀分发到集群中的多台服务器节点,避免单台服务器负载过高,同时提升系统整体并发处理能力。

其核心逻辑是:通过负载均衡调度器(Director)作为统一入口,接收所有用户请求,根据预设的调度算法,将请求分发到后端真实服务器(Real Server)处理,真实服务器处理完成后,将结果返回给用户。

这类集群广泛应用于 Web 服务、API 网关、数据库读写分离等场景,LVS、Nginx、HAProxy 是主流的负载均衡解决方案,其中 LVS 是四层负载均衡的标杆产品。

1.2.2 高可用集群(High Availability Cluster)

高可用集群的核心目标是消除单点故障,保障业务的持续可用性。通过冗余部署多台服务器,当主节点出现故障时,自动将服务切换到备用节点,实现业务的无缝衔接,用户无感知。

常见的高可用方案如 Keepalived+LVS、Heartbeat 等,核心指标是系统可用性(Availability) ,计算公式为:可用性 = 正常运行时间 / (正常运行时间 + 故障停机时间),企业级高可用集群通常要求 99.99%(年停机时间≤52 分钟)甚至 99.999%(年停机时间≤5 分钟)的可用性。

1.2.3 高性能计算集群(High Performance Computing Cluster)

高性能计算集群(HPC)核心目标是提升计算性能,通过多台服务器并行处理复杂的计算任务,如科学计算、大数据分析、AI 模型训练等。这类集群通常采用 MPI(Message Passing Interface)等并行计算框架,将大型任务拆解为多个子任务,分发到集群节点并行计算,最终汇总结果。

1.3 负载均衡的分层架构

负载均衡集群并非简单的 "调度器 + 服务器" 组合,而是一个分层的、可扩展的架构体系,典型的负载均衡分层结构如下:

第一层:负载调度器(Director)

调度器是整个集群的统一入口,所有外部用户的请求都首先到达调度器。调度器根据预设的调度算法,将请求分发到后端的真实服务器节点。

为了避免调度器成为单点故障,通常会部署主备两台调度器,通过 HA(高可用)技术实现故障自动切换:当主调度器故障时,备用调度器自动接管虚拟 IP(VIP),保障集群入口的可用性。

第二层:服务器池(Server Pool)

服务器池是集群的业务处理核心,由多台真实服务器(Real Server)组成,负责处理调度器分发的用户请求,执行业务逻辑(如 Web 服务、应用服务等)。

服务器池中的节点是对等的,可根据业务需求动态扩容 / 缩容:新增节点时,仅需将其加入调度器的分发列表;节点故障时,调度器会自动将其从分发列表中剔除,不影响集群整体服务。

第三层:共享存储(Shared Storage)

共享存储是集群的数据一致性保障,为服务器池中的所有节点提供统一、一致的数据存储。在 Web 服务场景中,共享存储通常存储网站的静态资源、配置文件等,确保所有后端服务器访问到的数据完全一致,避免用户请求分发到不同服务器时出现数据不一致的问题。

NFS(Network File System)是 Linux 环境下最常用的共享存储解决方案,通过网络将存储服务器的目录共享给后端服务器,实现数据的统一管理。

1.4 负载均衡的三种工作模式

LVS 支持三种核心工作模式,分别适用于不同的网络架构和业务场景,核心差异在于请求转发和响应返回的路径

1.4.1 NAT 模式(Network Address Translation,网络地址转换)

NAT 模式是最基础的 LVS 工作模式,原理类似防火墙的地址转换技术:

  • 请求转发:用户请求到达调度器后,调度器将请求的目标 IP(VIP)转换为后端真实服务器的内网 IP,将请求转发给真实服务器;
  • 响应返回:真实服务器处理完成后,将响应返回给调度器,调度器再将源 IP(真实服务器内网 IP)转换为 VIP,返回给用户;
  • 核心特点:调度器作为请求和响应的必经节点,真实服务器无需公网 IP,仅需内网 IP 即可,安全性高;但调度器会成为性能瓶颈,因为所有请求和响应都需要经过调度器转发,适用于中小型集群。
1.4.2 DR 模式(Direct Routing,直接路由)

DR 模式是企业级生产环境最常用的 LVS 工作模式,核心原理是改写请求的 MAC 地址

  • 请求转发:调度器接收用户请求后,不修改 IP 地址,仅将请求的目标 MAC 地址修改为选中的真实服务器的 MAC 地址,将请求转发到真实服务器;
  • 响应返回:真实服务器处理完成后,直接将响应返回给用户,无需经过调度器;
  • 核心特点:响应数据不经过调度器,调度器仅处理请求转发,性能极高,可支撑万级并发;但要求真实服务器与调度器在同一二层网络(同一局域网),真实服务器需要配置 VIP(隐藏在 lo 接口),适用于大型高并发集群。
1.4.3 TUN 模式(IP Tunneling,IP 隧道)

TUN 模式是 DR 模式的扩展,核心原理是通过 IP 隧道封装请求

  • 请求转发:调度器将用户请求封装在新的 IP 数据包中,发送给真实服务器;
  • 响应返回:真实服务器解封装后处理请求,直接将响应返回给用户;
  • 核心特点:真实服务器可部署在不同的地域、不同的网络中,无需与调度器在同一局域网;但需要真实服务器支持 IP 隧道协议,配置复杂度高,适用于跨地域的分布式集群。

三种工作模式的核心对比如下:

表格

工作模式 请求转发方式 响应路径 调度器性能瓶颈 网络要求 适用场景
NAT 模式 地址转换 经过调度器 无特殊要求 中小型集群、内网服务
DR 模式 MAC 地址改写 直接返回用户 同一二层网络 大型高并发集群、公网服务
TUN 模式 IP 隧道封装 直接返回用户 无特殊要求 跨地域分布式集群

二、LVS 核心原理与调度算法

2.1 LVS 技术概述

LVS(Linux Virtual Server)是由我国程序员章文嵩博士主导开发的开源负载均衡项目,从 Linux 2.6 内核开始,LVS 已经被集成到 Linux 内核中,无需额外安装内核模块,直接通过用户态工具即可配置使用。

LVS 是四层负载均衡解决方案,工作在 OSI 模型的传输层(Layer 4),仅基于 IP 地址和端口号进行请求转发,不解析应用层数据(如 HTTP、HTTPS),因此转发性能极高,单台调度器可支撑数万级别的并发请求,资源消耗极低,远优于七层负载均衡(如 Nginx)。

LVS 的核心组件分为两部分:

  • 内核态 IPVS 模块:集成在 Linux 内核中,负责实际的请求转发、调度算法执行,是 LVS 高性能的核心保障;
  • 用户态 ipvsadm 工具:用于配置和管理 IPVS 规则,如添加虚拟服务、管理真实服务器、查看集群状态等,是运维人员操作 LVS 的入口。

2.2 LVS 的核心调度算法

调度算法是 LVS 的核心大脑,决定了调度器如何将用户请求分发到后端真实服务器。LVS 提供了 10 种调度算法,分为静态调度算法动态调度算法两大类:

2.2.1 静态调度算法

静态调度算法仅根据预设的规则分发请求,不考虑后端服务器的实时负载状态,适用于服务器性能一致、负载均衡的场景:

  1. 轮询(Round Robin, RR) 最基础的调度算法,调度器按顺序将请求依次分发到后端服务器,即服务器1→服务器2→服务器3→服务器1→...,实现简单,假设所有服务器性能一致,适用于服务器配置相同的场景。

  2. **加权轮询(Weighted Round Robin, WRR)**轮询算法的增强版,为每台服务器分配一个权重值(Weight),权重越高的服务器,被分发的请求越多。例如:服务器 A 权重为 2,服务器 B 权重为 1,则请求分发比例为 2:1,适用于服务器性能不一致的场景,可根据服务器硬件配置分配权重,充分利用高性能服务器的资源。

  3. **源地址哈希(Source Hashing, SH)**根据用户请求的源 IP 地址进行哈希计算,将同一源 IP 的请求固定分发到同一台后端服务器,适用于需要会话保持的场景(如用户登录状态),确保同一用户的请求始终由同一服务器处理,避免会话丢失。

  4. **目标地址哈希(Destination Hashing, DH)**根据请求的目标 IP 地址进行哈希计算,将同一目标 IP 的请求分发到同一台服务器,适用于缓存集群场景,提升缓存命中率。

2.2.2 动态调度算法

动态调度算法会根据后端服务器的实时负载状态(如当前连接数、响应时间等)分发请求,实现更精准的负载均衡,适用于服务器负载波动较大的场景:

  1. 最少连接(Least Connections, LC) 调度器将请求分发到当前活动连接数最少的后端服务器,确保服务器负载尽可能均衡,适用于长连接场景(如数据库连接)。

  2. 加权最少连接(Weighted Least Connections, WLC) 最少连接算法的增强版,结合服务器权重和当前连接数,计算公式为:负载率 = 活动连接数 / 权重,调度器将请求分发到负载率最低的服务器,兼顾服务器性能和实时负载,是 LVS 最常用的调度算法之一。

  3. 最短期望延迟(Shortest Expected Delay, SED) 加权最少连接的优化版,计算公式为:(活动连接数 + 1) / 权重,避免了 WLC 算法中 "权重高的服务器连接数始终为 0" 的问题,适用于服务器性能差异较大的场景。

  4. **最少队列(Never Queue, NQ)**SED 算法的优化版,若存在连接数为 0 的服务器,则直接将请求分发到该服务器,否则按 SED 算法分发,确保空闲服务器优先处理请求,提升响应速度。

  5. **基于局部性的最少连接(Locality-Based Least Connections, LBLC)**结合目标地址哈希和最少连接算法,将同一目标 IP 的请求分发到同一台服务器,若该服务器负载过高,则分发到负载最低的服务器,适用于缓存集群。

  6. **带复制的基于局部性最少连接(Locality-Based Least Connections with Replication, LBLCR)**LBLC 算法的增强版,当目标 IP 对应的服务器负载过高时,将请求复制到多台服务器,适用于大型缓存集群。

2.3 ipvsadm 工具详解

ipvsadm 是 LVS 的用户态管理工具,用于配置、管理、查看 IPVS 规则,是运维 LVS 集群的核心工具。在 OpenEuler 系统中,可通过以下命令安装 ipvsadm:

复制代码
dnf install ipvsadm -y
2.3.1 核心命令语法

ipvsadm 的核心命令分为虚拟服务管理、真实服务器管理、规则查看三大类:

  1. 虚拟服务管理虚拟服务是 LVS 对外提供的统一入口,由 VIP(虚拟 IP)、端口、协议组成,核心命令如下:

    复制代码
    # 添加虚拟服务
    ipvsadm -A -t <VIP:端口> -s <调度算法>
    # 参数说明:
    # -A:添加虚拟服务
    # -t:TCP协议(-u为UDP协议)
    # -s:指定调度算法(如rr、wrr、lc、wlc等)
    
    # 删除虚拟服务
    ipvsadm -D -t <VIP:端口>
    
    # 修改虚拟服务
    ipvsadm -E -t <VIP:端口> -s <新调度算法>
  2. 真实服务器管理真实服务器是后端处理请求的节点,核心命令如下:

    复制代码
    # 添加真实服务器到虚拟服务
    ipvsadm -a -t <VIP:端口> -r <真实服务器IP:端口> -g/-i/-m [-w <权重>]
    # 参数说明:
    # -a:添加真实服务器
    # -r:指定真实服务器IP和端口
    # -g:DR模式(默认)
    # -i:TUN模式
    # -m:NAT模式
    # -w:指定服务器权重(默认1)
    
    # 删除真实服务器
    ipvsadm -d -t <VIP:端口> -r <真实服务器IP:端口>
  3. 规则查看与管理

    复制代码
    # 查看当前IPVS规则(-n表示不解析域名,提升速度)
    ipvsadm -Ln
    
    # 清空所有IPVS规则
    ipvsadm -C
    
    # 保存IPVS规则(重启后生效)
    ipvsadm -S > /etc/sysconfig/ipvsadm
    # 加载保存的规则
    ipvsadm -R < /etc/sysconfig/ipvsadm
    
    # 查看LVS连接状态
    ipvsadm -Lnc
2.3.2 常用操作示例
复制代码
# 1. 添加TCP虚拟服务,VIP为192.168.172.16,端口80,调度算法为轮询
ipvsadm -A -t 192.168.172.16:80 -s rr

# 2. 添加两台真实服务器,NAT模式,权重分别为1和2
ipvsadm -a -t 192.168.172.16:80 -r 192.168.172.23:80 -m -w 1
ipvsadm -a -t 192.168.172.16:80 -r 192.168.172.24:80 -m -w 2

# 3. 查看IPVS规则
ipvsadm -Ln

# 4. 保存规则,开机自启
ipvsadm -S > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm

三、NFS 共享存储配置

在 LVS 负载均衡集群中,后端多台真实服务器需要访问一致的业务数据(如网站静态资源、配置文件),否则用户请求分发到不同服务器时,会出现数据不一致的问题。NFS(Network File System)是 Linux 环境下最常用的共享存储解决方案,通过网络将存储服务器的目录共享给后端服务器,实现数据的统一管理。

3.1 NFS 技术概述

NFS 是基于 TCP/IP 协议的网络文件系统,允许服务器通过网络共享目录,客户端可以像访问本地目录一样访问共享目录,实现数据的集中存储和多服务器共享访问。

NFS 的核心组件:

  • NFS 服务端:部署共享存储的服务器,负责共享目录、配置访问权限;
  • NFS 客户端:后端真实服务器,挂载 NFS 服务端的共享目录,访问共享数据;
  • RPC(Remote Procedure Call):远程过程调用协议,用于 NFS 服务端和客户端之间的通信,NFS 依赖 RPC 服务实现端口映射。

3.2 NFS 服务端部署(OpenEuler 环境)

3.2.1 安装 NFS 服务
复制代码
# 安装NFS和RPC服务
dnf install nfs-utils rpcbind -y

# 启动服务并设置开机自启
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
3.2.2 配置共享目录

NFS 的核心配置文件为/etc/exports,用于配置共享目录、访问权限、允许访问的客户端 IP 等,配置语法如下:

复制代码
<共享目录> <允许访问的客户端IP/网段>(权限参数)

常用权限参数:

  • rw:读写权限;ro:只读权限;
  • sync:同步写入,数据写入磁盘后再返回响应,数据安全;
  • async:异步写入,数据写入内存后立即返回响应,性能高,可能存在数据丢失风险;
  • no_root_squash:不压缩 root 用户权限,客户端 root 用户对共享目录拥有 root 权限(慎用);
  • root_squash:压缩 root 用户权限,客户端 root 用户映射为 nfsnobody 用户(默认);
  • all_squash:压缩所有用户权限,所有客户端用户都映射为 nfsnobody 用户;
  • anonuid/anongid:指定映射的用户 UID 和 GID。

配置示例

复制代码
# 1. 创建共享目录
mkdir -p /data/nfs/web
chmod 777 /data/nfs/web  # 赋予读写权限,确保客户端可写入

# 2. 编辑/etc/exports配置文件
vi /etc/exports
# 添加以下内容:允许192.168.172.0/24网段的客户端读写访问/data/nfs/web目录
/data/nfs/web 192.168.172.0/24(rw,sync,no_root_squash)

# 3. 重载配置文件,使配置生效
exportfs -r

# 4. 查看共享目录
exportfs -v
3.2.3 配置防火墙

NFS 依赖多个端口,需要在防火墙中开放相关端口:

复制代码
# 开放NFS和RPC相关端口
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

3.3 NFS 客户端部署(后端真实服务器)

3.3.1 安装 NFS 客户端工具
复制代码
dnf install nfs-utils -y
3.3.2 挂载共享目录
复制代码
# 1. 创建本地挂载目录
mkdir -p /var/www/html

# 2. 挂载NFS共享目录
mount -t nfs 192.168.168.102:/data/nfs/web /var/www/html

# 3. 查看挂载状态
df -h
3.3.3 配置开机自动挂载

为了确保服务器重启后自动挂载 NFS 共享目录,需要编辑/etc/fstab文件:

复制代码
vi /etc/fstab
# 添加以下内容:
192.168.168.102:/data/nfs/web  /var/www/html  nfs  defaults  0  0

# 重载fstab配置,验证挂载
mount -a
df -h

3.4 NFS 共享存储验证

在 NFS 服务端的共享目录中创建测试文件:

复制代码
# 在服务端执行
echo "NFS shared storage test" > /data/nfs/web/index.html

在 NFS 客户端(后端真实服务器)的挂载目录中查看文件:

复制代码
# 在客户端执行
cat /var/www/html/index.html
# 输出:NFS shared storage test,说明共享存储配置成功

四、LVS-NAT 模式完整实战部署

4.1 实验环境规划

本次实战采用 LVS-NAT 模式,搭建一套完整的负载均衡集群,环境规划如下:

表格

角色 操作系统 IP 地址 核心配置
LVS 调度器 OpenEuler 24.03 公网 IP:192.168.172.129内网 IP:192.168.168.100 开启 IP 转发,安装 ipvsadm
真实服务器 web1 OpenEuler 24.03 内网 IP:192.168.168.102 部署 httpd 服务,挂载 NFS 共享存储
真实服务器 web2 OpenEuler 24.03 内网 IP:192.168.168.103 部署 httpd 服务,挂载 NFS 共享存储
NFS 共享存储 OpenEuler 24.03 内网 IP:192.168.168.102(与 web1 复用) 部署 NFS 服务,共享网站数据
客户端 Windows/Linux 公网 IP:192.168.172.0/24 用于访问 LVS 集群,验证负载均衡

4.2 LVS 调度器配置

4.2.1 开启 IP 转发

NAT 模式下,调度器需要转发 IP 数据包,因此必须开启内核 IP 转发功能:

复制代码
# 临时开启(重启后失效)
echo 1 > /proc/sys/net/ipv4/ip_forward

# 永久开启,编辑/etc/sysctl.conf
vi /etc/sysctl.conf
# 添加/修改以下内容:
net.ipv4.ip_forward = 1

# 重载配置,使生效
sysctl -p
4.2.2 安装 ipvsadm 工具
复制代码
dnf install ipvsadm -y
# 清空默认规则
ipvsadm -C
4.2.3 配置 LVS-NAT 模式虚拟服务
复制代码
# 1. 添加虚拟服务,VIP为调度器公网IP 192.168.172.129,端口80,调度算法为轮询
ipvsadm -A -t 192.168.172.129:80 -s rr

# 2. 添加两台真实服务器,NAT模式(-m参数)
ipvsadm -a -t 192.168.172.129:80 -r 192.168.168.102:80 -m
ipvsadm -a -t 192.168.172.129:80 -r 192.168.168.103:80 -m

# 3. 查看IPVS规则
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.172.129:80 rr
#   -> 192.168.168.102:80           Masq    1      0          0
#   -> 192.168.168.103:80           Masq    1      0          0
# Masq表示NAT模式,说明配置成功

# 4. 保存规则,开机自启
ipvsadm -S > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm

4.3 后端真实服务器配置

4.3.1 部署 httpd 服务

在 web1 和 web2 两台服务器上分别执行:

复制代码
# 安装httpd服务
dnf install httpd -y

# 启动服务并设置开机自启
systemctl start httpd
systemctl enable httpd

# 配置防火墙,开放80端口
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
4.3.2 配置默认网关

NAT 模式下,真实服务器的默认网关必须指向 LVS 调度器的内网 IP(192.168.168.100),否则响应数据无法返回给调度器:

复制代码
# 临时修改默认网关(重启后失效)
route add default gw 192.168.168.100

# 永久修改,编辑网卡配置文件(以eth1为例,根据实际网卡名称修改)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
# 添加/修改以下内容:
GATEWAY=192.168.168.100

# 重启网络服务,使生效
systemctl restart NetworkManager
# 验证网关
route -n
4.3.3 挂载 NFS 共享存储

在 web1 和 web2 两台服务器上分别执行(NFS 服务端部署在 web1 上):

复制代码
# 安装NFS客户端
dnf install nfs-utils -y

# 挂载NFS共享目录到httpd的默认根目录
mount -t nfs 192.168.168.102:/data/nfs/web /var/www/html

# 配置开机自动挂载
vi /etc/fstab
# 添加:
192.168.168.102:/data/nfs/web  /var/www/html  nfs  defaults  0  0
mount -a
4.3.4 配置测试页面

在 NFS 服务端(web1)的共享目录中创建测试页面:

复制代码
# 在web1执行
echo "<h1>LVS-NAT Cluster Test - Web Server 1 (192.168.168.102)</h1>" > /data/nfs/web/index.html
# 为了验证负载均衡,在web2本地创建不同的测试页面(覆盖NFS共享页面)
echo "<h1>LVS-NAT Cluster Test - Web Server 2 (192.168.168.103)</h1>" > /var/www/html/index.html

4.4 集群验证

在客户端(公网 IP 192.168.172.0/24 网段)通过浏览器访问http://192.168.172.129,多次刷新页面,会交替显示两台真实服务器的测试页面,说明 LVS-NAT 模式负载均衡配置成功,请求被均匀分发到两台后端服务器。

同时,在 LVS 调度器上查看连接状态:

复制代码
ipvsadm -Lnc
# 输出示例:
# IPVS connection entries
# pro expire state       source             virtual            destination
# TCP 01:58  ESTABLISHED 192.168.172.1:54321 192.168.172.129:80 192.168.168.102:80
# TCP 01:58  ESTABLISHED 192.168.172.1:54322 192.168.172.129:80 192.168.168.103:80

可以看到客户端请求被分别转发到两台真实服务器,负载均衡生效。


五、LVS 集群运维与优化

5.1 集群健康检查

LVS 本身不提供后端服务器健康检查功能,若后端服务器故障,LVS 仍会将请求分发到该服务器,导致用户访问失败。因此,需要结合第三方工具实现健康检查,常用方案为Keepalived+LVS

  • Keepalived 不仅可以实现 LVS 调度器的高可用(主备切换),还可以配置后端服务器的健康检查,定期检测服务器状态,自动剔除故障服务器,恢复后自动加入集群;
  • 健康检查方式:TCP 端口检测、HTTP/HTTPS 状态码检测、脚本自定义检测等。

5.2 性能优化

5.2.1 内核参数优化

针对 LVS 调度器,优化内核参数提升转发性能:

复制代码
vi /etc/sysctl.conf
# 添加以下优化参数:
# 开启IP转发
net.ipv4.ip_forward = 1
# 调整连接跟踪表大小,提升并发连接数
net.netfilter.nf_conntrack_max = 262144
# 调整TCP连接超时时间,快速回收空闲连接
net.netfilter.nf_conntrack_tcp_timeout_established = 300
# 开启SYN Cookies,防范SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 调整端口范围,提升临时端口数量
net.ipv4.ip_local_port_range = 1024 65535

# 重载配置
sysctl -p
5.2.2 调度算法优化

根据业务场景选择合适的调度算法:

  • 短连接、服务器性能一致:轮询(RR);
  • 服务器性能不一致:加权轮询(WRR)/ 加权最少连接(WLC);
  • 长连接、会话保持:源地址哈希(SH);
  • 高并发、负载波动大:最少连接(LC)/ 加权最少连接(WLC)。

5.3 常见问题排查

5.3.1 客户端无法访问 LVS 集群
  • 排查调度器 IP 转发是否开启:cat /proc/sys/net/ipv4/ip_forward,输出应为 1;
  • 排查 IPVS 规则是否正确:ipvsadm -Ln,确认虚拟服务和真实服务器配置正确;
  • 排查防火墙规则:确认调度器开放了对应端口,后端服务器网关配置正确;
  • 排查网络连通性:客户端 ping 调度器 VIP,调度器 ping 后端服务器 IP。
5.3.2 负载均衡不生效,请求始终分发到同一台服务器
  • 排查调度算法:若使用源地址哈希(SH),同一客户端 IP 会固定分发到同一服务器,更换为轮询算法;
  • 排查后端服务器状态:确认多台服务器均正常运行,权重配置正确;
  • 排查客户端缓存:清除浏览器缓存,使用不同客户端 IP 测试。
5.3.3 NFS 共享存储挂载失败
  • 排查 NFS 服务状态:systemctl status nfs-server,确认服务正常运行;
  • 排查防火墙:确认 NFS 服务端开放了 nfs、rpc-bind、mountd 服务;
  • 排查 /etc/exports 配置:确认客户端 IP 网段、权限配置正确,执行exportfs -r重载配置;
  • 排查网络连通性:客户端 ping NFS 服务端 IP,测试端口连通性。

六、总结

LVS 作为 Linux 内核原生的四层负载均衡解决方案,凭借其高性能、高稳定性、低资源消耗的特性,是企业级高并发集群架构的核心组件。本文从 LVS 的基础原理、核心架构、调度算法,到 OpenEuler 系统下的 NFS 共享存储配置、LVS-NAT 模式完整实战部署,全方位拆解了 LVS 负载均衡集群的技术细节,帮助读者从零搭建一套企业级负载均衡系统。

在实际生产环境中,LVS 通常与 Keepalived 结合使用,实现调度器的高可用和后端服务器的健康检查;同时,可结合 Nginx 七层负载均衡,构建 "LVS+Nginx" 的多层负载均衡架构,兼顾高性能和业务灵活性,支撑千万级并发的互联网应用。

随着云原生、微服务架构的普及,LVS 依然是 Kubernetes 集群 Ingress Controller 的核心负载均衡组件,在容器化环境中发挥着重要作用。掌握 LVS 技术,不仅是运维人员的核心技能,更是理解高并发、高可用架构的基础。

相关推荐
南境十里·墨染春水2 小时前
linux学习进展 主函数的参数
linux·运维·学习
ZGi.ai2 小时前
用Agent编排实现合同审查自动化:完整实现过程
运维·人工智能·自动化
魔都吴所谓2 小时前
【Ubuntu】22.04安装 CMake 3.24
linux·运维·ubuntu
守城小轩2 小时前
基于Chrome140的INS账号自动化——需求分析&环境搭建(一)
运维·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
w6100104663 小时前
CKA-2026-resources
运维·docker·容器·cka
程序员老邢3 小时前
【技术底稿 11】内网私有 Docker 镜像仓库 Registry2 全流程部署(多机共享,告别离线拷贝)
运维·docker·容器·架构·devops
SPC的存折3 小时前
6、MySQL设置TLS加密访问
linux·运维·服务器·数据库·mysql
wanhengidc3 小时前
云手机搬砖安全吗
大数据·运维·服务器·安全·游戏·智能手机
wanhengidc3 小时前
服务器管理器的作用有哪些?
运维·服务器·网络·安全·游戏·智能手机