LB HA(high avaliablity)和nginx

负载均衡(LB Load Balancer)全面技术详解

本文从基础概念、分类、核心原理、主流算法、关键能力、主流产品、架构组合、调优排障全维度讲解,兼顾理论与运维实战,适配Web、接口、AI推理(vLLM/SGLang)等落地场景。


一、基础认知

1. 定义

负载均衡(LB) :将客户端海量访问流量,按照预设策略,分发到后端一组业务服务器集群 ,实现流量分摊、压力分散、故障容错、提升系统并发能力与整体可用性。

核心目标:化单点压力为集群压力,避免单服务器过载宕机

2. 核心价值

  1. 高并发:单台服务器性能有限,多机集群分摊流量,支撑更大QPS;
  2. 高可用 :自动剔除故障节点,流量不中断,实现故障转移
  3. 弹性扩容:业务上涨时直接新增后端节点,无需改动前端架构;
  4. 业务灰度/隔离:基于内容做路由,实现灰度发布、A/B测试、分区隔离;
  5. 性能优化:连接复用、SSL卸载、缓存、压缩,减轻后端服务压力。

3. 核心组成角色

  • 客户端:浏览器、App、接口调用方、内部服务;
  • 负载均衡器(LB):流量入口、转发中枢;
  • 后端集群(Real Server):真实业务节点(你的 10.0.0.20 / 10.0.0.21 等)。

数据流:客户端 → LB → 后端服务器 → LB → 客户端


二、负载均衡三大实现形态

部署形态分为三类,企业架构中经常组合使用。

1. 硬件负载均衡

专用物理设备,出厂即为LB硬件,性能强、稳定性高、功能完备。

  • 代表产品:F5 BIG-IP、深信服、华为、华三、锐捷等
  • 优点:吞吐极高、延迟低、安全防护强、运维简单;
  • 缺点:价格昂贵、扩容不灵活、采购周期长;
  • 适用:大型政企、金融、核心交易链路、高密并发核心入口。

2. 软件负载均衡

基于通用服务器 + 开源/商业软件实现,成本低、灵活、可快速扩容。

(1)四层软件LB(传输层)

  • 代表:LVS (Linux Virtual Server)
  • 特点:工作在内核态,转发性能极致,几乎无性能瓶颈;只处理IP+端口,不解析应用协议。

(2)七层软件LB(应用层)

  • 代表:Nginx、HAProxy、Apache Traffic Server
  • 特点:解析HTTP/HTTPS协议,功能丰富,支持路由、改写、会话保持、限流、WAF等。

3. 云负载均衡(公有云托管LB)

云厂商提供的托管式LB服务,开箱即用,无需自建硬件/软件。

  • 命名:SLB(服务器负载均衡)、CLB、ALB、NLB
    • NLB:四层负载均衡
    • ALB:七层应用负载均衡
  • 代表:阿里云SLB、腾讯云CLB、华为云ELB
  • 优点:免运维、弹性伸缩、自带高可用、和云网络深度打通;
  • 适用:云上业务、互联网公司、快速上线场景。

三、按OSI层级划分:四层LB vs 七层LB(核心重点)

这是LB最核心的技术分类,决定转发能力、功能边界、性能开销。

OSI 是国际标准化组织定义的网络通信七层架构,把两台设备之间的数据传输,按功能拆成 7 个层级,每层只干自己的事、上下层分工协作。

1. 四层负载均衡(L4,传输层:TCP/UDP)

工作位置

基于 IP + 端口 转发,不解析应用层报文,只看TCP/UDP头部。

工作流程

  1. 客户端发起TCP连接到LB;
  2. LB根据算法选定一台后端RS;
  3. LB建立与后端的TCP连接;
  4. 两端TCP通道打通,后续所有报文直接透传,LB不再拆包解析。

核心特点

  • ✅ 性能极强、延迟极低、吞吐大;
  • ✅ 内核转发,CPU开销极小;
  • ❌ 看不到HTTP内容:URL、Cookie、Header、Host、请求参数一律不识别;
  • ❌ 无法做精细化路由、内容过滤、SSL解密。

典型产品 & 场景

  • 产品:LVS、F5四层模式、云NLB
  • 适用:数据库、Redis、MQ、SSH、TCP长连接、非HTTP类服务、全站一级入口。

2. 七层负载均衡(L7,应用层:HTTP/HTTPS)

工作位置

完整解析 HTTP/HTTPS 应用协议 ,读取请求内容后再转发,也叫应用层代理

工作流程

  1. 客户端连接LB,发送完整HTTP请求;
  2. LB解析请求头、URL、Cookie、Host、Body;
  3. 根据算法+内容策略选择后端节点;
  4. 转发请求到后端,接收响应,回传给客户端。

核心特点

  • ✅ 功能极强:路径路由、域名路由、URL改写、会话保持、SSL卸载、限流、缓存、黑白名单;
  • ✅ 可按业务逻辑做流量分发(灰度、A/B、接口隔离);
  • ❌ 需要拆包/组包,有一定CPU开销,性能弱于四层;

典型产品 & 场景

  • 产品:Nginx、HAProxy
  • 适用:Web网站、HTTP接口、微服务、大模型推理服务(vLLM/SGLang)、小程序/App后端。

3. 四层与七层核心对比表

对比项 四层LB(L4) 七层LB(L7)
解析层级 IP+端口,不拆应用包 完整解析HTTP/HTTPS
性能开销 极低 中等
延迟 更小 略高
路由能力 仅端口转发 域名/URL/Cookie/请求头路由
SSL解密 不支持 支持(SSL卸载)
会话保持 基于IP 基于IP/Cookie/Header
典型产品 LVS、F5-NLB、云NLB Nginx、HAProxy、云ALB

四、Nginx 负载均衡深度解析

Nginx 是Web服务 + 反向代理 + 七层LB 三合一,依靠 ngx_http_upstream_module 实现负载均衡。

1. 基础配置结构

nginx 复制代码
# 定义后端服务器集群
upstream backend_server {
    server 10.0.0.20:8080;   # 后端节点1
    server 10.0.0.21:8080;   # 后端节点2
}

server {
    listen 80;
    server_name lb.test.com;

    # 全部转发到上游集群
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

2. 六大主流负载分发算法

(1)轮询 Round Robin(默认算法

  • 规则:请求按连接顺序 依次分发到后端节点,20 → 21 → 20 → 21 循环;
  • 特性:
    1. 无权重时,理论连接数均衡;
    2. 按「TCP连接」分发,不是按「单次请求」分发
    3. HTTP长连接(keepalive)下:一条连接承载几十上百次请求,日志会出现单节点请求扎堆(你之前遇到的现象)。
  • 适用:后端服务器硬件性能一致、无会话要求的场景。

(2)加权轮询 Weighted Round Robin (WRR)

在轮询基础上增加 weight 权重,权重越高,分到的流量越多。

nginx 复制代码
upstream backend {
    server 10.0.0.20 weight=2;
    server 10.0.0.21 weight=1;
}
  • 流量比例近似 2:1;
  • 适用:后端服务器性能不均,高配机器承担更多流量。

(3)最少连接 Least Connections

nginx 复制代码
upstream backend {
    least_conn;  # 开启最少连接算法
    server 10.0.0.20;
    server 10.0.0.21;
}
  • 规则:优先将新连接分发给当前活跃连接数最少的节点;
  • 特性:自动适配后端性能差异,慢节点连接会逐步堆积,流量自动流向快节点;
  • 适用:请求处理时长差异大的服务(接口、AI推理、长任务)。

(4)IP 哈希 ip_hash(会话保持常用)

nginx 复制代码
upstream backend {
    ip_hash;  # 开启IP哈希
    server 10.0.0.20;
    server 10.0.0.21;
}
  • 规则:对客户端源IP做哈希运算,同一IP永远定向到同一台后端;
  • 作用:保证会话绑定,用户登录状态不丢失;
  • 致命问题
    内网/NAT出口、办公网、统一网关出口场景,大量用户共用同一个公网IP ,所有流量压到单台节点,出现严重倾斜(你日志偏向20服务器的最常见原因)。

(5)URL 哈希 url_hash

按请求URL做哈希,相同URL固定转发到同一节点;

  • 适用:静态资源、缓存服务,提升缓存命中率。

(6)fair 第三方算法(需插件)

根据后端响应时间分配流量,响应越快优先分配流量;适合动态接口、时延差异大的服务。


五、LB 核心配套能力

1. 健康检查 Health Check

LB 持续探测后端节点状态,自动摘除故障节点、恢复正常节点,实现故障转移。

Nginx 健康检查参数

nginx 复制代码
server 10.0.0.20 max_fails=2 fail_timeout=30s;
  • max_fails:最大失败次数,连续失败N次则标记节点不可用;
  • fail_timeout:节点被摘除后,间隔多久重新尝试探测;

现象

后端 21 出现超时、5xx、宕机 → 被LB摘除 → 所有流量全部打向20,日志完全倾斜。

2. 会话保持 Session Affinity

让同一用户多次请求始终落在同一后端,分为三类:

  1. IP绑定:ip_hash(Nginx默认方式);
  2. Cookie绑定:LB植入Cookie,按Cookie路由(推荐,不受NAT影响);
  3. Header绑定:基于自定义请求头做绑定。

建议:业务无会话依赖时关闭会话保持,流量分布最均衡。

3. 长连接 Keepalive

分为两段:

  1. 客户端 ↔ LB 长连接;
  2. LB ↔ 后端RS 长连接。
  • 作用:复用TCP连接,减少握手开销,大幅提升QPS;
  • 副作用:一条连接承载大量请求,请求粒度分布不均,是日志倾斜的重要原因。

4. 限流 & 熔断

LB 层实现全局限流、单节点限流、IP黑白名单,防止突发流量打垮集群。

5. SSL 卸载

HTTPS 解密/加密统一由LB承担,后端直接跑HTTP,减轻后端CPU压力(七层LB专属能力)。

6. 反向代理 & 头部改写

透传真实客户端IP、域名,保证后端服务获取真实访问信息。


六、主流企业架构组合(分层LB架构)

生产环境极少单用一层LB,普遍采用多级分层架构,各司其职。

架构1:四层LB + 七层LB(最经典)

用户 → 四层LB(LVS/F5/NLB) → 七层LB(Nginx/HAProxy) → 后端应用

  • 四层LB:承接全网大流量,抗DDOS、做端口转发,性能拉满;
  • 七层LB:做应用层路由、灰度、会话、SSL、限流,精细化治理。

架构2:纯七层集群

中小型业务、微服务、AI推理集群:

用户 → Nginx集群 → 业务服务/vLLM/SGLang

架构3:服务内部负载均衡(内网LB)

微服务之间调用:使用 Nginx/HAProxy / 服务注册发现(Feign/Nacos) 做内网负载。


七、学习总结 & 知识脉络梳理

  1. LB 本质:流量转发调度器,分摊压力、提升可用;
  2. 两大层级:四层(IP+端口,高性能)、七层(HTTP解析,功能强);
  3. Nginx 定位 :标准七层负载均衡器,依靠 upstream 实现集群转发;
  4. 核心算法:轮询、加权轮询、最少连接、IP哈希(重点区分适用场景与副作用);
  5. 分布不均根因 :优先排查 ip_hash、长连接、健康检查、权重、后端性能;
  6. 企业架构 :主流采用 L4 + L7 分层部署,兼顾性能与功能。
相关推荐
徐子元竟然被占了!!1 小时前
Linux磁盘扩容
linux·运维·服务器
徐子元竟然被占了!!1 小时前
Linux的lsblk
linux·运维·服务器
专注API从业者1 小时前
告别手动翻页!基于淘宝商品接口 + Open Claw 实现自动化选品与实时监控(附完整 Python 代码)
大数据·运维·数据库·自动化
拦路雨g1 小时前
VMware centos磁盘容量扩容
linux·运维·centos
休息一下…1 小时前
能用的Docker镜像
运维·docker·容器
Promise微笑1 小时前
智慧电力运维:局放仪分类、选型策略与深度应用实践
运维·分类·数据挖掘
我星期八休息1 小时前
Linux系统编程— Mmap实现⽂件LRU缓存
linux·运维·服务器·数据库·mysql·缓存
jiuri_12151 小时前
Linux 服务器 Codex + DeepSeek 配置
linux·运维·服务器
凯丨2 小时前
MCP Server 教程:从零构建一个自定义工具服务器(2026 最新)
运维·服务器