nginx - 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:“”来做到这一点)
提前致谢!
解决方案
我们认为我们的问题与此有关:
我们将内部 nlb 与我们的 nginx 入口控制器一起使用,目标由实例 ID 注册。我们发现 504 超时和 X 秒等待仅发生在与我们的入口控制器副本之一共享节点的应用程序上。我们使用了节点选择器、标签、污点和容忍度的组合来强制入口控制器到它们自己的节点上,它似乎已经消除了超时。
我们还将 externalTrafficPolicy 设置更改为 Local。
推荐阅读
- android - Retrofit 为在后台运行的调用返回 HTTP 401
- jupyter-notebook - 打开多个具有不同扩展配置的 jupyter notebook
- sql-server - SQL Server 临时表与不同会话中的键
- javascript - Javascript - Ajax onload 回调失败
- keras-layer - 定义自定义成本函数
- sql - 使用游标将数据两次插入到同一个表中
- python - 当某些元素可见而其他元素在python中不包含硒时如何选择所有元素
- ios - 自动布局约束到 UITextView 以围绕 UIImageView 包装文本
- javascript - vuejs 中缺少 webpack 配置
- vb.net - VB.NET LINQ to DataSet(SQL 'LEFT OUTER JOIN' 替代方案)