Nginx 作为七层/四层负载均衡器,内置和扩展支持多种成熟的负载均衡算法,常见企业级用法如下:
一、轮询(Round Robin,默认)
upstream order_service {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
特点:
- 默认策略
- 请求按顺序分发
- 支持权重
server 10.0.0.1:8080 weight=5;
server 10.0.0.2:8080 weight=1;
二、加权轮询(Weighted Round Robin)
本质是轮询 + weight
适用:服务器配置不一致
三、随机(Random)
upstream order_service {
random;
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
增强版(最少连接随机):
random two least_conn;
四、最少连接数(Least Connections)
upstream order_service {
least_conn;
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
适用:长连接、WebSocket、耗时请求。
五、IP Hash(会话粘性)
upstream order_service {
ip_hash;
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
同一客户端 IP 永远落到同一台机器。
六、URL Hash(Hash 算法)
upstream order_service {
hash $request_uri consistent;
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
可换成:
hash $cookie_userId consistent;
用于用户级别粘性、缓存命中优化。
七、权重 + 健康检查
server 10.0.0.1:8080 weight=5 max_fails=3 fail_timeout=30s;
八、基于响应时间(Nginx Plus)
商业版支持:
least_time header;
least_time last_byte;
按响应最快优先。
九、灰度发布 / 流量染色(企业级)
map $http_x_gray $backend {
default backend_v1;
"true" backend_v2;
}
企业真实架构中常用组合
| 层级 | 算法 |
|---|---|
| Nginx SLB | least_conn / ip_hash / hash |
| 网关层 | 权重轮询 + 灰度 |
| 服务层 | Nacos 权重 + 客户端负载均衡 |