【云计算】利用 LVS 构建集群实现负载均衡 | 集群的概念 | 单服务器性能瓶颈验证例子 | LVS 基础 | LVS 构建负载均衡集群实操步骤

利用 LVS 构建集群实现负载均衡

LVS 是构建高性能、高可靠负载均衡集群的利器,其内核态转发机制和丰富的调度算法,使其成为大规模集群场景的首选方案。在实际应用中,需根据业务场景选择合适的工作模式(DR 模式为最优选择),并结合 Keepalived 实现高可用,最终解决单服务器的性能瓶颈问题。

Ⅰ. 集群(Cluster)基础

0x00 集群的概念

集群(Cluster),是一组相互独立且相互依赖、通过高速网络互联的计算机组成的计算机组,以单一模式加以管理,为用户提供统一服务。

  • 从用户视角:感知不到背后的多台服务器,仅认为是一个单一服务节点。
  • 从集群内部视角:每一台独立的计算机称为集群节点

通过集群技术,能够以较低的硬件成本,换取性能、可靠性、灵活性 三方面的显著提升。而任务调度是整个集群系统的核心技术,负载均衡的本质就是一种任务调度策略。

0x01 集群的三大核心特性

你文中提到的"客观理性"属于笔误,集群的三大核心特性应为:

  1. 可伸缩性(Scalability)

    当业务负载增长时,可通过横向添加节点 的方式扩展集群整体性能,无需替换高性能硬件,成本可控。

    例如:单台服务器支持 1 万并发,扩展为 3 节点集群后,理论可支撑 3 万并发。

  2. 可靠性(Reliability)

    集群中的节点互为备份,当某一节点故障时,其他节点可自动接管其任务,避免单点故障导致服务中断。

    可靠性的核心指标是可用性(Availability),通常用"几个 9"衡量(如 99.99% 可用性代表全年停机时间不超过 52.56 分钟)。

  3. 可管理性(Manageability)

    集群可通过统一的管理接口进行配置、监控、维护,管理员无需逐个操作节点,降低运维复杂度。

0x02 单服务器的性能瓶颈验证

场景假设

  • 单台服务器最大支撑 10000 个并发请求,此时所有请求返回状态码 200(正常响应)。
  • 当并发量提升至 20000 时,返回状态码变为 200、304、301、500、504

现象分析

  • 200:少量请求仍正常处理;
  • 304:资源未修改,减少数据传输,但侧面反映服务器资源紧张;
  • 301:可能是服务器重定向策略触发,规避过载节点;
  • 500:服务器内部错误,代码或资源处理异常;
  • 504:网关超时,服务器无法在规定时间内响应请求。

结论 :该 Web 服务的单节点性能已达瓶颈,必须通过集群 + 负载均衡的方式扩展处理能力。

Ⅱ. LVS 核心技术解析

0x00 LVS 是什么

LVS(Linux Virtual Server)即Linux 虚拟服务器 ,是由章文嵩博士主导开发的开源负载均衡项目,工作在 OSI 七层模型的第 4 层(传输层),基于 IP 和端口实现负载均衡转发。

LVS 的核心优势:

  • 高性能:基于 Linux 内核态实现,转发效率远超 Nginx 等用户态软件,可支撑每秒百万级并发。
  • 高可靠:支持健康检查、故障自动切换,可部署为双主或主备模式。
  • 开源免费:基于 Linux 内核,无需额外付费,运维成本低。

0x01 LVS 的核心组件

一个完整的 LVS 集群包含 3 类角色:

角色 英文名称 作用
负载均衡器 Director Server 接收用户请求,根据调度算法转发至后端真实服务器
真实服务器 Real Server 处理具体业务请求(如 Web、数据库服务)
共享存储 Shared Storage 为所有 Real Server 提供统一的文件存储(如 NFS、GlusterFS),保证数据一致性

0x02 LVS 的三种工作模式

LVS 支持三种转发模式,不同模式的网络拓扑和适用场景不同:

  1. NAT 模式(网络地址转换)

    • 原理:Director Server 作为网关,将用户请求的目标 IP 转换为 Real Server 的私有 IP;Real Server 处理完请求后,将响应通过 Director Server 转发给用户(源 IP 转换为 Director 的公网 IP)。
    • 特点:Real Server 只需配置私有 IP,网关指向 Director Server;但 Director 是单点瓶颈,支持的节点数量有限(约 10-20 台)。
    • 适用场景:小规模集群、Real Server 无公网 IP 的场景。
  2. DR 模式(直接路由)

    • 原理:Director Server 仅转发请求报文的目标 MAC 地址,不修改 IP 地址;Real Server 处理完请求后,直接将响应报文发送给用户(无需经过 Director)。
    • 特点:性能最高,Director 仅负责转发,不处理响应;Real Server 需与 Director 在同一物理网段,且需配置 VIP(虚拟 IP)。
    • 适用场景:中大规模集群、对性能要求高的场景(如电商秒杀)。
  3. TUN 模式(IP 隧道)

    • 原理:Director Server 将用户请求封装在 IP 隧道中,转发至 Real Server;Real Server 解封装后处理请求,直接响应给用户。
    • 特点:Real Server 可跨网段部署,灵活性高;但需要服务器支持 IP 隧道协议(如 IPIP)。
    • 适用场景:跨地域、跨网段的分布式集群。

0x03 LVS 的调度算法

调度算法是 LVS 的核心,决定了请求如何分配到后端 Real Server,分为静态算法动态算法两类:

  1. 静态算法(仅考虑配置,不考虑节点负载)

    • 轮询(RR):请求按顺序依次分配给每个 Real Server,适用于节点性能相近的场景。
    • 加权轮询(WRR):根据节点性能分配权重,权重越高的节点接收的请求越多(如性能高的节点权重设为 3,低的设为 1)。
    • 源地址哈希(SH):根据用户 IP 进行哈希计算,将同一 IP 的请求分配到同一节点,可保持会话粘性。
  2. 动态算法(根据节点实时负载调整分配策略)

    • 最小连接数(LC):优先将请求分配给当前连接数最少的节点,适用于长连接业务(如数据库连接)。
    • 加权最小连接数(WLC):在最小连接数基础上,结合节点权重,兼顾性能与负载。
    • 最短预期延迟(SED) :根据公式 (活跃连接数 + 1) / 权重 计算优先级,值越小的节点优先级越高。

Ⅲ. 利用 LVS 构建负载均衡集群的实操步骤

0x00 环境准备

角色 主机名 IP 地址 系统 需安装软件
Director Server lvs-director 公网 IP:103.xx.xx.xx 内网 IP:192.168.1.100 CentOS 7/8 ipvsadm、keepalived(可选)
Real Server 1 lvs-rs-1 192.168.1.101 CentOS 7/8 httpd、nginx
Real Server 2 lvs-rs-2 192.168.1.102 CentOS 7/8 httpd、nginx

0x01 配置 Director Server

  1. 安装 ipvsadm 工具

    ipvsadm 是 LVS 的管理工具,用于配置集群规则、查看节点状态。

    bash 复制代码
    yum install -y ipvsadm
  2. 开启 IP 转发(NAT 模式必备)

    bash 复制代码
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
  3. 创建 LVS 集群规则(以 DR 模式为例)

    bash 复制代码
    # 清除原有规则
    ipvsadm -C
    
    # 添加 VIP(虚拟 IP)
    ipvsadm -A -t 192.168.1.100:80 -s rr
    
    # 添加后端 Real Server
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g
    
    # 保存规则
    ipvsadm -S > /etc/sysconfig/ipvsadm

    命令参数说明:

    • -A:添加虚拟服务;
    • -t:指定 TCP 协议和 VIP:端口;
    • -s:指定调度算法(rr 为轮询);
    • -a:添加后端真实服务器;
    • -r:指定 Real Server 的 IP:端口;
    • -g:指定 DR 模式。

0x02 配置 Real Server

  1. 安装 Web 服务

    bash 复制代码
    yum install -y nginx
    systemctl start nginx && systemctl enable nginx
  2. 配置 VIP 回环地址(DR 模式必备)

    为了让 Real Server 能够接收 VIP 转发的请求,需要在回环网卡配置 VIP:

    bash 复制代码
    # 临时配置
    ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
    
    # 永久配置(写入 /etc/rc.local)
    echo "ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up" >> /etc/rc.local
    chmod +x /etc/rc.d/rc.local
  3. 关闭 ARP 响应(避免 VIP 冲突)

    bash 复制代码
    echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
    echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
    echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
    echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
    sysctl -p

0x03 验证集群效果

  1. 在 Director Server 查看集群状态

    bash 复制代码
    ipvsadm -ln

    正常输出会显示 VIP:80 下挂载的两个 Real Server,以及当前连接数。

  2. 用户端访问测试

    在浏览器或客户端多次访问 http://192.168.1.100,观察请求是否会轮询转发到两台 Real Server。

    可通过修改 Real Server 的 Nginx 默认页面内容,来直观验证负载均衡效果。

Ⅳ. 高可用优化:LVS + Keepalived

单台 Director Server 仍存在单点故障风险,可通过 Keepalived 实现双 Director 主备模式,提升集群高可用性。

  • 工作原理:Keepalived 基于 VRRP(虚拟路由冗余协议),主 Director 持有 VIP,备 Director 监听主节点状态;当主节点故障时,备节点自动接管 VIP,实现无缝切换。
  • 核心配置:在两台 Director Server 上安装 Keepalived,配置主备角色、VIP、健康检查脚本等。

Ⅴ. 常见问题与解决方案

问题现象 可能原因 解决方案
访问 VIP 无响应 1. 防火墙未开放 80 端口 2. Real Server 未配置 VIP 回环地址 1. 关闭防火墙或开放端口:firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload 2. 检查 lo:0 网卡配置
负载均衡不均 1. 调度算法选择不当 2. 节点权重配置不合理 1. 长连接业务改用 LC 算法 2. 根据节点性能调整权重
节点故障未切换 1. 未配置健康检查 2. Keepalived 检测间隔过长 1. 在 ipvsadm 中配置健康检查脚本 2. 调整 Keepalived 的 interval 参数
相关推荐
阿巴~阿巴~17 小时前
帧长、MAC与ARP:解密局域网通信的底层逻辑与工程权衡
linux·服务器·网络·网络协议·tcp/ip·架构·以太网帧
Maggie_ssss_supp17 小时前
Linux-计算机网络
服务器·网络·计算机网络
咕噜企业分发小米18 小时前
云服务器如何支持直播间的实时互动?
运维·服务器·实时互动
艾莉丝努力练剑18 小时前
【脉脉】AI创作者AMA知无不言:人机共生时代的创作觉醒
运维·服务器·人工智能·企业
戴西软件18 小时前
戴西发布 DLM许可证加密防护软件V4.2让工业软件授权迈入并发调度与精细治理时代
运维·服务器·网络·数据库·人工智能·安全·云计算
菜的不敢吱声1 天前
swift学习第4天
服务器·学习·swift
晚枫歌F1 天前
Dpdk介绍
linux·服务器
风送雨1 天前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
model20051 天前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端