负载均衡
AI生成声明: 本文档由AI辅助生成,旨在提供负载均衡的基础知识和实践指南。
🎯 学习目标
通过本章节的学习,你将能够:
- 理解负载均衡的原理和作用
- 掌握常见的负载均衡算法
- 了解四层和七层负载均衡的区别
- 学习负载均衡的实践应用
📚 什么是负载均衡
负载均衡(Load Balancing)是将网络请求分发到多个服务器上的技术,目的是提高系统的可用性、性能和可扩展性。
核心作用
- 提高性能: 分散请求压力,充分利用服务器资源
- 提高可用性: 单机故障时自动切换,保证服务可用
- 水平扩展: 通过增加服务器提升系统容量
- 故障隔离: 问题服务器自动剔除,不影响整体服务
🔍 负载均衡的分类
按网络层次分类
四层负载均衡(L4)
工作在网络传输层,基于IP和端口进行转发。
特点:
- 性能高,转发速度快
- 不解析应用层协议
- 适用于高并发场景
常见方案:
- LVS(Linux Virtual Server)
- F5硬件负载均衡器
- AWS ELB(Classic Load Balancer)
七层负载均衡(L7)
工作在应用层,可以解析HTTP/HTTPS协议。
特点:
- 可以基于URL、Header等进行路由
- 支持SSL终止
- 功能更丰富,但性能相对较低
常见方案:
- Nginx
- HAProxy
- AWS ALB(Application Load Balancer)
按部署位置分类
- 硬件负载均衡: F5、A10等专用设备
- 软件负载均衡: Nginx、HAProxy等软件方案
- 云负载均衡: AWS ELB、阿里云SLB等云服务
🎲 负载均衡算法
1. 轮询(Round Robin)
按顺序将请求依次分发到每台服务器。
优点: 简单公平 缺点: 不考虑服务器性能差异
2. 加权轮询(Weighted Round Robin)
根据服务器性能设置权重,按权重比例分发请求。
优点: 考虑了服务器性能差异 缺点: 需要手动配置权重
3. 最少连接(Least Connections)
将请求分发到当前连接数最少的服务器。
优点: 适用于长连接场景 缺点: 需要维护连接状态
4. IP哈希(IP Hash)
根据客户端IP计算哈希值,将相同IP的请求分发到同一服务器。
优点: 保证会话一致性 缺点: 可能造成负载不均
5. 一致性哈希(Consistent Hash)
使用一致性哈希算法,节点增减时影响最小。
优点: 适合分布式缓存场景 缺点: 实现相对复杂
🏗️ 负载均衡架构
典型架构
客户端 → 负载均衡器 → 应用服务器集群
↓
数据库/缓存高可用部署
负载均衡器(主)
/ \
客户端 → → 应用服务器集群
\ /
负载均衡器(备)关键点:
- 主备切换(Keepalived)
- 健康检查
- 自动故障转移
🚀 实践应用
Nginx负载均衡配置
nginx
upstream backend {
# 轮询
server 192.168.1.10:8080;
server 192.168.1.11:8080;
# 加权轮询
server 192.168.1.12:8080 weight=3;
# 健康检查
server 192.168.1.13:8080 backup;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}健康检查
- 主动检查: 定时向服务器发送心跳
- 被动检查: 根据响应结果判断健康状态
- 检查参数: 响应时间、HTTP状态码、响应内容
⚠️ 注意事项
1. 会话保持
对于有状态的Web应用,需要保证同一用户的请求路由到同一服务器。
解决方案:
- IP哈希
- Cookie/Session粘性
- 使用分布式Session
2. 故障处理
- 快速检测故障服务器
- 自动剔除和恢复
- 优雅降级
3. 性能优化
- 连接复用
- SSL/TLS卸载
- 静态资源缓存
📖 推荐资源
💡 下一步
最后更新时间: 2025-01-20