四层与七层负载均衡实现原理及核心差异

负载均衡是分布式系统的核心组件,作用是将客户端请求均匀分发 到后端多台服务器,提升系统吞吐量、可用性与扩展性。根据工作的网络协议层级 ,可分为四层负载均衡七层负载均衡(不存在 "四次负载均衡",应为表述误差)。

二者的划分依据是 OSI 七层网络模型

  • 四层负载均衡:工作在传输层(TCP/UDP 层),基于 IP 地址和端口号转发请求。
  • 七层负载均衡:工作在应用层(HTTP/HTTPS/FTP 等协议层),基于请求的内容(如 URL、头部信息)转发请求。

一、四层负载均衡(传输层负载均衡)

1. 核心定义

四层负载均衡工作在 OSI 模型的传输层 ,仅识别数据包的源 IP、目的 IP、源端口、目的端口以及 TCP/UDP 协议类型,不关心请求的具体内容。

它的核心逻辑是:基于 IP + 端口的哈希或轮询策略,将数据包转发到后端服务器,自身相当于一个 "智能路由器"。

2. 典型实现技术与工具

  • 硬件设备:F5 BIG-IP、A10 Thunder 等(性能强、成本高,适合大型企业核心业务)。
  • 软件工具:LVS(Linux Virtual Server,Linux 内核集成的高性能四层负载均衡)、HAProxy(可配置为四层模式)、Nginx(_stream 模块支持四层转发)。

3. 工作流程(以 LVS-NAT 模式为例)

  1. 客户端发送请求到四层负载均衡器的 VIP(虚拟 IP),目标端口为业务端口(如 80)。
  2. 负载均衡器根据预设策略(如轮询、加权轮询、源 IP 哈希),选择一台后端真实服务器(RS)。
  3. 负载均衡器修改数据包的目的 IP 为 RS 的 IP,目的端口为 RS 的业务端口,然后转发给 RS。
  4. RS 处理请求后,将响应数据包发送回负载均衡器。
  5. 负载均衡器修改响应数据包的源 IP 为 VIP,源端口为原请求端口,再转发给客户端。

4. 核心特性

特性 具体说明
转发效率 极高,基于内核态转发(如 LVS),几乎无性能损耗,能支撑十万级并发。
会话保持 基于源 IP 哈希实现,相同客户端的请求会转发到同一台后端服务器。
协议支持 支持所有 TCP/UDP 协议,如 HTTP、HTTPS、MySQL、Redis 等。
健康检查 仅做四层健康检查,通过 TCP 握手或 UDP 报文探测后端服务器是否存活,无法感知应用层状态。
透明性 后端服务器无需感知客户端真实 IP(除非配置特殊模式,如 LVS-DR),需将网关指向负载均衡器。

5. 典型适用场景

  • 高并发、低延迟的传输层服务:如 MySQL 主从分离、Redis 集群、游戏服务器 UDP 协议转发。
  • 大规模分布式系统的第一层负载均衡(与七层负载均衡配合,四层做流量分发,七层做内容路由)。

二、七层负载均衡(应用层负载均衡)

1. 核心定义

七层负载均衡工作在 OSI 模型的应用层 ,除了识别四层的 IP + 端口,还能解析应用层协议的具体内容(如 HTTP 的 URL、Host、Cookie、请求头),并基于内容进行精细化转发。

它的核心逻辑是:基于请求内容的特征,将请求路由到最优的后端服务器,自身相当于一个 "应用层代理"。

2. 典型实现技术与工具

  • 软件工具:Nginx(HTTP 模块原生支持七层转发)、HAProxy(默认七层模式,支持 HTTP/HTTPS/HTTP/2)、Traefik(云原生时代的七层负载均衡,自动发现后端服务)。
  • 云服务:阿里云 SLB 七层模式、AWS ALB(应用负载均衡器)。

3. 工作流程(以 Nginx 转发 HTTP 请求为例)

  1. 客户端发送 HTTP 请求到七层负载均衡器的 VIP,目标端口为 80/443。
  2. 负载均衡器解析 HTTP 请求的内容 :如 Host 头(区分不同域名)、URL 路径(如 /api 转发到 API 服务器,/static 转发到静态资源服务器)。
  3. 负载均衡器根据预设的内容路由策略,选择一台后端服务器。
  4. 负载均衡器以客户端身份向后端服务器发起新的 HTTP 请求,获取响应数据。
  5. 负载均衡器将响应数据转发给客户端(可选择是否修改响应内容,如添加响应头)。

4. 核心特性

特性 具体说明
转发效率 低于四层负载均衡,因为需要解析应用层协议(用户态处理),但 Nginx/HAProxy 仍能支撑万级并发。
会话保持 支持更灵活的策略:基于 Cookie 植入 (负载均衡器生成 Cookie,标识后端服务器)、Cookie 黏连(基于客户端已有 Cookie 转发)、URL 参数等。
协议支持 主要支持应用层协议:HTTP、HTTPS、HTTP/2、WebSocket、FTP 等。
健康检查 支持七层健康检查 :不仅检测 TCP 端口是否存活,还会发送模拟请求(如 GET /health),检查响应状态码(如 200 OK),能感知应用层故障(如后端服务 500 错误)。
内容处理 支持URL 重写、请求头修改、SSL 卸载 (负载均衡器解密 HTTPS 请求,后端服务器处理 HTTP 请求)、压缩(对响应数据 Gzip 压缩)等功能。
源 IP 透传 可通过 X-Forwarded-For 请求头,将客户端真实 IP 传递给后端服务器。

5. 典型适用场景

  • 基于内容的路由:如电商网站 /product 路径转发到商品服务器,/order 路径转发到订单服务器。
  • SSL 卸载:集中处理 HTTPS 解密,减少后端服务器的计算开销。
  • 微服务架构:配合服务注册中心,实现基于服务名的负载均衡。
  • 静态资源分离:将静态资源请求(如 CSS、JS、图片)转发到 CDN 或专门的静态服务器。

三、四层与七层负载均衡核心差异对比表

对比维度 四层负载均衡 七层负载均衡
工作层级 传输层(TCP/UDP) 应用层(HTTP/HTTPS 等)
识别信息 源 IP、目的 IP、源端口、目的端口 IP + 端口 + 应用层内容(URL、Cookie、请求头)
转发方式 数据包转发(修改 IP / 端口) 应用层代理(重新发起请求)
性能损耗 极低(内核态处理) 中等(用户态解析协议)
会话保持 基于源 IP 哈希 基于 Cookie、URL 参数、源 IP 等
健康检查 四层检查(TCP 握手 / UDP 探测) 七层检查(模拟请求 + 状态码校验)
核心功能 高并发流量分发 内容路由、SSL 卸载、协议转换
典型工具 LVS、Nginx Stream 模块 Nginx、HAProxy、Traefik
适用场景 传输层服务、高并发场景 应用层服务、内容路由、微服务

四、四层 + 七层负载均衡联动架构

在大规模分布式系统中,通常采用 四层负载均衡 + 七层负载均衡 的分层架构,兼顾性能与灵活性:

  1. 第一层(四层负载均衡 LVS) :对外暴露 VIP,负责将海量客户端请求均匀分发到多台七层负载均衡器(如 Nginx 集群),解决七层负载均衡器的单点瓶颈。
  2. 第二层(七层负载均衡 Nginx) :负责内容路由,根据 URL、Host 等信息,将请求转发到后端应用服务器集群(如 Tomcat、Node.js 集群),同时提供 SSL 卸载、健康检查等功能。
  3. 后端服务器集群:处理具体业务请求,返回响应数据。

0voice · GitHub

相关推荐
拜托啦!狮子5 小时前
安装和使用Homer(linux)
linux·运维·服务器
剑之所向7 小时前
c# modbus大小端
linux·运维·网络
顶点多余7 小时前
Linux中的基本命令-2
linux·运维·服务器
钱彬 (Qian Bin)7 小时前
项目实践14—全球证件智能识别系统(切换回SQLite数据库并基于Docker实现离线部署和日常管理)
运维·docker·容器·fastapi·证件识别
云和恩墨8 小时前
表空间、巡检、建库:DBA最熟悉的3个场景,正在被zCloud开放运维中心重新定义
运维·数据库·表空间·dba·巡检·建库
学烹饪的小胡桃9 小时前
WGCAT工单系统 v1.2.7 更新说明
linux·运维·服务器·网络·工单系统
BigBigHang9 小时前
【docker】离线设备安装镜像
运维·docker·容器
学好statistics和DS9 小时前
Docker文件与本地文件,系统
运维·docker·容器
liuc03179 小时前
docker下安装SearXNG
运维·docker·容器