upstream 5种策略

  1. 轮询(默认)
  2. 权重(weight)
  3. 访问ip (ip_hash)
  4. 最少连接数 (least_conn)
  5. fair
  6. url_hash

轮询

upstream hostname {
    server 10.1.1.11:10000;
    server 10.1.1.12:10000;
}

weight(权重)

权重大负载就大

upstream hostname {
    server 10.1.1.11:10000 weight=1;
    server 10.1.1.12:10000 weight=2;
}

ip_hash(访问ip)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
但如果这个后端服务器故障之后,分配到别的服务的时候还是有session问题。

  • 使用jwt可以忽略这个配置
upstream hostname {
    ip_hash; 
    server 10.1.1.11:10000;
    server 10.1.1.12:10000;
}

最少连接数(least_conn)

nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。
在一些要求需要更长的时间才能完成的应用情况下, 最少连接可以更公平地控制应用程序实例的负载。

upstream hostname {
    least_conn; 
    server 10.1.1.11:10000;
    server 10.1.1.12:10000;
}

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

upstream hostname {
     fair;
     server 10.1.1.11:10000;
     server 10.1.1.12:10000;
}

url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream hostname {
    hash $request_uri;
    server 10.30.1.11:10000;
    server 10.30.1.12:10000;
}