Nginx

Nginx常见负载均衡方式

轮询(默认):按照每个请求时间的顺序的分配到后端服务器

ip_hash:每个请求按访问ip的hash结果分配

weight:按照权重轮询,权重值越高,轮询几率越大

fair(三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配

url_hash(三方):根据url的hash结果进行分配

健康检查

Nginx的健康检查主要体现在对后端服务提供健康检查,且功能被集成在upstream模块中,共有两个指令

max_fails:定义定义可以发生错误的最大次数

fail_timeout:nginx在fail_timeout设定的时间内与后端服务器通信失败的次数超过max_fails设定的次数,则认为这个服务器不在起作用;在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。

Nginx在检测到后端服务器故障后,nginx依然会把请求转向该服务器,当nginx发现timeout或者 refused后,会把改请求会分发到 upstream的其它节点,直到获得正常数据后,nginx才会把数据返回给用户,这也便体现了nginx的异步传输,而lvs/haproxy /apache责无法做到这些(在lvs/haproxy/apache里,每个请求都只有一次机会,假如用户发起一个请求,结果该请求分到的后端服务器 刚好挂掉了,那么这个请求就失败了)

Last updated