### 一、调配形式
Nginx 的 upstream 反对 5 种调配形式,上面将会具体介绍,其中,前三种为 Nginx 原生反对的调配形式,后两种为第三方反对的调配形式:### 1、轮询
轮询是 upstream 的默认调配形式,即每个申请依照工夫程序轮流调配到不同的后端服务器,如果某个后端服务器 down 掉后,能主动剔除。upstream backend {
server 192.168.1.101:8888;
server 192.168.1.102:8888;
server 192.168.1.103:8888;
}
### 2、weight
轮询的加强版,即能够指定轮询比率,weight 和拜访几率成正比,次要利用于后端服务器异质的场景下。
upstream backend {
server 192.168.1.101 weight=1;
server 192.168.1.102 weight=2;
server 192.168.1.103 weight=3;
}
### 3、ip_hash
每个申请依照拜访 ip(即 Nginx 的前置服务器或者客户端 IP)的 hash 后果调配,这样每个访客会固定拜访一个后端服务器,能够解决 session 统一问题。upstream backend {
ip_hash;
server 192.168.1.101:7777;
server 192.168.1.102:8888;
server 192.168.1.103:9999;
}
### 4、fair
fair 顾名思义,偏心地依照后端服务器的响应工夫(rt)来调配申请,响应工夫短即 rt 小的后端服务器优先调配申请。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
fair;
}
### 5、url_hash
与 ip_hash 相似,然而依照拜访 url 的 hash 后果来调配申请,使得每个 url 定向到同一个后端服务器,次要利用于后端服务器为缓存时的场景下。upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
hash $request_uri;
hash_method crc32;
}
其中,hash_method 为应用的 hash 算法,须要留神的是:此时,server 语句中不能加 weight 等参数。
### 二、设施状态
从下面实例不难看出 upstream 中 server 指令语法如下:
server address [parameters]
关键字 server 必选。address 也必选,能够是主机名、域名、ip 或 unix socket,也能够指定端口号。parameters 是可选参数,能够是如下参数:down:示意以后 server 已停用
backup:示意以后 server 是备用服务器,只有其它非 backup 后端服务器都挂掉了或者很忙才会调配到申请。weight:示意以后 server 负载权重,权重越大被申请几率越大。默认是 1.
max_fails 和 fail_timeout 个别会关联应用,如果某台 server 在 fail_timeout 工夫内呈现了 max_fails 次连贯失败,那么 Nginx 会认为其曾经挂掉了,从而在 fail_timeout 工夫内不再去申请它,fail_timeout 默认是 10s,max_fails 默认是 1,即默认状况是只有产生谬误就认为服务器挂掉了,如果将 max_fails 设置为 0,则示意勾销这项查看。举例说明如下:upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}