nginx负责均衡upstream配置使用



简介

  • 负载均衡 (Load Balance)
    • 分布式系统中一个非常重要的概念,当访问的服务具有多个实例时,需要根据某种“均衡”的策略决定请求发往哪个节点,这就是所谓的负载均衡。
    • 原理是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,从而提高了数据的吞吐量。

  • 负载均衡的种类
    • 通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但比较昂贵的。
    • 通过软件来进行解决,常见的软件有LVS、Nginx等,它们是基于Linux系统并且开源的负载均衡策略。
    • 目前性能和成本来看,Nginx是目前多数公司选择使用的。

Nginx常见的负载均衡策略

  • 节点轮询(默认)
    • 简介:每个请求按顺序分配到不同的后端服务器
    • 场景:会造成可靠性低和负载分配不均衡,适合静态文件服务器
    upstream lbs {
      server 192.168.0.100:8080;
      server 192.168.0.101:8080;
    }
    
    location /api/ {
      proxy_pass http://lbs;
      proxy_redirect default;
    }
    

  • weight 权重
    • 简介:weight和访问比率成正比,数字越大,分配得到的流量越高
    • 场景:服务器性能差异大的情况使用
    upstream lbs {
      server 192.168.0.100:8080 weight=5;
      server 192.168.0.100:8081 weight=10;
    }
    

  • ip_hash(固定分发)
    • 简介:根据请求按访问ip的hash结果分配,这样每个用户就可以固定访问一个后端服务器
    • 场景:服务器业务分区、业务缓存、Session需要单点的情况
    upstream lbs {
      ip_hash;
      server 192.168.0.100:8080;
      server 192.168.0.101:8080;
    }
    

  • upstream节点状态
    • down 表示当前server节点暂时不参与负载均衡
    upstream lbs {
      server 192.168.0.100:8080 down;
      server 192.168.0.101:8080;
    }
    

  • backup 备用节点
    • backup 备用节点,当其它所有非backup节点down的时候,会请求backup机器,这台机器压力会最轻,配置相对的也会降低
    upstream lbs {
      server 192.168.0.100:8080 backup;
      server 192.168.0.101:8080;
    }
    

Nginx后端节点可用性探测和配置实操

  • 场景:当某个节点出现宕机,请求不应该继续分发过去
    • max_fails:允许请求失败的次数,默认为1,当超过最大次数时就不会继续请求该节点。
    • fail_timeout:max_fails次请求失败后,暂停访问时间。默认为 10 秒
    • 参数解释
      • max_fails=N 设定Nginx与后端节点通信的尝试次数。
      • 在fail_timeout参数定义的时间内,如果失败次数达到此值,Nginx使该节点暂时不可用。
      • 在下一个fail_timeout时间段到来前,服务器不会再次尝试。
      • 失败的尝试次数默认是1,如果设置为0,Nginx就会认为该节点一直可用
    • 配置Nginx失败
      • 可以通过指令proxy_next_upstream来配置Nginx失败。
      • 注意默认配置时,http_404状态不被认为是失败的尝试。
    upstream lbs {
      server 192.168.0.100:8080 max_fails=2 fail_timeout=60s ;
      server 192.168.0.101:8080 max_fails=2 fail_timeout=60s;
    }
    
    location /api/ {
      proxy_pass http://lbs;
      proxy_next_upstream error timeout http_500 http_503 http_404;
    }
    

posted @   明知山有小脑斧  阅读(1147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
历史上的今天:
2020-06-27 pycharm 关闭单词拼写检查(Typo: In word 'cacheable' )
2020-06-27 Python : argument name should be lowercase 警告处理解决方法
2020-06-27 pycharm 变量名 (Shadows built-in name 'id' )问题
点击右上角即可分享
微信分享提示