一、负载均衡需求分析
快驴生鲜系统作为生鲜电商平台,具有以下特点:
- 高并发访问(用户抢购、促销活动)
- 数据实时性要求高(库存、价格)
- 业务链长(浏览、下单、支付、配送)
- 地域性访问差异
二、负载均衡架构设计
1. 整体架构
```
用户请求 → CDN加速 → 全球负载均衡(GSLB) → 区域负载均衡 → 应用服务器集群 → 数据库集群
```
2. 分层负载均衡方案
(1) 四层负载均衡(传输层)
- 硬件方案:F5 Big-IP(企业级,支持L4-L7)
- 软件方案:LVS(Linux Virtual Server)+ Keepalived
- 云服务:AWS NLB、阿里云SLB(四层)
(2) 七层负载均衡(应用层)
- 硬件方案:F5 Big-IP(高级版)
- 软件方案:Nginx、HAProxy
- 云服务:AWS ALB、阿里云SLB(七层)
三、具体配置实现
1. Nginx配置示例(七层负载均衡)
```nginx
http {
upstream backend {
加权轮询算法
server 10.0.0.1:8080 weight=5;
server 10.0.0.2:8080 weight=3;
server 10.0.0.3:8080 weight=2;
最少连接算法(可选)
least_conn;
IP哈希算法(会话保持)
ip_hash;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
健康检查
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
}
}
}
```
2. LVS配置示例(四层负载均衡)
```bash
配置DR模式(直接路由)
ipvsadm -A -t 192.168.1.100:80 -s wrr
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.1:8080 -g -w 5
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.2:8080 -g -w 3
ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.3:8080 -g -w 2
```
3. 云服务负载均衡配置(以阿里云为例)
1. 创建SLB实例
2. 配置监听协议和端口(HTTP/HTTPS)
3. 添加后端服务器组
4. 设置健康检查参数
5. 配置会话保持(如需)
6. 设置调度算法(加权轮询/最小连接数等)
四、关键配置参数
1. 调度算法选择
- 轮询(Round Robin):默认算法,均匀分配
- 加权轮询(Weighted RR):根据服务器性能分配不同权重
- 最少连接(Least Connections):新请求分配给当前连接数最少的服务器
- IP哈希(IP Hash):相同IP的请求始终发往同一服务器(会话保持)
- URL哈希:相同URL的请求发往同一服务器(适合静态资源)
2. 健康检查配置
- 检查间隔:2-5秒
- 超时时间:1-3秒
- 健康阈值:连续成功2-3次视为健康
- 不健康阈值:连续失败2-3次视为不健康
3. 会话保持配置
- Cookie插入(Nginx)
- IP哈希(简单但不够精确)
- 应用层会话共享(Redis存储session)
五、性能优化建议
1. 连接池优化:
- 调整`keepalive_timeout`(Nginx默认75s)
- 配置`keepalive_requests`(单个keepalive连接的最大请求数)
2. 缓冲设置:
```nginx
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
```
3. 超时设置:
```nginx
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 30s;
```
4. 压缩配置:
```nginx
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1k;
gzip_comp_level 6;
```
六、监控与告警
1. 监控指标:
- 请求量(QPS)
- 响应时间(P99/P95)
- 错误率(5xx/4xx)
- 连接数(活跃/空闲)
- 带宽使用率
2. 告警策略:
- 5xx错误率 > 1% 持续5分钟
- 平均响应时间 > 500ms 持续10分钟
- 服务器不可用(健康检查失败)
3. 工具推荐:
- Prometheus + Grafana(监控可视化)
- ELK(日志分析)
- 阿里云ARMS(应用实时监控)
七、高可用方案
1. 主备架构:
- Keepalived + VRRP实现VIP漂移
- 心跳检测间隔 < 1s
2. 多活架构:
- 单元化部署(按城市/区域划分)
- 异地多活(同城双活+异地灾备)
3. 故障转移:
- 自动剔除不健康节点
- 优雅下线(drain模式)
八、安全配置
1. 访问控制:
- 限制源IP(白名单)
- 速率限制(令牌桶算法)
2. HTTPS配置:
```nginx
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
```
3. DDoS防护:
- 云服务商防护(阿里云DDoS高防)
- 流量清洗
九、实施步骤
1. 环境准备(服务器、网络、存储)
2. 基础软件安装(Nginx/LVS/HAProxy)
3. 配置负载均衡规则
4. 配置健康检查
5. 配置会话保持(如需)
6. 配置监控系统
7. 测试验证(压力测试、故障演练)
8. 上线切换(灰度发布)
十、常见问题处理
1. 连接数不足:
- 调整系统参数`net.core.somaxconn`
- 调整Nginx的`worker_connections`
2. TCP TIME_WAIT过多:
- 调整`net.ipv4.tcp_tw_reuse = 1`
- 调整`net.ipv4.tcp_tw_recycle = 1`(谨慎使用)
3. 负载不均:
- 检查健康检查配置
- 调整权重参数
- 检查应用服务器性能差异
4. 会话保持失效:
- 检查cookie配置
- 检查应用session管理
通过以上配置,快驴生鲜系统可以实现高可用、高性能的负载均衡架构,有效应对生鲜电商业务的高并发和实时性要求。