nginx负载均衡的五种算法

标签: nginx 负载均衡
20人阅读 评论(0) 收藏 举报
分类:

nginx负载均衡的五种算法

一、Nginx负载均衡算法

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

例如:

upstream bakend {  
    server 192.168.0.1;    
    server 192.168.0.2;  
}

2、weight(轮询权值)

weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:

upstream bakend {  
    server 192.168.0.1 weight=10;  
    server 192.168.0.2 weight=10;  
}

3、ip_hash

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:

upstream bakend {  
    ip_hash;  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
} 

4、fair(第三方)

比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

按后端服务器的响应时间来分配请求,响应时间短的优先分配。
例如:

upstream backend {  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
    fair;  
}

5、url_hash(第三方)

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

例如:

upstream backend {  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
    hash $request_uri;  
    hash_method crc32;  
}

二、Nginx负载均衡调度状态

在Nginx upstream模块中,可以设定每台后端服务器在负载均衡调度中的状态,常用的状态有:

  1. down,表示当前的server暂时不参与负载均衡
  2. weight 默认为1,weight越大,负载的权重就越大。
  3. backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低
  4. max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
  5. fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。

例如:

upstream bakend{ 
      ip_hash; 
      server 192.168.0.1:90 down; 
      server 192.168.0.1:80 weight=2; 
      server 192.168.0.2:90; 
      server 192.168.0.2:80 backup; 
}

参考博文:https://www.cnblogs.com/lvgg/p/6140584.html

查看评论

企业级Nginx负载均衡与keepalived高可用实战

2015年4月底最新发布,互联网环境最常用Nginx负载均衡技术 企业级实战基于nginx1.6.2+keepalived-1.2.16最新稳定版讲解 原理与实践并重!国内运维架构大师老男孩讲解,深入浅出。
  • 2015年05月16日 13:57

LVS负载均衡的八种调度算法

LVS已实现了以下八种调度算法: LVS负载均衡算法---1.轮叫调度(Round-RobinScheduling) 调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器...
  • gzh0222
  • gzh0222
  • 2011-08-31 15:01:16
  • 4896

nginx负载均衡的5种策略

nginx负载均衡的5种策略 nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端...
  • qq_33238935
  • qq_33238935
  • 2017-11-28 10:05:59
  • 58

Nginx五种负载均衡模式

1.roundrobin:轮询方式 2.weight:根据权重来分发请求到不同的机器中 3.ip_hash:根据请求者ip的hash值将请求发送到后台服务器中 4.url_hash:根据请求url的h...
  • aitcax
  • aitcax
  • 2016-04-19 16:47:42
  • 2925

nginx的五种负载均衡算法

1.轮询 其nginx.conf文件编写如下upstream test { server 172.25.40.1:80; servse 172.25.40.2:8080; }可选择是否用于后备’ba...
  • parameter_
  • parameter_
  • 2017-07-19 22:19:32
  • 739

Nginx之4中不同的负载均衡算法

Nginx的负载均衡支持4种算法,round-robin、least-connected、ip-hash、和weightd。   1、round-robin          round-rob...
  • zmx729618
  • zmx729618
  • 2016-06-01 14:06:16
  • 2999

五种常用算法理解

分治法:将问题实例划分成几个较小的子问题(可以递归的划分),然后对这些较小的子问题求解,合并这些较小的子问题,以得到原始问题的解。 有点类似Map/Reduce思想。主要区别在于:Map/Reduce...
  • lanxiangru
  • lanxiangru
  • 2017-10-13 16:30:20
  • 191

【Nginx】实现负载均衡的几种方式

要理解负载均衡,必须先搞清楚正向代理和反向代理。正向代理与反向代理【总结】注: 正向代理,代理的是用户。 反向代理,代理的是服务器 什么是负载均衡当一台服务器的单位时间内的访问量越大时,服务器压力就越...
  • qq_28602957
  • qq_28602957
  • 2017-03-12 11:59:53
  • 14949

nginx 负载均衡算法

1、轮询 2、权值轮询 3、ip哈希 4、响应时间动态分配 5、URL哈希
  • yangkalaok
  • yangkalaok
  • 2015-12-09 09:18:38
  • 962

nginx负载均衡的五种模式

1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 upstream backserver { server 192.168.0.14...
  • qq_37836418
  • qq_37836418
  • 2017-04-28 10:07:12
  • 178
    个人资料
    持之以恒
    等级:
    访问量: 15万+
    积分: 2359
    排名: 1万+
    最新评论