`
liuguofeng
  • 浏览: 435053 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Nginx深入详解之upstream分配方式

 
阅读更多

http://blog.chinaunix.net/uid-22312037-id-4081140.html

一、分配方式
        Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:
1、轮询         
        轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
        upstream backend {
            server 192.168.1.101:8888;
            server 192.168.1.102:8888;
            server 192.168.1.103:8888;
        }
2、weight        
        轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
        upstream backend {
            server 192.168.1.101 weight=1;
            server 192.168.1.102 weight=2;
            server 192.168.1.103 weight=3;
        }
3、ip_hash        
        每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
        upstream backend {
            ip_hash;

            server 192.168.1.101:7777;
            server 192.168.1.102:8888;
            server 192.168.1.103:9999;
        }
4、fair        
        fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
        upstream backend {
            server 192.168.1.101;
            server 192.168.1.102;
            server 192.168.1.103;
            fair;

        }
5、url_hash
        与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
        upstream backend {
            server 192.168.1.101;
            server 192.168.1.102;
            server 192.168.1.103;
            hash $request_uri;
            hash_method crc32;

        }
        其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。
        关于,如何在负载均衡中使用upstream请参看这里

二、设备状态
        从上面实例不难看出upstream中server指令语法如下:
        server address [parameters]
        关键字server必选。
        address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
        parameters是可选参数,可以是如下参数:
        down:表示当前server已停用
        backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求。
        weight:表示当前server负载权重,权重越大被请求几率越大。默认是1.
        max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。
        举例说明如下:
        upstream backend {
            server    backend1.example.com    weight=5;
            server    127.0.0.1:8080               max_fails=3 fail_timeout=30s;
            server    unix:/tmp/backend3;           
        }
        更多详细信息请参看这里

分享到:
评论

相关推荐

    Nginx深入详解之upstream分配方式.docx

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    详解nginx upstream 配置和作用

    主要介绍了详解nginx upstream 配置和作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维第三部分(保证能用)

    第38章 Nginx的基本认证方式 第39章 Nginx的cookie 第40章 Nginx基于客户端请求头的访问分类 第41章 通过Upstream模块使得Nginx实现后台服务器集群 第42章 根据浏览器选择主页 第43章 关于Nginx提供下载.ipa或....

    Nginx反向代理实现支持长连接详解

    前言 Nginx upstream与后端的连接默认为短连接,通过HTTP/1.0向后端发起连接,并把请求...Nginx目前的upstream连接建立和获取的机制如下图。Nginx会在一开始创建connection pool(进程间不共享,可以避免锁),提供给所

    实战Nginx高性能Web服务器

    内容:详解Nginx的主模块中,非测试常用指令的使用方式。 8、高性能Web服务器Nginx的配置与部署研究(8)核心模块之事件模块 内容:详解Nginx的事件模块中常用指令。 9、高性能Web服务器Nginx的配置与部署研究(9...

    从零开始的Nginx详解(5)【Nginx-负载均衡】

    HTTP图片服务器及HTTPS一、负载均衡简介二、负载均衡实验配置~~0.Tomcat安装:~~1.负载服务器配置2....负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽

    决战Nginx系统卷:高性能Web服务器详解与运维第一部分(保证能用)

    第38章 Nginx的基本认证方式 第39章 Nginx的cookie 第40章 Nginx基于客户端请求头的访问分类 第41章 通过Upstream模块使得Nginx实现后台服务器集群 第42章 根据浏览器选择主页 第43章 关于Nginx提供下载.ipa或....

    决战Nginx系统卷:高性能Web服务器详解与运维第二部分(保证能用)

    第38章 Nginx的基本认证方式 第39章 Nginx的cookie 第40章 Nginx基于客户端请求头的访问分类 第41章 通过Upstream模块使得Nginx实现后台服务器集群 第42章 根据浏览器选择主页 第43章 关于Nginx提供下载.ipa或....

    Nginx高性能Web服务器详解

    Nginx高性能Web服务器详解,包括重要模块基本配置,性能包括系统linux系统本身及nginx服务本身的优化设置,rewrite,upstream负载均衡等常用功能

    Django nginx配置实现过程详解

    django 在引入第三方模块的时候保证服务的高可用,要设立一个备份接口,当主接口宕机时可以设置一个超市参数来使用备份的接口。... upstream配置域:反向代理配置域 层次关系 events { .... } http

    Nginx DNS resolver配置实例

    nginx 通过 proxy_pass 和 upstream server 通信的时候需要手动指定 resolver。某些时候 DNS 解析失败就会出现这个错误: 代码如下: domain.com could not be resolved. 可以指定多个 DNS 并重置域名 TTL 延长 ...

    nginx开发从入门到精通

    nginx开发从入门到精通,nginx负载均衡技术学习资料,nginx handler、过滤模块、upstream模块讲解,原理解析,架构详解。比较详尽。

    详解nginx 的 default_server 定义及匹配规则

    主要介绍了详解nginx 的 default_server 定义及匹配规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    详解Nginx服务器之负载均衡策略(6种)

    一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一篇博客。 二、Nginx负载均衡...

    详解nginx 配置文件解读

    nginx配置文件主要分为四个部分: main{#(全局设置) http{#服务器 upstream{} #(负载均衡服务器设置:主要用于负载均衡和设置一系列的后端服务器) server{ #(主机设置:主要用于指定主机和端口) location{}#...

    详解Nginx服务器中的nginx.conf配置文件

    还有一些其他的配置段,如 event,upstream 等。 通用设置  user nginx  指定运行 nginx workre 进程的用户和组  worker_rlimit_nofile #  指定所有 worker 进程能够打开的最大文件数  worker_cpu_affinity  ...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议.zip

    ├─3.01 Nginx进阶配置提升-预定义变量及日志详解.mp4 ├─3.02 Nginx进阶配置提升-日志切割及升级.mp4 ├─3.03 Nginx进阶-配置提升-Nginx错误页面.mp4 ├─3.04 Nginx进阶-配置提升-访问控制.mp4 ├─3.05 Nginx...

    详解Nginx限流配置

    本文以示例的形式,由浅入深讲解Nginx限流相关配置,是对简略的官方文档的积极补充。 Nginx限流使用的是leaky bucket算法,如对算法感兴趣,可移步维基百科先行阅读。不过不了解此算法,不影响阅读本文。 空桶 我们...

Global site tag (gtag.js) - Google Analytics