### 一、调配形式 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; }