【问题标题】:ECS Health check failures AWS - copilotECS 运行状况检查失败 AWS - copilot
【发布时间】:2022-01-19 18:43:55
【问题描述】:

每当我尝试在 aws 中重新部署负载平衡服务(通过 copilot)时,我都会不断收到运行状况检查失败(502 bad gateway)的错误消息:

(service my-app-my-env-my-service-Service-n6SienH8zSJt) (port 3000) is unhealthy in
(target-group arn:aws:elasticloadbalancing:us-east-1:[my target grouo]) due to (reason Health checks failed).     

我有一个集群 (ECS),其中包含两个服务(一个后端服务工作正常,然后一个负载平衡服务导致问题),每个服务运行一个任务 (Fargate)。负载均衡服务是一个监听 3000 端口的流星/节点应用程序。

弹性负载均衡器(应用程序)正在侦听端口 80,它应该将流量转发到上述服务的目标组,该目标组应该在端口 3000 上进行侦听。

这个负载均衡服务的目标群体有:

  1. 目标类型:IP
  2. IP 地址类型:IPv4
  3. 协议:端口 -- HTTP:3000
  4. 协议版本:HTTP1

该组的目标有自己的 IP 地址,端口为 3000。

目标类型:IP 地址,因为我使用 Fargate 而不是 EC2 来完成我的任务。所以当任务开启时,我正确地看到任务的私有 IP 注册到目标组中。

几点说明:

  1. 服务器正在正确启动。我收到的日志表明服务器正常,并且没有出现任何错误
  2. 我有一个/_health 路由,我设置并在本地工作(通过对 localhost:3000/_health 的 curl 请求获取我的 200 状态)。我非常确信 NO 路由正在工作,因为我更改了我的应用程序以呈现静态页面,而不管路由如何并且仍然存在连接问题。这让我觉得问题出在负载均衡器和服务之间

已经坚持了一周,所以如果有人知道我错过了什么,那将特别有帮助!如果有帮助,我很乐意分享有关我的集群的更多信息!在此先感谢:)

【问题讨论】:

    标签: node.js amazon-web-services meteor amazon-ecs aws-copilot


    【解决方案1】:

    副驾驶清单中的健康检查路线的映射是什么?

    默认情况下,copilot 将运行状况检查配置为以“/”为目标。

    【讨论】:

    • 您好,感谢您的评论。这是我清单的相关部分,如果有用,可以共享整个文件。我指定了具体路线/_healthhttp: path: '/' healthcheck: path: '/_health'
    【解决方案2】:

    我对此感到很傻,但我很确定我找到了解决方案。虽然我在manifest.yml 中的图像上正确配置了port: 3000,但我需要在清单的变量中添加一个名为PORT: 3000 的附加环境变量。这似乎成功了……就像我说的愚蠢的错误!

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 1970-01-01
      • 2021-12-26
      • 2019-07-17
      • 2020-04-28
      • 2018-11-02
      • 2017-08-03
      • 2019-10-29
      • 1970-01-01
      相关资源
      最近更新 更多