首页 > 解决方案 > NLB 连接到 Nginx 入口的 EKS 上的 Nginx 入口 504 网关超时

问题描述

我们在 AWS 中使用 NLB,通过 nginx 入口控制器连接到我们的 EKS 集群。我们的一些请求得到一个随机的 504 网关超时。

我们认为我们已将问题调试到我们的 nginx 入口。根据 Stackoverflow 的一些建议,我们使用了 Connection 标头。1)我们设置连接“关闭”这没有效果 2)我们再次设置连接“保持活动”没有效果

我们还注意到 proxy_read_timeout 的另一种行为,当它是 60 秒时,我们来自浏览器的请求将在 60.xx 秒时完成。当我们将它减少到 30 时,它变成了 30.xx,20 变成了 20.xx。我们去了 1 但仍然得到随机的 504 网关超时并且不明白为什么 proxy_read_timeout 在我们的环境中有这种行为。

我们想了解 proxy_read_timeout 的影响是什么,为什么我们会出现上述行为?还有一种方法可以在我们的 nginx 入口上设置“连接”(我们无法通过 nginx.ingress.kubernetes.io/connection-proxy-header:“”来做到这一点)

提前致谢!

标签: nginxnginx-ingress

解决方案


我们认为我们的问题与此有关:

https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html#loopback-timeout

我们将内部 nlb 与我们的 nginx 入口控制器一起使用,目标由实例 ID 注册。我们发现 504 超时和 X 秒等待仅发生在与我们的入口控制器副本之一共享节点的应用程序上。我们使用了节点选择器、标签、污点和容忍度的组合来强制入口控制器到它们自己的节点上,它似乎已经消除了超时。

我们还将 externalTrafficPolicy 设置更改为 Local。


推荐阅读