#动态做事器组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种办法的分配:
负载均衡策略
轮询默认办法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