NGINX轮询机制的⼏种形式
前⾔:总以为轮询就简单的next⽽已,实际还有⼏种不同的实现机制。某个客户的源站有⼏个不同的IP,回源的时候⾃然是采⽤的轮询的机制。客户业务上线前,检查源站的联通性发现⼀个漏⽹之鱼竟然差点滥竽充数。然⽽客户的想法确是:先酱紫配着吧,你们轮询回源应该能踢掉不响应的源站吧。我:(不能);客户:没事,先酱紫。不过你们的机制还得升级呀,容错性不⾼呀;我:。。。
且看NGINX轮询机制的⼏种形式:(来⾃佚名作者的科普)
Nginx中upstream有以下⼏种⽅式:
1、轮询(weight=1)
默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐⼀分配到不同的后端服务器,如果后端服务器down掉,能⾃动剔除。
upstream bakend {
server 192.168.1.10;
server 192.168.1.11;
}
weight的所有形式
2、weight
指定轮询⼏率,weight和访问⽐率成正⽐,⽤于后端服务器性能不均的情况。
如果后端服务器down掉,能⾃动剔除。
⽐如下⾯配置,则1.11服务器的访问量为1.10服务器的两倍。
upstream bakend {
server 192.168.1.10 weight=1;
server 192.168.1.11 weight=2;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问⼀个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要⼿⼯down掉。
upstream resinserver{
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
4、fair(第三⽅插件)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream resinserver{
server 192.168.1.10:8080;
server 192.168.1.11:8080;
fair;
}
5、url_hash(第三⽅插件)
按访问url的hash结果来分配请求,使每个url定向到同⼀个后端服务器,后端服务器为缓存服务器时⽐较有效。
在upstream中加⼊hash语句,hash_method是使⽤的hash算法
upstream resinserver{
server 192.168.1.10:8080;
server 192.168.1.11:8080;
hash $request_uri;
hash_method crc32;
}
设备的状态有:
down 表⽰单前的server暂时不参与负载
weight 权重,默认为1。 weight越⼤,负载的权重就越⼤。
max_fails 允许请求失败的次数默认为1。当超过最⼤次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout max_fails次失败后,暂停的时间。
backup 备⽤服务器, 其它所有的⾮backup机器down或者忙的时候,请求backup机器。所以这台机器压⼒会最轻。原⽂:wwwblogs/liqiu/p/3140329.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。