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
每个请求按访问的ip
的hash
结果分配,这样每台服务器固定一个后端服务
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;
}