【问题标题】:AWS ALB returns 502 and request doesnt reach targetsAWS ALB 返回 502 并且请求未达到目标
【发布时间】:2019-10-24 17:56:57
【问题描述】:

我们有一个 ALB 负载平衡 2 个目标。但是我们经常遇到来自 ALB 的 502 响应,这会中断 UI 以引发错误。我们的应用程序是基于 node js 运行的 UI 并使用 socket.io。

来自 ALB 访问日志的示例日志。

https 2019-06-10T09:29:46.987095Z app/DES-G1-USE4-ext-elb/7c8fddfc050d66f6 184.51.199.55:55418 10.72.72.155:8888 0.000 8.697 -1 502 - 876 485 "GET https://designer-use4.genesyscloud.com:443/socket.io/?EIO=3&transport=polling&t=Mj0kC0w HTTP/1.1" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-east-1:361190373704:targetgroup/DES-G1-USE4-tg-desg/4cc8feabb9ee8f89 "Root=1-5cfe2302-b19c6d5059c2fc6096e048e0" "-" "session-reused" 0 2019-06-10T09:29:38.289000Z "forward" "-" "-"

这里的-1 502 - 表示请求被ELB转发到后端,但目标没有响应。并且连接是黑白 ELB 并且目标以某种方式关闭。根据https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html

在我们的应用程序日志中,没有此请求到达我们的应用程序的痕迹。

请帮助我们从 ALB 调试此问题。

【问题讨论】:

  • -1 502 - 这个显示ELB可能已经从后端收到RESET,因为它正在使用现有的连接,检查后端的keepalive是否高于ELB。
  • 我遇到了同样的问题,我的后端超时 (65s) 已经大于 ALB 空闲超时 (60s)。你的解决方案是什么?

标签: amazon-elb


【解决方案1】:

确保您的应用程序在 / 路径上使用 200-399 响应代码进行响应。您提到的行为通常是因为负载均衡器Health Check 无法验证您的应用程序是否正常运行。此外,请确保您的服务器能够响应该路径的 HTTP(尚不支持 HTTP/2)。

【讨论】:

  • 是的,应用程序正在响应并且运行良好。但是我们从 ELB 随机获得 502。目标也很健康。
  • 我很好奇这种行为的随机性。你是如何运行你的应用程序的?您在打开新连接时或在连接打开一段时间后遇到此行为?正如詹姆斯所说,一段时间后后端可能会切断您的连接。
【解决方案2】:

可能的原因:

  • 防火墙:确保您的应用服务器和 ELB 的安全组能够在指定端口上相互连接。

  • 健康检查:负载平衡器将踢出崩溃几次的应用程序服务器。确保应用程序服务器已连接并在仪表板上显示为正常。

【讨论】:

  • 安全组配置正确,因为我们能够很好地访问应用程序。
猜你喜欢
  • 2019-09-15
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2019-12-10
  • 2021-08-25
相关资源
最近更新 更多