负载均衡模式Skill load-balancing-patterns

这个技能用于在分布式系统中选择、配置和优化负载均衡解决方案,以确保高可用性、性能优化和高效流量管理。关键词包括:负载均衡、L4/L7、云负载均衡、自管理负载均衡、Kubernetes Ingress、健康检查、会话管理。

Docker/K8s 0 次安装 0 次浏览 更新于 3/23/2026

name: 负载均衡模式 description: 当在多个服务器或区域之间分配流量时,使用此技能选择和配置适当的负载均衡解决方案(第4层/第7层、云管理、自管理或Kubernetes入口),并进行适当的健康检查和会话管理。

负载均衡模式

使用适当的负载均衡方法在基础设施上分配流量,从简单的轮询到全局多区域故障转移。

何时使用此技能

使用负载均衡模式当:

  • 在多个应用服务器之间分配流量
  • 实现高可用性和故障转移
  • 基于URL、头部或地理位置路由流量
  • 在无状态后端管理会话持久性
  • 将应用部署到Kubernetes集群
  • 跨区域配置全局流量管理
  • 实施零停机部署(蓝绿、金丝雀)
  • 在云管理和自管理负载均衡器之间选择

核心负载均衡概念

第4层 vs 第7层

第4层(L4)- 传输层:

  • 基于IP地址和端口路由(TCP/UDP数据包)
  • 无应用数据检查,低延迟,高吞吐量
  • 协议无关,保留客户端IP地址
  • 适用于:数据库连接、视频流、游戏、金融交易、非HTTP协议

第7层(L7)- 应用层:

  • 基于HTTP URL、头部、cookie、请求体路由
  • 完整应用数据可见性,SSL/TLS终止、缓存、WAF集成
  • 内容路由能力
  • 适用于:Web应用、REST API、微服务、GraphQL端点、复杂路由逻辑

负载均衡算法

算法 分配方法 使用案例
轮询 顺序 无状态、相似服务器
加权轮询 基于容量 不同服务器规格
最少连接 最少活动连接 长连接
最少响应时间 最快服务器 性能敏感
IP哈希 客户端IP基于 会话持久性
基于资源 CPU/内存指标 变化工作负载

健康检查类型

浅层(存活): 进程是否存活?

  • 端点:/health/live/live
  • 返回:200如果进程运行
  • 适用于:进程监控、容器健康

深层(就绪): 服务能否处理请求?

  • 端点:/health/ready/ready
  • 验证:数据库、缓存、外部API连接性
  • 适用于:负载均衡器路由决策

健康检查迟滞: 不同阈值标记上/下以防止抖动

  • 示例:3次失败标记为下,2次成功标记为上

云负载均衡器

AWS负载均衡

应用负载均衡器(ALB)- 第7层:

  • 适用于:HTTP/HTTPS应用、微服务、WebSocket
  • 特性:路径/主机/头部路由、AWS WAF集成、Lambda目标

网络负载均衡器(NLB)- 第4层:

  • 适用于:超低延迟(<1ms)、TCP/UDP、静态IP、百万RPS
  • 特性:保留源IP、TLS终止

全局加速器 - 第4层全局:

  • 适用于:多区域应用、全球用户、DDoS防护
  • 特性:任播IP、自动区域故障转移

GCP负载均衡

应用LB(L7): 全局HTTPS LB、Cloud CDN集成、Cloud Armor(WAF/DDoS) 网络LB(L4): 区域TCP/UDP、直通平衡、会话亲和性 云负载均衡: 单任播IP、全局分发、后端存储桶

Azure负载均衡

应用网关(L7): WAF集成、URL路由、SSL终止、自动扩展 负载均衡器(L4): 基本和标准SKU、健康探针、HA端口 流量管理器(全局): DNS路由(优先级、加权、性能、地理)

自管理负载均衡器

NGINX

最佳用于: 通用HTTP/HTTPS负载均衡、Web应用堆栈

能力: HTTP反向代理、TCP/UDP流负载均衡、SSL/TLS终止、健康检查

HAProxy

最佳用于: 最大性能、数据库负载均衡、资源效率

能力: 高吞吐量、低内存占用、10+算法、复杂健康检查

Envoy

最佳用于: 微服务、Kubernetes、服务网格集成

能力: 云原生设计、动态配置、熔断器、重试、超时

Traefik

最佳用于: Docker/Kubernetes环境、动态配置、易用性

能力: 自动服务发现、原生Kubernetes集成、Let’s Encrypt支持、中间件系统

Kubernetes Ingress控制器

选择指南

控制器 最佳用于 优势
NGINX Ingress(F5) 通用目的 稳定性、广泛采用、成熟特性
Traefik 动态环境 易配置、服务发现
HAProxy Ingress 高性能 高级L7路由、可靠性
Envoy(Contour/Gateway) 服务网格 丰富L7特性、可扩展性
Kong API密集型应用 JWT认证、速率限制、插件
云提供商 单云 原生云集成

会话持久性

粘性会话(慎用)

基于Cookie: 负载均衡器设置cookie跟踪服务器亲和性 IP哈希: 哈希客户端IP选择后端服务器

共享会话存储(推荐)

架构:无状态应用服务器 + 集中会话存储(Redis、Memcached)

客户端令牌(最佳用于API)

JWT:服务器生成签名令牌,客户端存储并随请求发送

全局负载均衡

地理DNS路由

基于地理位置路由用户到最近服务器

多区域故障转移

主/次区域配置,自动DNS故障转移

CDN集成

结合负载均衡与CDN,全球缓存内容

决策框架

L4 vs L7选择

选择L4当:协议是TCP/UDP、超低延迟关键、高吞吐量、需要客户端源IP 选择L7当:协议是HTTP/HTTPS、需要内容路由、SSL终止、WAF集成、微服务架构

云 vs 自管理

选择云管理当:单云部署、自动扩展、团队缺乏专业知识 选择自管理当:多云或混合部署、高级路由需求、成本优化、需要完全控制

自管理选择

  • NGINX: 通用目的、Web堆栈、HTTP/3支持
  • HAProxy: 最大性能、数据库LB、最低资源使用
  • Envoy: 微服务、服务网格、动态配置
  • Traefik: Docker/Kubernetes、自动发现、易配置

配置示例

完整示例在examples/目录:

  • 云提供商:AWS ALB/NLB、GCP、Azure配置
  • 自管理:NGINX、HAProxy、Envoy、Traefik配置
  • Kubernetes:NGINX Ingress、Traefik IngressRoute、Gateway API配置

监控和可观测性

关键指标

吞吐量、延迟、错误率、资源使用、健康状态

负载均衡器日志

启用访问日志,分析请求/响应细节

故障排除

不均匀负载分配

症状:一个服务器接收过多流量 解决方案:切换到最少连接、禁用粘性会话、实现连接耗尽

健康检查抖动

症状:服务器快速切换健康/不健康状态 解决方案:增加间隔和超时、实施迟滞、使用深层健康检查

故障转移后会话丢失

症状:用户服务器失败后登出 解决方案:实现共享会话存储、使用客户端令牌

集成点

相关技能:基础设施即代码、Kubernetes运维、网络架构、应用部署、可观测性、安全强化、服务网格、TLS实施

快速参考

选择矩阵

使用案例 推荐解决方案
HTTP Web应用(AWS) ALB
非HTTP协议(AWS) NLB
Kubernetes HTTP入口 NGINX Ingress或Traefik
最大性能 HAProxy
服务网格 Envoy
Docker Swarm Traefik
多云便携 NGINX或HAProxy
全局分发 CloudFlare、AWS全局加速器

算法选择

流量模式 算法
无状态、相似服务器 轮询
无状态、不同容量 加权轮询
长连接 最少连接
性能敏感 最少响应时间
需要会话持久性 IP哈希或Cookie
变化服务器负载 基于资源

健康检查配置

服务类型 检查类型 间隔 超时
Web应用 HTTP /health 10s 3s
API HTTP /health/ready 10s 5s
数据库 TCP连接 5s 2s
关键服务 HTTP深层检查 5s 3s
后台工作者 HTTP /live 30s 5s

总结

负载均衡对于分配流量、确保高可用性和启用水平扩展至关重要。选择L4用于原始性能和非HTTP协议,L7用于智能内容路由。优先云管理负载均衡器以简化,自管理用于多云可移植性和高级特性。实施适当健康检查,避免粘性会话,并持续监控关键指标。