【问题标题】:Unable to run Nodejs app on AWS Beanstalk无法在 AWS Beanstalk 上运行 Nodejs 应用程序
【发布时间】:2021-08-03 02:21:59
【问题描述】:

我已经在 AWS Beanstalk 上部署了 NodeJS 应用程序。我正在使用 AWS 代码管道从 Github 进行部署。部署后,当我访问 URL 时,它在网页上显示以下错误:

502 错误网关 nginx/1.18.0

以下是我的基本节点代码:

const express = require('express');
const app = express();

const port = 3000 || process.env.PORT;

   app.get('/',(req,res) => {

   res.send("Hello there");
});

app.listen(port,(req,res) => {

 console.log(`App is running at ${port}`);
});

在下面的屏幕中,我的环境运行状况也很严重。我该如何解决这个问题?

【问题讨论】:

  • Cloudwatch 日志中是否显示任何特定错误?
  • 当我点击原因按钮时显示这些日志 1) 100.0 % 的请求因 HTTP 5xx 而失败。 2) ELB 进程在所有实例上都不是健康的。 3) ELB 运行状况失败或不适用于所有实例。
  • 我本身不是节点专家,但您是否为负载均衡器设置了运行状况检查端点?
  • 如何设置它,因为我是 AWS 新手,你能帮我解决这个问题吗?
  • 当然。我在下面发布了一个答案。几周后,我将以解决方案架构师的身份加入 AWS。因此,如果以下内容没有帮助,请提出任何其他问题。在推特上联系我:@JackMarchetti

标签: node.js amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

您的负载均衡器需要应用程序的一部分来“ping”,这有时被称为心跳或只是“健康检查”。

这通常只是返回一个 HTTP 200 响应,让负载均衡器知道主机是健康的并且可以接收流量。

我不是 node.js 人,但如果您可以创建一些端点,例如 /health-check 并返回一个“ok”或 HTTP 200 就可以满足需求。

你也可以让你的健康检查做一些事情,比如检查数据库连接是否也在运行。这取决于您的具体用例。

在 beanstalk 中,您可以将 /health-check 指定为负载均衡器要检查的 URL 端点。

也请查看此链接: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.healthstatus.html

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2019-06-11
    • 2017-04-09
    • 2017-04-19
    • 2017-03-09
    • 2017-01-14
    • 1970-01-01
    • 2020-05-08
    • 2017-05-18
    相关资源
    最近更新 更多