#动态做事器组upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0}

在upstream模块配置完成后,要让指定的访问反向代理到做事器列表:

#其他页面反向代理到tomcat容器location ~ .$ { index index.jsp index.html; proxy_pass http://dynamic_zuoyu;}

这便是最基本的负载均衡实例,但这不敷以知足实际需求;目前Nginx做事器的upstream模块支持6种办法的分配:

负载均衡策略

jsp算法Nginx办事器的六种负载平衡策略详解 Bootstrap

轮询默认办法weight权重办法ip_hash依据ip分配办法least_conn最少连接办法fair(第三方)相应韶光办法url_hash(第三方)依据URL分配办法在这里,只详细解释Nginx自带的负载均衡策略,第三方不多描述。

1、轮询

最基本的配置方法,上面的例子便是轮询的办法,它是upstream模块默认的负载均衡默认策略。
每个要求会按韶光顺序逐一分配到不同的后端做事器。

有如下参数:

fail_timeout与max_fails结合利用。
max_fails设置在fail_timeout参数设置的韶光内最大失落败次数,如果在这个韶光内,所有针对该做事器的要求都失落败了,那么认为该做事器会被认为是停机了,

fail_time做事器会被认为停机的韶光长度,默认为10s。
backup标记该做事器为备用做事器。
当主理事器停滞时,要求会被发送到它这里。
down标记做事器永久停机了。
把稳:

在轮询中,如果做事器down掉了,会自动剔除该做事器。
缺省配置便是轮询策略。
此策略适宜做事器配置相称,无状态且短平快的做事利用。

2、weight

权重办法,在轮询策略的根本上指定轮询的几率。
例子如下:

#动态做事器组upstream dynamic_zuoyu { server localhost:8080 weight=2; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082 backup; #tomcat 8.5 server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0}

在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如Tomcat 7.0被访问的几率为其他做事器的两倍。

把稳:

权重越高分配到须要处理的要求越多。
此策略可以与least_conn和ip_hash结合利用。
此策略比较适宜做事器的硬件配置差别比较大的情形。

3、ip_hash

指定负载均衡器按照基于客户端IP的分配办法,这个方法确保了相同的客户真个要求一贯发送到相同的做事器,以担保session会话。
这样每个访客都固定访问一个后端做事器,可以办理session不能跨做事器的问题。

#动态做事器组 upstream dynamic_zuoyu { ip_hash; #担保每个访客固定访问一个后端做事器 server localhost:8080 weight=2; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0 }

把稳:

在nginx版本1.3.1之前,不能在ip_hash中利用权重(weight)。
ip_hash不能与backup同时利用。
此策略适宜有状态做事,比如session。
当有做事器须要剔除,必须手动down掉。

4、least_conn

把要求转发给连接数较少的后端做事器。
轮询算法是把要求均匀的转发给各个后端,使它们的负载大致相同;但是,有些要求占用的韶光很长,会导致其所在的后端负载较高。
这种情形下,least_conn这种办法就可以达到更好的负载均衡效果。

#动态做事器组upstream dynamic_zuoyu { least_conn; #把要求转发给连接数较少的后端做事器 server localhost:8080 weight=2; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082 backup; #tomcat 8.5 server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0}

把稳:

此负载均衡策略适宜要求处理韶光长短不一造成做事器过载的情形。

5、第三方策略

第三方的负载均衡策略的实现须要安装第三方插件。

①fair

按照做事器真个相应韶光来分配要求,相应韶光短的优先分配。

#动态做事器组upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 fair; #实现相应韶光短的优先分配}

②url_hash

按访问url的hash结果来分配要求,使每个url定向到同一个后端做事器,要合营缓存命中来利用。
同一个资源多次要求,可能会到达不同的做事器上,导致不必要的多次下载,缓存命中率不高,以及一些资源韶光的摧残浪费蹂躏。
而利用url_hash,可以使得同一个url(也便是同一个资源要求)会到达同一台做事器,一旦缓存住了资源,再此收到要求,就可以从缓存中读取。

#动态做事器组upstream dynamic_zuoyu { hash $request_uri; #实现每个url定向到同一个后端做事器 server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0}三、总结

以上便是6种负载均衡策略的实现办法,个中除了轮询和轮询权重外,都是Nginx根据不同的算法实现的。
在实际利用中,须要根据不同的场景选择性利用,大都是多种策略结合利用以达到实际需求。
希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

转自:https://www.jb51.net/article/143985.htm