浏览量 131
2017/03/31 16:53
以下是Nginx中常用的负载均衡策略及配置示例,结合实战场景和最佳实践整理:
一、轮询策略(Round Robin)
默认策略,按服务器列表顺序分发请求,适用于服务器性能相近的场景。
http {
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
location / {
proxy_pass http://backend;
}
}
}
二、加权轮询(Weighted Round Robin)
根据服务器性能分配权重,权重越高流量占比越大:
upstream backend {
server 192.168.1.101:8080 weight=3; # 承担60%流量(3/(3+2))
server 192.168.1.102:8080 weight=2; # 承担40%流量
}
适用场景:服务器配置不均衡时(如新老服务器混合部署)。
三、IP哈希策略(IP Hash)
会话保持型策略,同一客户端IP始终分配到同一后端服务器:
upstream backend {
ip_hash;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
注意事项:
-
后端服务器宕机会导致会话丢失
-
动态IP或代理场景可能失效
四、最少连接策略(Least Connections)
优先分配请求到当前连接数最少的服务器,适合处理长连接场景(如WebSocket):
upstream backend {
least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
五、哈希策略(Hash)
根据自定义参数(如URL、请求头)分配请求,适用于缓存优化场景:
upstream backend {
hash $request_uri consistent; # 按请求URI分配
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
六、健康检查配置
增强服务可靠性的关键配置:
upstream backend {
server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.102:8080 max_fails=3 fail_timeout=30s;
}
参数说明:
-
max_fails
:允许失败次数 -
fail_timeout
:故障服务器暂停服务时间
七、高级场景配置
-
灰度发布:通过权重逐步切流
upstream backend { server new_server:8080 weight=1; # 10%流量 server old_server:8080 weight=9; # 90%流量 }
-
备份服务器:主服务器不可用时自动切换
upstream backend { server 192.168.1.101:8080; server 192.168.1.102:8080 backup; }
策略选择建议
场景 | 推荐策略 | 特点 |
---|---|---|
无状态服务 | 轮询/加权轮询 | 简单高效 |
会话依赖型 | IP哈希 | 会话保持 |
长连接服务 | 最少连接 | 负载均衡 |
缓存优化 | 哈希策略 | 资源复用 |
实际部署时建议结合keepalived
实现高可用架构,并通过压力测试验证配置效果。