Nginx的upstream支持5种 分配方式,其中 轮询、权重、IP散列这三种为Nginx原生支持的分配方式,fair 和 url_hash 为第三方支持的分配方式。
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器 down 掉后,能自动剔除。
upstream your_upstream_name{
server 172.16.1.10:8080;
server 172.16.1.11:8080;
server 172.16.1.12:8080;
server 172.16.1.13:8080;
}
轮询的加强版,既可以指定轮询比率,weight 和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream your_upstream_name {
server 172.16.1.11:8080 weight=1;
server 172.16.1.22:8080 weight=2;
server 172.16.1.33:8080 weight=3;
}
每个请求按照访问 Ip(即Nginx的前置服务器或客户端IP)的 hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决 session 一致问题。
upstream your_upstream_name {
ip_hash;
server 172.16.1.11:8080;
server 172.16.1.22:8080;
server 172.16.1.33:8080;
}
fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间(rt)小的后端服务器优先分配请求。
upstream xqlee{
fair;
server 172.16.1.11:8080;
server 172.16.1.22:8080;
server 172.16.1.33:8080;
}
与 ip_hash类似,但是按照访问 url 的 hash 结果来分配请求,使得每个 url 定向到同一个后端服务器,主要应用于后端服务器为缓存的场景下。
upstream xqlee{
server 172.16.1.11:8080;
server 172.16.1.22:8080;
server 172.16.1.33:8080;
hash $request_uri;
hash_method crc32;
}
其中,hash_method为使用的hash算法,需要注意,此时server语句中不能添加 weight等参数。
https://blog.xqlee.com/article/2407172033484921.html