AWS/EKS:从ALB获取频繁的504网关超时错误 [英] AWS/EKS: Getting frequent 504 gateway timeout errors from ALB

查看:0
本文介绍了AWS/EKS:从ALB获取频繁的504网关超时错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用EKS部署一个服务,入口运行在alb-ingress-control之上。

总而言之,我有大约10个单个Pod的副本,只有一个NodePort类型的服务向它们转发流量。副本运行在10个节点上,由eksctl建立,分布在3个可用区中。

我看到的问题非常奇怪-在集群内部,所有日志都显示请求在不到1秒的时间内得到处理,大部分时间在20-50毫秒左右。我之所以知道这一点,是因为我使用linkerd来显示请求延迟的百分位数,以及应用程序日志本身。然而,ALB日志/监控讲述了一个非常不同的故事。我发现请求延迟相对较高(通常接近20s或更多),并且ELB经常返回504个错误(有时每5分钟返回2-3个错误)。

尝试读取ALB的访问日志时,我注意到504行如下所示:

https 2019-12-10T14:56:54.514487Z app/1d061b91-XXXXX-3e15/19297d73543adb87 52.207.101.56:41266 192.168.32.189:30246 0.000 -1 -1 504 - 747 308 "GET XXXXXXXX" "-" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:eu-west-1:750977848747:targetgroup/1d061b91-358e2837024de757a3d/e59bbbdb58407de3 "Root=1-5defb1fa-cbcdd248dd043b5bf1221ad8" "XXXX" "XXXX" 1 2019-12-10T14:55:54.514000Z "forward" "-" "-" "192.168.32.189:30246" "-"

其中,请求处理时间为0,目标处理时间为-1,表示请求从未到达后端,立即返回响应。

我尝试使用后端HTTP保持连接超时(当前为75s)和ALB空闲时间(当前为60s),但此行为似乎没有太大变化。

如果有人能告诉我如何继续调查这件事,或者原因是什么,我将非常感激。

推荐答案

我们遇到了类似类型的EKS和ALB组合问题。如果目标响应代码为-1,则可能是目标端的请求等待队列已满。因此,ALB将立即放弃该请求。

尝试跳过ALB做ab基准,直接向服务或内网IP地址发送请求。这样做将有助于您找出问题所在。

对于我们来说,如果我们通过ALB发送流量,每10个请求中就有1个失败。如果我们直接将请求发送到服务,则不会看到失败。

AWS建议在ALB上使用NLB。NLB提供了更多的优势,适合Kubernetes。有一篇博客解释了这一点Using a Network Load Balancer with the NGINX Ingress Controller on Amazon EKS

我们已更改为NLB,现在没有收到5XX错误。

这篇关于AWS/EKS:从ALB获取频繁的504网关超时错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆