负载均衡
核心概念
负载均衡的本质是将业务请求只能分发到多个服务器节点,核心目标:
- 高可用:避免单点故障问题
- 高性能:提高系统吞吐量,降低延迟
- 弹性收缩:动态扩缩容后端资源
负载均衡算法
1. 静态算法
算法 | 原理 | 特点 |
---|---|---|
轮询(RR) | 按顺序依次分配请求 | 简单但忽略服务器差异 |
加权轮询 | 按权重比例分配请求(权重=3则分3倍请求) | 适应服务器性能差异 |
源IP哈希 | 根据客户端IP固定分配节点 | 保持会话但缺乏灵活性 |
2. 动态算法
算法 | 原理 | 适用场景 |
---|---|---|
最小连接数 | 优先选择当前连接数最少的节点 | 长连接服务(如数据库) |
加权最小连接数 | 结合权重和连接数选择节点 | 异构服务器集群 |
最快响应时间 | 选择历史响应最快的节点 | 对延迟敏感的服务(API网关) |
资源利用率 | 基于CPU/内存负载动态分配 | 云计算弹性环境 |
负载均衡网络层级分类(四层 VS 七层)
特性 | 四层(L4) | 七层(L7) |
---|---|---|
工作层级 | 传输层(TCP/IP) | 应用层(HTTP/HTTPS) |
识别内容 | 仅IP+端口 | 可解析URL/Cookie/Header等 |
性能 | 高速转发 | 需解析内容,稍慢 |
功能 | 基础流量分发 | 高级路由、SSL卸载、缓存等 |
代表工具 | LVS、F5 | Nginx,HAProxy,Coud Load Balancer |
🔍 L7示例:Nginx根据URL路径路由
location /api {
proxy_pass http://backend-api; # 转发到API集群
}
location /static {
proxy_pass http://frontend-cdn; # 转发到CDN集群
}
主流实现方案对比
1. 硬件负载均衡
- 代表:F5 BIG-IP, Citrix ADC
- 优点:高性能、高可靠、安全加固
- 缺点:成本高(单台数十万元)、扩展性差
2. 软件负载均衡
工具 | 特点 | 最佳场景 |
---|---|---|
Nginx | 高性能L7代理,支持动态扩缩容 | Web服务、API网关 |
HAProxy | 支持TCP/HTTP,丰富健康检查机制 | 高可用数据库集群 |
LVS | 内核级L4转发,百万级并发 | 大流量入口层 |
3. 云原生方案
- Kubernetes Ingress:基于Nginx/Envoy的声明式路由
- Service Mesh:Istio Linkerd实现细粒度流量控制
- 云服务商:AWS ALB/NLB, GCP Load Balancing, Azure Load Balancer
高可用架构设计
关键设计:
双活部署:主备负载均衡器通过VRRP协议(如Keepalived)实现故障切换
健康检查:
upstream backend { server 192.168.1.101:8080 max_fails=3 fail_timeout=30s; server 192.168.1.102:8080; check interval=5000 rise=2 fall=3 timeout=1000; # 主动健康检查 }
会话保持:
- L4:源IP绑定
- L7:Cookie插入(如
HAProxy
的stick-table
)
生产环境最佳实践
1. 性能优化
- 连接复用:启用HTTP Keep-Alive
- 缓冲区调整:根据业务调优Nginx的
proxy_buffer_size
- TLS硬件加速:使用支持AES-NI的CPU或专用SSL卡
2. 安全加固
DDoS防护:启用SYN Cookie,限制单IP连接数
nginx
limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn perip 100; # 单IP最大100连接
WAF集成:阻断SQL注入/XSS攻击(如ModSecurity)
3. 监控指标
指标 | 监控工具 | 告警阈值 |
---|---|---|
请求延迟 | Prometheus + Grafana | > 200ms |
错误率 | ELK Stack | > 1% |
后端节点健康状态 | Consul / Zabbix | 连续3次检查失败 |
常见问题解决方案
问题 | 原因 | 解决方案 |
---|---|---|
会话丢失 | 无状态轮询导致 | 启用会话保持(Cookie/IP Hash) |
后端节点过载 | 流量分配不均 | 切加权最小连接数算法 |
服务不可用漏切 | 健康检查配置错误 | 调整检查间隔/超时时间 |
TLS性能瓶颈 | 加解密消耗CPU | 启用硬件加速或专用SSL卸载设备 |
选型决策指南
黄金法则:
- 中小规模Web应用 → Nginx
- 高性能TCP服务 → LVS
- 全托管免运维 → 云服务商LB
- 微服务精细化控制 → Service Mesh