Nginx 入口 504 超时 - 带有 ELB 的 EKS 连接到 nginx 入口

Siv*_* Vg 6 nginx ingress

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

我们认为我们将问题调试到了我们的 nginx 入口。根据 Stackoverflow 的一些建议,我们使用了 Connection 标头。

  1. 我们将连接设置为“关闭”这没有效果
  2. 我们再次设置 Connection "keep-alive" 没有效果

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

我们想了解什么是影响proxy_read_timeout以及为什么我们会得到上述行为?还有一种方法可以在我们的 nginx 入口上将 Connection 设置为“”(我们无法通过nginx.ingress.kubernetes.io/connection-proxy-header: ""

提前致谢!

小智 3

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

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

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

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