Nginx常用配置参数有upstream,主要用于均衡后端多个实例: Nginx 的upstream目前支持5种算法分配方式: 1) 轮询(默认rr) 每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复自动添加上。 2) Weight权重 指定轮询权重,权重越高,处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况。 3) ip_hash 每个请求根据访问的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,一般用于登录会话。 4) fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 5) url_hash(第三方) upstream的 fail_timeout和max_fails参数是用来判断负载均衡upstream中的某个server是否失效。 在fail_timeout的时间内,nignx与upstream中某个server的连接尝试失败了max_fails次,则nginx会认为该server已经失效。在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。 例如在nginx.conf里面配置如下的tdt_app均衡: upstream tdt_app { server 10.10.1.11:8080 weight=1 max_fails=2fail_timeout=30s; server 10.10.1.12:8080 weight=1 max_fails=2fail_timeout=30s; } Tdt_app均衡两台后端JAVA服务,在30秒内nginx会与后端的某个server通信检测,如果检测连接失败2次,则Nginx会认为该server已经失效,然后踢出转发列表,然后在接下来的30s内,nginx不再讲请求转发给失效的server。
fail_timeout设置的时间对响应时间没影响,这个响应时间是用proxy_connect_timeout和proxy_read_timeout来控制的。 proxy_connect_timeout : Nginx与后端服务器连接的超时时间,发起握手等候响应超时时间。 proxy_read_timeout:连接成功后_等候后端服务器响应时间,其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)。 proxy_send_timeout :后端服务器数据回传时间,在规定时间之内后端服务器必须传完所有的数据。 keepalive_timout:一个http产生的tcp连接在传送完最后一个响应后,还需要等待多少秒后,才关闭这个连接。
|