nginx upstream 6种负载均衡策略介绍

upstream参数

参数描述
service反向服务地址加端口
weight权重
max_fails失败多少次,认为主机已经挂掉,踢出
fail_timeout踢出后重新探测时间
backup备用服务
max_conns允许最大连接数
slow_start当节点恢复,不立即加入

负载均衡策略

轮询(默认)

每个请求会按照时间逐一分配到不同的后端服务器上

upstream test {server 192.168.1.10:8080;server 192.168.1.11:8080;
}

也就是说我的第一个请求会落在10服务上,第二个会落在11,第三个10,第四个11…

权重

权重越大,访问的几率就越大

如果服务器处理性能有差异,可以降性能好的,权重大一点;处理性能低的权重小一点。

upstream test {server 192.168.1.10:8080 weight=7;server 192.168.1.11:8080 weight=3;
}
ip_hash

每个请求按访问的iphash结果分配,这样每台服务器固定一个后端服务

upstream test {ip_hash;server 192.168.1.10:8080;server 192.168.1.11:8080;
}

这个一般用于session数据的保存,因为服务之间不能切换,不然切换服务后session会失效,固定后端服务,保证session不丢失。

least_conn最少连接

把连接转发到较少的后端服器上

upstream test {least_conn;server 192.168.1.10:8080;server 192.168.1.11:8080;
}
fair

公平地按照后端服务器的响应时间(rt)来分配请求,响应时间(rt)小的后端服务器优先分配请求。

upstream test {fair;server 192.168.1.10:8080;server 192.168.1.11:8080;
}
url_hash

与 ip_hash类似,但是按照访问 url 的 hash 结果来分配请求,使得每个 url 定向到同一个后端服务器,主要应用于后端服务器为缓存的场景下。

upstream test {hash $request_uri;#指定hash算法hash_method crc32;server 192.168.1.10:8080;server 192.168.1.11:8080;
}