Docs/Nginx/负载均衡策略.md
2022-10-18 16:59:37 +08:00

65 lines
No EOL
2.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**RoundRobin**
轮询:默认。
每个请求会按时间顺序平均分配到不同的后端服务器。
**Weight**
权重在轮询策略的基础上指定轮询的几率。也可以认为是在轮询的基础上新增了一个weight的参数此参数指定轮询的几率用于后端服务器性能不均的情况。
```
upstream [服务器组名称]{
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号];
  ....
}
```
**ip_hash**
依据ip分配方式指定负载均衡器按照基于客户端IP的分配方式这个方法确保了相同的客户端请求一致发送到相同的服务器以保证session会话。这样每个访客都固定访问一个后端服务器可以解决session不能跨服务器的问题。
```
upstream [服务器组名称]{
  ip_hash;
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号];
  ....
}
```
注意:
1.nginx1.3.1之前的版本不能在ip_hash中使用权重weight
2.ip_hash不能与backup同时使用
3.此策略适合有状态服务的程序比如session
4.当有服务器需要剔除必须手动down掉。
**least_conn**
最少连接方式把请求发给链接数最少的后端服务器。轮询是把请求平均分配给各个后端使它们的负载大致相同。但是有些请求占用的时间很长会导致其所在的后端负载较高。这种情况下least_conn这种方式就可以达到更好的负载均衡效果。
```
upstream [服务器组名称]{
  least_conn;
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号];
  ....
}
```
**fair**
响应时间方式,按照服务器端的响应时间来分配请求,响应时间短的优先分配。
```
upstream [服务器组名称]{
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号];
  ....
  fair;
}
```
注意:
需要安装第三方插件。
**url_hash**
url分配方式按访问url的hash结果来分配请求使每个url定向到同一个后端服务器要配合缓存命中来使用。同一个资源多次请求可能会到达不同的服务器上导致不必要的多次下载缓存命中率不高以及一些资源时间的浪费。而使用url_hash可以使得同一个url也就是同一个资源请求会到达同一台服务器一旦缓存住了资源再次收到请求就可以在缓存中读取。
```
upstream [服务器组名称]{
  hash $request_uri;
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号];
  ....
}
```
注意1.需要安装第三方插件2.uri是i不是小写的L。