1、负载均衡
nginx负载均衡是根据它的均衡策略,将请求分配给后端的不同服务器处理,比如配置了A、B、C三台服务器,如果A服务器挂了,那请求自动会落到B和C这两台服务器进行处理。
如果其中的服务器正在处理请求,那么新的一次请求则会选择比较空闲的服务器进行处理,所以它能使你的服务响应更快,可用性高,避免资源的过载和浪费。
2、均衡策略
1、轮询(默认)
每个请求按时间顺序分配到不同的后端服务器,如果后端服务器down掉了,能自动剔除,下次请求不会落入。
2、weight(权重)
指定服务器的倾斜比例,轮询的几率,权重和访问率成正比,可用于后端服务器性能不均的情况,权重越大,落入的几率越高,需根据实际情况合理配置
3、ip_hash(通过客户端请求的ip进行hash,再通过hash值来选择响应的后端服务器)
每个请求按IP的hash结果分配,同一个用户多次访问时,可以固定一个服务器,这样避免建立多次的Http链接问题,也可以解决session的问题
使用ip_hash的注意点:
不能把后台服务器直接移除,只能标记
down
4、url_hash(通过客户端请求的url进行hash,再通过hash值来选择响应的后端服务器)
每个请求按url的hash结果分配,使每个url定向到一个后端服务器
4、upstream 指令参数
1、max_conns
限制每台serve的连接数,用户保护服务器过载,可以起到限流的作用
2、slow_start
商业版,需付费
3、down
用于标记某台服务器节点不可使用
4、backup(备胎)
表示被标记的服务器节点是备用机,只有在其他服务器都凉凉的情况下,才会加入到集群,才会被用户访问到
5、max_fails
表示失败几次,则会判定为server已宕机,自动剔出集群服务。
6、fail_timeout
表示失败的重试时间
与max_fails组合使用max_fails=2 fail_timeout=20s;
代表在20秒内请求某一台服务器失败次数达到2此以后,则表示这台服务器已经挂了,随后的20秒内,都不会有新的请求到达这台挂了的服务器节点上,而是会请到正常的服务器节点上,20秒过后再有新的请求到挂掉的服务器是,如果还是失败,则会重复这个步骤,一直到恢复为止