## 定义 在多个服务器间分散请求,提高系统性能和可用性。 ## 核心作用 - **高可用**:单点故障不中断服务 - **高性能**:分散负载,提高吞吐量 - **可扩展**:增加服务器应对增长 ## 实现层级 **第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) + 日志聚合| |服务器增删影响大|用一致性哈希| ## 优缺点 **优势**:高可用、高吞吐、易扩展、故障转移、灵活部署 **局限**:成本增加、系统复杂、可能增加延迟、会话管理复杂 ## 快速判断使用场景 - 单个服务器无法承载 → 需要负载均衡 - 需要故障自动转移 → 需要负载均衡 - 频繁发布部署 → 需要负载均衡 - 想水平扩展系统 → 需要负载均衡 - 对性能无特殊要求的小应用 → 暂可不用