当前位置: 首页 > article >正文

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 结果来分配请求, 使每个url定向到同一台后端服务器,后端服务器为缓存时比较有效。
例如:

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; 
}
http://www.lryc.cn/news/2415702.html

相关文章:

  • 阻抗,特征阻抗,等效阻抗计算.CAN差分线阻抗
  • Java后端研发神兵利器之JMeter接口并发测试
  • IP地址操作管理库——IPy库
  • 微机原理课程设计——步进电机工作原理模拟程序设计
  • LAMP环境的配置
  • 从SVN拉取项目到运行
  • 网络“三剑客”
  • 模拟电子技术设计--简易函数信号发生器的设计与制作
  • IDEA在进行UDP半双工通信时,客户端输入正常,服务端接受出现打印出方框乱码的解决方法。
  • win8.1不支持LOL 升级需谨慎
  • python自动化操作安卓app
  • 【花雕学编程】Arduino动手做(223)---42步进电机二相四线+A4988驱动模块+扩展板7
  • MSN Space 使用高级技巧
  • java的part方法,《JAVA:从入门到精通》part 19
  • 工业RFID读写器的作用有哪些?
  • C语言和Java哪个难学?
  • Inter(R) Wireless -AC 9560网卡43掉线解决方法记录
  • node.js+vue计算机毕业设计湖南旅游网站(附源码+程序+mysql+Express)
  • 计算器代码java_计算器 java源代码
  • 搜索引擎优化和高级使用技巧指南
  • 高考数据可视化:高考大省河南省参加人数高达125万,全国第一
  • 简单c语言入门
  • 信息学奥赛一本通·编程启蒙 C++版 3011-3020(10题)
  • 快速搭建24小时不间断直播间的完整代码包及搭建教程
  • 第二讲:网线的制作方法及步骤
  • 如何用ASP代码实现虚拟主机
  • 如何购买公网IP?
  • web页面上联系QQ客服功能实现——一行代码搞定
  • Java大数据处理:如何使用Java技术实现高效的大数据处理
  • 基于PHP后台微信医院预约挂号小程序系统设计与实现(安装部署+源码+文档)