Nginx反向代理的常用调度算法

upstream 调度算法


1.rr

按客户端请求顺序把客户端的请求逐一分配到不同的后端的服务器,这相当于lvs中的rr算法。如果后端服务器岩机(默认情况下只检测80端口,如果后端报502,404,403,503,还是会直接返给用户),岩机服务器会被自动剔除,使用户访问不受影响,请求会分配给正常的服务器


2.weight(权重)

在轮询算法的基础上加上权重(默认rr+weight),权重轮询和访问成正比,权重越大,转发的请求也就越多。可以根据服务的配置和性能指定权重值大小,可以有效解决新旧服务器性能不均进行请求分配问题


3.ip_hash

每个请求按访问的ip的hash结果分配,当新的请求到达时,先将其客户端的ip通过哈希算法出一个值,在最后的请求客户端,ip的哈希值只要相同,就会被分配至同一台服务器(lvs负载均衡的-p参数,keepalive配置里的persistene_timeout 50),该调度算法可以解决动态网页session共享问题,但是有时会导致请求分配不均,即无法保证1:1的负载均衡,在国内所有的公司都是nat上网,多个pc对应一个外部ip。


    提示:必须是最前端的服务器,后端也必须直接接应用服务器多数情况不能和权重参数一起使用。


4.fair(第三方,no)动态算法

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

比上面两个更加智能的负载均衡算法,此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配,nginx本身不支持fair的,如果需要使用这种调度算法,必须有下载nginx的upstaeam_fair模块


5.least_conn

最少连接数,哪个机器连接数少,就分发。


6.一致性hash


http://tengine.taobao.org/document_cn/http_upstream_consistent_hash_cn.html

worker_processes  1;

http {
    upstream test {
        consistent_hash $request_uri;

        server 127.0.0.1:9001 id=1001 weight=3;
        server 127.0.0.1:9002 id=1002 weight=10;
        server 127.0.0.1:9003 id=1003 weight=20;
    }
}


原创文章,作者:Net20_赤羽,如若转载,请注明出处:http://www.178linux.com/15807

(2)
Net20_赤羽Net20_赤羽
上一篇 2016-06-01 15:39
下一篇 2016-06-01 15:39

相关推荐

  • keepalived高可用双主lvs-dr模型集群

    环境 centos6.8 在keepalived服务器上安装keepalived RS服务器上安装nginx ,安装过程省略 为了便于实验,四台机器将关闭iptables和selinux 配置如下: K1: #修改keepalived配置文件 vim /etc/keepalived/keepalived.conf ! Configuration File f…

    2017-05-13
  • N25_第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell [root@EASTED ~]# grep -E "(root|fedora|user1)" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:o…

    Linux干货 2017-01-10
  • 文件权限

           文件权限 一.文件属性   如下图所示:rw- 属于所属主root。中间r–属于所属组root的。r–属于其他的(other)   文件属性的操作: 1.chown 设置文件的所有者 例:chown  li(用户)   f1(文件)…

    Linux干货 2016-08-08
  • LAMP快速部署及LAMP组合深入讲解-2

      lamp SQL 数据管理模型:层次模型、网状模型、关系模型数据分类:结构化数据、半结构化数据、非结构化数据 关系模型 数据库:一个方案、一个项目 二维关系: 表:row, column 索引:index 视图:view SQL接口:Structured Query Language;类似于OS的shell接口;也提供编程功能; ANSI: S…

    2017-06-04
  • shell脚本之数组

    认识数组:    变量是存储单个元素的内存空间,而数组就是多个变量的合集,是一串连续的空间,但是,整个数组只能有一个名字。    数组内的数据都有指定的索引,以找到数组内指定的数据。索引的编号是从0开始,依次递增(0,1,2,3…),属于数值索引。索引也支持自定义的格式,而不仅是数值格式的索引,即为关联索引…

    Linux干货 2016-08-26
  • 萧田国给你五个2017GOPS北京站的参会理由!

    2017年7月28日,GOPS全球运维大会即将开幕,发起人萧田国将在主会场发表题为《运维如何延续自己的职业生涯》演讲,参加第七届北京站您会有哪些收益? 收益一: 【长达半天时间的培训式演讲】让您系统性掌握顶级互联网自动化运维体系 收益二: 【腾讯智能运维】传奇背后的细节,听了才知道 收益三: 与Facebook、Twitter、BATJ等运维大咖【面对面深度…

    Linux干货 2017-07-24