使用 Nginx 进行负载平衡和 HA

使用 Nginx 进行负载平衡和 HA

前言:我正在尝试实施蓝绿部署。

内容如下nginx.conf

http {

    upstream backend {
        keepalive_timeout               65;

        server django_blue:8000 fail_timeout=5s max_fails=1;
        server django_green:8000 fail_timeout=5s max_fails=1;
    }

    server {
        listen 80 default_server;

        location / {
            proxy_pass              http://backend;
            proxy_redirect          off;
            proxy_set_header        Host $http_host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Host $host;
            proxy_set_header        X-Forwarded-Proto https;
            proxy_read_timeout      2s;
            client_max_body_size    20m;
        }
    }
}
  • 如果django_bluedjango_green都启动并运行,则一切运行良好:nginx 在 Roundrobin 中正确执行了 LB。

  • 如果我关闭其中一个 - 比如说,django_green然后继续在 Chrome 上进行网络请求,如果循环给出关闭的服务器,django_green它会等待 1 分钟(正好 60 秒),然后使用 回复浏览器504 Gateway Error

我有两个问题:

  1. 为什么它要等待 1 分钟而没有fail_timeout值?
  2. 为什么它不简单地用指令中的另一个可用服务器进行回复upstream

答案1

我刚刚发现,这是一个proxy_connect_timeout问题。

所以我刚刚补充道: proxy_connect_timeout 2s;

阻止location / {}

相关内容