Nginx分配服务的策略
轮询,权重轮询,ip_hash,url_hash,fail服务器响应时间。一共五种分配方式
1. 默认轮询
将请求轮流分配到每一个服务器,某个服务器挂掉后能自动剔除,
upstream gateway{
server 192.168.1.11:8888;
server 192.168.1.22:8888;
server 192.168.1.33:8888;
}
2. 权重轮询
在轮询的基础上可以给某个服务器设置权重,权重越大,转发访问的概率越大。
upstream zhang21 {
server 192.168.1.11 weight=1;
server 192.168.1.22 weight=2;
server 192.168.1.33 weight=3;
}
该种方式适用于服务器性能差别较大的情况,给性能好的服务器增大权重。
3. ip_hash
根据请求的ip转换成hash,根据hash结果来进行分配服务器。可以让同一个ip地址多次访问到同一个服务器,适用于做压力测试。多次请求能访问到同一个服务。
upstream zhang21 {
ip_hash;
server 192.168.1.11:7777;
server 192.168.1.22:8888;
server 192.168.1.33:9999;
}
该种方式适用于服务器需要保存用户状态的情况(比如会话状态,购物车状态),避免请求落到多个后端服务器造成状态丢失。
4. fair公平
根据后端服务器的响应时间来进行分配请求,响应时间越短的服务器优先分配请求。
upstream zhang21 {
fair;
server 192.168.1.11;
server 192.168.1.22;
server 192.168.1.33;
}
5. url_hash
按照url对应的hash值来分配请求,同一个url访问同一个服务器。适用于访问缓存服务器。
upstream zhang21 {
server 192.168.1.11;
server 192.168.1.22;
server 192.168.1.33;
hash $request_uri;
hash_method crc32;
}
hash_method为hash采用的算法