upstream配置:
upstream mybackend {
server 192.168.36.3:8081 max_fails=2 fail_timeout=30s;
server 192.168.36.4:8081 max_fails=2 fail_timeout=30s;
server 192.168.36.5:8081 max_fails=2 fail_timeout=30s;
}
一、默认值。
如果不配置max_fails=2 fail_timeout=30s,默认是max_fails=1 fail_timeout=10s。
二、upstream是被动的探测,没有主动的探测行为。
使用用户的真实请求探测,如果请求某个backend失败,会轮询到下一台backend,依次类推。
三、熔断时间。
如果请求某个后端失败了max_fails次,就会在fail_timeout时间内不再对其请求。
四、如果所有backend全部失败。
max_fails 和 fail_timeout 失效,每次用户请求都会轮询所有backend,然后才失败。
五、判错条件。
http code非200不算fail,nginx记录fail数量只记录timeout 、connect refuse、502、500、503、504这6种状态,timeout和connect refuse是永远被记录为fail状态,而502、500、503、504只有在配置proxy_next_upstream后nginx才会记录这4种HTTP错误到fails中,当fails大于等于max_fails时,则该节点失效。
总结:
所有backend全部失败请求才会失败。
--end--