• nginx upstream和轮询策略


    • upstream

    nginx upstream语法配置

    upstream 后面跟服务名

    其中包含了,域名,端口 以及权重,可以看到他既支持http协议也支持socket协议的类型,backup意味着该域名是备用的地址

    后端服务器调度参数

    backup不参与服务,当其他节点无法服务了,他就参与服务

    max_fails 代理服务器向后端请求,一旦发现请求状态失败,会去再度请求。超过max_fails规定的次数,随即宣告失败。

    接下来就“休息一会儿”,通常为10s 可以通过fail_timeout设置更长的时间

    max_conns 由于nginx向upstram(服务器池)采用轮询的方式,分发请求,有的时候我们会遇到连接池中的服务器硬件性能高低不一,有的是4核,有的是24核,配置低的服务器可能根本接收不了分摊给他的请求数目。这个时候就用到了max_conns配置

    上图配置解读:8001 不提供服务;8002备用服务器;8003失败检查只执行1次,超时时间10s,结果只有8003对应的server3可以访问

    在过滤规则中停掉8003

    这时作为backup的server2可以返回。

    • nginx的轮询机制(基于请求的方式)

    nginx的轮询默认采用逐一轮询的方式,例如测试用例中从8001轮询到8003

    加权轮询的调度算法:如果来7个请求,5个将会落到8002上面

    重新加载配置

    然而这一方法带来的问题是:如果很多操作或访问是基于cookie或者session的,轮询会打到不同的服务器上去,session和cookie也就无从保持,导致了掉线

    • ip_hash

    缓存带来的问题,假如server1 server2各缓存了一部分信息,轮询可能每次跳到不同的服务器,导致每次加载的缓存内容都不一致。

    根据客户访问ip的哈希值绑定在一个后端服务器上,同一ip固定访问同一服务器,缺陷:由于是代理,无法获取真正的$remote_addr,于是改进版本的nginx有了

    • url_hash(1.7.2以后版本推出)

    关键命令: hash $request_uri 变量指代的就是

    测试结果,无论如何都会固定展示绑定的那台服务器的内容

    如果针对url中的某一个值进行hash也是可以

  • 相关阅读:
    AngularJS XMLHttpRequest
    AngularJS服务
    angularJS过滤器
    AngularJ控制器
    angular Scope(作用域)
    angular Model 指令
    angular指令
    微信小程序调用微信支付
    微信小程序一直保持登陆状态
    微信小程序ajax请求数据及一些方法
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/9867941.html
Copyright © 2020-2023  润新知