文章目录
一、负载均衡技术分层概述
1. 分层概述
负载均衡根据OSI模型的不同层级实现,主要分为:
- 二层(MAC层):基于MAC地址转发
- 三层(IP层):基于IP地址转发
- 四层(传输层):基于IP+端口转发
- 七层(应用层):基于URL、HTTP头等应用信息转发
2. 各层负载均衡原理
二层负载均衡(MAC层)
- 原理:
通过虚拟MAC地址接收请求,转发到真实服务器的MAC地址。 - 特点:
- 工作在数据链路层,仅识别MAC地址。
- 典型设备:支持MAC转发的交换机。
三层负载均衡(IP层)
- 原理:
通过虚拟IP地址(VIP)接收请求,转发到真实服务器的IP地址。 - 特点:
- 工作在网络层,基于IP路由。
- 典型设备:路由器或三层交换机。
四层负载均衡(传输层)
- 原理:
通过虚拟IP+端口(如VIP:80
)接收请求,基于TCP/UDP信息(如SYN包)选择后端服务器,并修改目标IP后转发。 - 特点:
- 仅解析IP和端口,不关心应用内容。
- 三次握手由客户端与服务器直接完成,负载均衡仅转发流量(类似路由器)。
- 典型协议:TCP/UDP(如LVS)。
七层负载均衡(应用层)
- 原理:
在四层基础上,解析HTTP/HTTPS等应用层内容(如URL、Cookie、语言),按规则转发请求。 - 特点:
- 负载均衡设备需代理TCP连接,与客户端、服务器分别建立连接(性能开销较高)。
- 可深度修改请求/响应(如重写Header、内容过滤)。
- 典型协议:HTTP/HTTPS(如Nginx、HAProxy)。
二、深入解析四层与七层负载均衡的原理
负载均衡的核心在于如何分发请求,而四层和七层的核心差异在于报文解析的深度和转发逻辑。下面从报文处理流程和代理模式两个角度深入分析其原理。
四层负载均衡(L4)原理
1. 工作流程(以TCP为例)
- 客户端发送SYN包
- 目标地址为负载均衡器的虚拟IP(VIP)+ 端口(如
VIP:80
)。
- 目标地址为负载均衡器的虚拟IP(VIP)+ 端口(如
- 负载均衡器接收SYN
- 仅解析IP和端口,不关心TCP payload(如HTTP内容)。
- 根据负载均衡算法(如轮询、最小连接数)选择一台后端服务器。
- 修改目标IP并转发
- 将目标IP从
VIP
改为后端服务器的真实IP(如192.168.1.100
)。 - 可选:修改源IP(SNAT,确保回包经过负载均衡器)。
- 将目标IP从
- 服务器直接与客户端完成三次握手
- 服务器响应
SYN-ACK
给客户端,不经过负载均衡器(除非做了SNAT)。
- 服务器响应
- 后续流量保持会话一致性
- 负载均衡器记录
(Client IP + Port, Backend Server)
的映射,确保同一会话的请求固定转发到同一台服务器。
- 负载均衡器记录
2. 关键技术点
- 无代理模式:负载均衡器仅修改IP/Port,不中断TCP连接,客户端与服务器直接通信。
- 高性能:因不解析应用层数据,转发延迟极低(接近硬件交换机)。
- 局限性:
- 无法基于HTTP内容(如URL、Cookie)做路由。
- 无法防御应用层攻击(如HTTP Flood)。
七层负载均衡(L7)原理
1. 工作流程(以HTTP为例)
- 客户端发送SYN包
- 目标地址为负载均衡器的
VIP:80
。
- 目标地址为负载均衡器的
- 负载均衡器代理TCP连接
- 先与客户端完成三次握手,建立独立连接。
- 此时客户端认为它在与负载均衡器通信,而非真实服务器。
- 客户端发送HTTP请求
- 负载均衡器完整解析HTTP报文,提取URL、Header、Cookie等信息。
- 按应用层规则选择后端服务器
- 例如:
/images/*
→ 图片服务器组/api/*
→ 业务服务器组- 中文HTTP头 → 中文语言服务器
- 例如:
- 负载均衡器与后端服务器建立新连接
- 修改HTTP头(如
X-Forwarded-For
添加客户端IP),转发请求。
- 修改HTTP头(如
- 服务器响应经负载均衡器返回客户端
- 负载均衡器可修改响应(如压缩、缓存、插入安全头)。
2. 关键技术点
- 全代理模式:负载均衡器作为中间人,分别与客户端和服务器建立独立连接。
- 应用层智能路由:可基于URL、Header、Cookie等精细化分发。
- 高级功能:
- 缓存加速:静态资源(如图片)直接返回,不请求后端。
- 安全防护:过滤SQL注入、CC攻击、恶意爬虫。
- 内容改写:重写URL、增减HTTP头。
- 性能开销:因需解析HTTP协议,吞吐量通常低于四层。
核心差异对比
维度 | 四层负载均衡 | 七层负载均衡 |
---|---|---|
解析深度 | 仅IP+Port(传输层) | 完整解析HTTP/HTTPS(应用层) |
代理模式 | 直接转发(无代理) | 全代理(拆解并重建连接) |
性能 | 高(接近线速转发) | 较低(需解析应用数据) |
灵活性 | 仅能基于IP/Port路由 | 支持URL、Header、Cookie等高级路由 |
典型协议 | TCP/UDP(如数据库、游戏) | HTTP/HTTPS(如Web、API网关) |
安全性 | 无法防御HTTP Flood、SQL注入 | 可防御应用层DDoS、WAF攻击 |
应用场景总结
1. 四层适用场景
- 高性能要求:如游戏服务器、视频流媒体。
- 非HTTP协议:如MySQL、Redis、RDP。
- 全局负载均衡(GSLB):基于IP/Port的跨数据中心调度。
2. 七层适用场景
- Web应用:按URL路由(如
/api
vs/static
)。 - 内容优化:缓存、压缩、A/B测试。
- 安全防护:WAF(Web应用防火墙)、防爬虫。
- 微服务网关:基于HTTP头路由到不同服务。