nginx负载均衡模式

轮询 (Round Robin)
用法:这是Nginx默认的负载均衡策略。每个请求会按顺序分配给upstream中的后端服务器,即按照配置的服务器列表顺序依次分配。


   upstream backend {
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
   location / {
       proxy_pass http://backend;
   }

加权轮询 (Weighted Round Robin)
用法:可以根据服务器的不同处理能力,通过权重设置分配请求的比例。

   upstream backend {
       server backend1.example.com weight=1;
       server backend2.example.com weight=2;
       server backend3.example.com;
   }
   

IP哈希 (ip_hash)
用法:根据客户端IP地址的哈希值进行负载均衡,确保同一客户端的请求总是被转发到同一台后端服务器,这有助于维持用户会话的连续性。

   upstream backend {
       ip_hash;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
   

URL哈希 (url_hash 或 hash)
用法:基于请求的URL进行哈希计算,将相同URL的请求定向到同一台服务器上,适用于缓存场景或保持特定URL访问的一致性。

   upstream backend {
       hash $request_uri;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
   

** fair(第三方模块)**
用法:基于后端服务器的响应时间动态分配请求,优先分配给之前响应时间最短的服务器,以实现更公平的负载均衡。

   # 需要安装第三方nginx_upstream_fair模块
   upstream backend {
       fair;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
   

最少连接数(Least Connections)
用法:自动将请求分配给当前连接数最少的服务器,避免某台服务器过载

   # 标准版Nginx不支持直接配置least_conn,但可以通过第三方模块实现
   # 若使用官方支持的版本,则可以直接使用:
   upstream backend {
       least_conn;
       server backend1.example.com;
       server backend2.example.com;
       server backend3.example.com;
   }
   

最少连接数 (Least Connections): 这种模式下,Nginx会将新的请求分配给当前连接数最少的服务器,这样可以保证那些已经处理较少请求的服务器获得更多的新连接,从而在一定程度上平衡各个服务器的负载。若某个节点出现故障导致连接堆积,理论上它会被分配到的请求减少。
健康检查 (Health Checks): Nginx本身并未内置完整的健康检查功能,但可以通过第三方模块如 ngx_http_upstream_check_module 或结合使用HTTP 500错误返回或其他机制实现健康检查。通过配置健康检查,Nginx可以定期向后端服务器发送请求以检测其是否可用。如果服务器无响应或者响应不符合预期,Nginx可以将其标记为不可用,并停止向该服务器发送新的请求,直到其恢复可用状态。

upstream backend {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com max_fails=3 fail_timeout=30s;
    server backend3.example.com max_fails=3 fail_timeout=30s;

    # 如果结合第三方健康检查模块,启用检查
    # check interval=3000 rise=2 fall=5;
}

相关推荐

  1. nginx负载均衡模式

    2024-03-27 13:42:03       41 阅读
  2. nginx upstream负载均衡模块

    2024-03-27 13:42:03       46 阅读
  3. Nginx实现(负载均衡

    2024-03-27 13:42:03       61 阅读
  4. nginx负载均衡

    2024-03-27 13:42:03       51 阅读
  5. Nginx负载均衡详解

    2024-03-27 13:42:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 13:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 13:42:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 13:42:03       82 阅读
  4. Python语言-面向对象

    2024-03-27 13:42:03       91 阅读

热门阅读

  1. 能否把 Redis 当做消息队列来用呢?

    2024-03-27 13:42:03       44 阅读
  2. Python的异常处理

    2024-03-27 13:42:03       40 阅读
  3. Jenkins Docker 部署指南

    2024-03-27 13:42:03       42 阅读
  4. SpringBoot集成FreeMarker时访问不到.ftl文件

    2024-03-27 13:42:03       38 阅读
  5. 掌握Mac常用命令,提升工作效率

    2024-03-27 13:42:03       42 阅读
  6. Spring设计模式-实战篇之模板方法模式

    2024-03-27 13:42:03       44 阅读
  7. P8687 [蓝桥杯 2019 省 A] 糖果

    2024-03-27 13:42:03       40 阅读
  8. AI:143-基于深度学习的实时视频人物识别与跟踪

    2024-03-27 13:42:03       38 阅读
  9. Python3爬取2023省市区

    2024-03-27 13:42:03       40 阅读
  10. 堆排序-C语言

    2024-03-27 13:42:03       34 阅读