从原理到实战: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 技术,不仅是运维人员的核心技能,更是理解高并发、高可用架构的基础。

相关推荐
闪亮的路灯11 小时前
Linux 安装mqtt服务mosquitto
linux·运维·服务器
szxinmai主板定制专家14 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
叼烟扛炮14 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
Decay__15 小时前
09_MySQL 闪回与时间点恢复 —— binlog 回放、mysqlbinlog、PITR 与误删恢复
运维·数据库·sql·mysql·架构
久曲健的测试窝15 小时前
2026软件测试工具选型指南:双模式如何化解UI脚本维护难题
运维·人工智能·科技·aigc
NailiConveyor16 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
Lsetea17 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若12317 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
开开心心就好17 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
李纲明18 小时前
WordPress 白屏或提示「出现了严重错误」:先开 WP_DEBUG 抓致命错误,再二分插件与主题
运维·php·debug·wordpress·白屏·插件冲突·devdiy