Nginx 故障转移,上游负载均衡器不工作,服务器 1 停机时出现 504

Nginx 故障转移,上游负载均衡器不工作,服务器 1 停机时出现 504

我有一个 nginx docker 容器,balancer它充当 3 个 nginx docker 容器的平衡器server_1,,server_2server_3

负载平衡工作正常,它以根据指定方法的方式访问所有服务器。但是,当我使用 停止第一台服务器时docker stop server_1,我得到了504,即使其他服务器仍在运行。

我的平衡器默认文件如下所示:

# don't redirect proxy
proxy_redirect  off;

upstream app {
    least_conn;
    server webserver_1;
    server webserver_2;
    server webserver_3;
}

server {
    listen 80;
    location / {
        proxy_pass http://app;
        proxy_next_upstream error timeout invalid_header http_500 http_504;
        # proxy_set_header Host localhost;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

我尝试fail_timeout=10s max_fails=1在指令中添加三台服务器upstream,但没有成功。我也尝试添加指令proxy_next_upstream_tries 2;,但这也没有帮助。

如果您需要更多信息,请告诉我。

答案1

您使用的是哪种类型的 docker 网络?我想知道请求超时的原因。有防火墙规则吗?

对于负载平衡来说,通常“依赖”超时是不好的。当主机(容器)不可用(例如“没有到主机的路由”)或连接重置(容器可用,但服务未运行)时,情况会更好。

答案2

我的经验是,它只是按照负载平衡方法使用所有 3 台服务器,但不会将服务器标记为关闭。

相关内容