【问题标题】:EC2 instance attached with ALB showing unhealthy status on port 3000附加了 ALB 的 EC2 实例在端口 3000 上显示不正常状态
【发布时间】:2020-08-07 08:01:46
【问题描述】:

我已将 EC2 实例与应用程序负载均衡器连接起来。我的 EC2 实例在 PORT 80 上运行 react js 应用程序,而 NODE JS API 在 PORT 3000 上运行。我想使用域名而不是 IP 地址

运行 API

以下是我注册的目标-

ALB registered targets

更新 - 以下是我的应用程序和实例详细信息 -

  1. EC2 - Ubuntu 18.04 + Apache 网络服务器
  2. 前端 - 在端口 80 (https://www dot mydomain dot com) 上工作正常
  3. API - 用 NODE JS 编写,在 PORT 3000 上运行(所以基本上我正在尝试运行 https://www dot mydomain dot com:3000)

API 在 IPv4 http://x.x.x.50:3000 上运行良好

谁能帮我找出这个错误?谢谢!

【问题讨论】:

  • 如果你的服务在不同的端口上运行,你需要不同的目标组。
  • 感谢 Marcin 的回复,我应该在不同的目标群体上设置什么健康检查配置?
  • 适合每项服务。对于一次不同的端口。其他设置取决于您的应用程序详细信息,问题中未提供。
  • 我已经提供了更多细节,请检查它是否给你任何提示?

标签: amazon-web-services amazon-ec2 aws-application-load-balancer


【解决方案1】:

根据您的问题,我了解到您的 nodejs 应用程序在 x.x.x.50:3000 上运行。因此,您可以通过点击http://x.x.x.50:3000 访问您的应用程序

但是,

我假设您的请求在您点击喜欢时会给出响应,

example : http://x.x.x.50:3000/data/ or http://x.x.x.50:3000/employee/1

这里的实际问题是,当 ELB 命中 http://x.x.x.50:3000 时,它会返回 404 状态,因为您没有为 / 服务的端点(基于我对您的后端应用程序的假设)

如果您已经有一个 / 端点,请检查它返回的状态码是什么以及它是否与 ELB 目标组中指定的相匹配

如果您在 AWS 中检查您的目标组,您可以看到您的预期状态代码是 200(默认情况下),如果 ELB 获得除 200 之外的任何其他状态代码,它将认为该实例不健康。

请注意,您可以将此状态代码更改为您的健康检查端点返回的任何代码。同样适用于健康检查 URL。

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2018-11-10
    • 2021-08-05
    • 2020-08-05
    相关资源
    最近更新 更多