Nginx ngx_http_upstream_module模块详解(九)

12 篇文章 2 订阅

ngx_http_upstream_module

模块功能

用于将多个服务器定义成服务器组,而由proxy_pass, fastcgi_pass等指令进行引用

1、upstream name { ... } 
    定义后端服务器组,会引入一个新的上下文默认 
    调度算法是wrr 
    可用位置: http 
    upstream httpdsrvs{ 
        server ... 
        server ... 
        ... 
    }

2、server address [parameters]; 
    在upstream上下文中server成员,以及相关的参数; 
    可用位置:upstream 
    address的表示格式:
        unix:/PATH/TO/SOME_SOCK_FILE 
        IP[:PORT] 
        HOSTNAME[:PORT] 
    parameters: 
        weight=number     #权重,默认为1 
        max_conns         #连接后端报务器最大并发活动连接数,1.11.5后支持 
        max_fails=number  #失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用,默认为1 
        fail_timeout=time #后端服务器标记为不可用状态的连接超时时长,默认10s 
        backup            #将服务器标记为“备用”,即所有服务器均不可用时才启用 
        down              #标记为“不可用”,配合ip_hash使用,实现灰度发布

3、ip_hash  
    源地址hash调度方法
    可用位置:upstream

4、least_conn 
    最少连接调度算法,当server拥有不同的权重时其为wlc,当所有后端主机连接数相同时,则使用wrr,适用于长连接
    可用位置:upstream

5、hash key [consistent] 
    基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合 
    可用位置:upstream
        作用:将请求分类,同一类请求将发往同一个upstream server,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用 
        hash $request_uri consistent;  #根据url
        hash $remote_addr;             #根据请求的主机

6、keepalive 连接数N; 
    为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连接管理的消耗
    可用位置:upstream

7、health_check [parameters]; 
    健康状态检测机制;只能用于location上下文 
    常用参数: 
        interval=time   #检测的频率,默认为5秒 
        fails=number:  #判定服务器不可用的失败检测次数;默认为1次 
        passes=number: #判定服务器可用的失败检测次数;默认为1次 
        uri=uri:       #做健康状态检测测试的目标uri;默认为/ 
        match=NAME:    #健康状态检测的结果评估调用此处指定的match配置块
    ###注意:仅对nginx plus有效###

8、match name { ... } 
    对backend server做健康状态检测时,定义其结果判断机制;只能用于http上下文
    常用的参数: 
        status  code[  code ...]: 期望的响应状态码 
        header  HEADER[operator  value]:期望存在响应首部,也可对期望的响应首部的值基于比较操作符和值进行比较 
        body:期望响应报文的主体部分应该有的内容 
        ###注意:仅对nginxplus有效###

ngx_http_proxy_module模块 详细说明请参考官网 地址链接

链接
一致性哈希算法原理
一致性哈希算法

nginx的hash和一致性hash的区别

模板1

访问www.a.com 缓存+调度

http{
    proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20m inactive=120s max_si #缓存
ze=1g;
    upstream mysqlsrvs{
        ip_hash; #源地址hash调度方法 写了backup就不可用
        server 172.18.99.1:80 weight=2; #weight权重
        server 172.18.99.2:80;          #标记down,配合ip_hash使用,实现灰度发布
        server 172.18.99.3:80 backup;   #backup将服务器标记为“备用”,即所有服务器均不可用时才启用 
    }
}
server{
    server_name www.a.com;
    proxy_cache proxycache;
    proxy_cache_key $request_uri;
    proxy_cache_valid 200 302 301 1h;
    proxy_cache_valid any 1m;
    location / {
        proxy_pass http://mysqlsrvs;
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值