Files
nexus/Cloud DevOps/负载均衡快速笔记.md
2026-09-12 17:23:01 +08:00

88 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 定义
在多个服务器间分散请求,提高系统性能和可用性。
## 核心作用
- **高可用**:单点故障不中断服务
- **高性能**:分散负载,提高吞吐量
- **可扩展**:增加服务器应对增长
## 实现层级
**第4层(传输层)**:基于IP/端口,性能最高,功能简单。工具:LVS、HAProxy
**第7层(应用层)**:基于HTTP/内容,功能强大,性能较低。工具:Nginx、HAProxy
## 常见算法
|算法|原理|适用|
|---|---|---|
|轮询|依次分配给每个服务器|无状态短连接|
|加权轮询|按性能分配权重|性能差异大|
|最少连接|分配给连接数最少的服务器|长连接应用|
|IP哈希|相同IP总路由到同一服务器|会话保持|
|一致性哈希|哈希环实现,服务器变化影响小|分布式缓存|
|随机|随机选择服务器|简单场景|
|响应时间|选择响应最快的服务器|延迟敏感|
## 主流产品
**硬件**:F5 Big-IP、Citrix NetScaler(功能全面,价格贵)
**开源**:Nginx(最流行)、HAProxy(功能强大)、LVS(性能最高)
**云服务**:AWS ELB、阿里云SLB、腾讯云CLB、Azure LB
## 应用场景
1. **Web应用**:多个服务器部署相同应用
2. **数据库**:主库写,多个从库读
3. **微服务**:服务发现和分配
4. **API网关**:统一入口分配到不同服务
5. **CDN**:地理位置分散
## 关键特性
- **健康检查**:定期检测服务器状态,自动隔离故障
- **会话保持**:确保用户请求路由到同一服务器
- **连接复用**:HTTP Keep-Alive,减少连接开销
- **限流**:保护后端服务器
- **超时管理**:设置连接和请求超时时间
## 部署模式
**单点**:一个LB + 多个服务器(简单但有单点风险)
**主备**:主LB + 备LB + VIP自动转移(高可用)
**多活**:多个LB并行工作 + DNS分散(性能最优)
**分层**:DNS级(地域)→ 网络级(区域)→ 应用级(服务器)
## 选择指南
|条件|方案|
|---|---|
|小规模(<1K QPS)|Nginx基础配置|
|中等规模(1K-10K QPS)|Nginx/HAProxy|
|大规模(>10K QPS)|LVS/硬件/云服务|
|复杂业务逻辑|Nginx高级/HAProxy/硬件|
|云环境|用云厂商服务|
|成本优先|开源方案(Nginx/HAProxy)|
## 常见问题解决
|问题|解决方案|
|---|---|
|LB单点故障|主备部署或多活部署 + VIP|
|会话不一致|会话粘性或分布式会话存储(Redis)|
|调试困难|分布式追踪(Jaeger/Zipkin) + 日志聚合|
|服务器增删影响大|用一致性哈希|
## 优缺点
**优势**:高可用、高吞吐、易扩展、故障转移、灵活部署
**局限**:成本增加、系统复杂、可能增加延迟、会话管理复杂
## 快速判断使用场景
- 单个服务器无法承载 → 需要负载均衡
- 需要故障自动转移 → 需要负载均衡
- 频繁发布部署 → 需要负载均衡
- 想水平扩展系统 → 需要负载均衡
- 对性能无特殊要求的小应用 → 暂可不用