Nginx实现负载均衡的几种算法

13 阅读1分钟

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 SLBleast_conn / ip_hash / hash
网关层权重轮询 + 灰度
服务层Nacos 权重 + 客户端负载均衡