【问题标题】:Application Load Balancer with ECS Fargate in private subnet私有子网中带有 ECS Fargate 的应用程序负载均衡器
【发布时间】:2021-11-20 22:22:46
【问题描述】:

我正在尝试使用我的 ECS Fargate 集群配置负载平衡。目前,我有一个应用程序负载平衡器设置来执行从端口 80 到端口 9003 的重定向。端口 9003 是容器用于其服务的端口。如果可能的话,我希望负载均衡器通过 HTTPS 重定向到端口 9003。目前我有一个端口 9003 的侦听器,它转发到基于 IP 的目标组。以下是目标群体的详细信息:

容器旨在在启动时运行脚本。在本地运行脚本时,需要几分钟才能完成。我不确定是否需要增加目标组中的超时和间隔设置。我还使用 ECS 服务设置了一个安全组。目前,它允许来自应用程序负载均衡器的任何流量到达在服务上运行的容器。我还为容器端口 (9003) 指定了一个入口规则,以便能够与任何与 VPC 进行通信。

我面临的问题涉及容器处于循环中,它们在其中提供,然后几分钟后它们耗尽、停止,并且 ECS Fargate 在目标组中启动了一个新 IP。目前唯一的细节如下:

Stopped reason Essential container in task exited

在容器部分的详细信息下:

Exit Code   0
Entry point ["bash"]
Command ["/tmp/init.sh"]

任何关于如何克服这个问题的建议都会有所帮助。

【问题讨论】:

  • "我不确定是否需要增加目标组中的超时和间隔设置。"在您的屏幕截图中有一个健康检查的“编辑”按钮。
  • 容器日志中是否没有任何内容说明容器退出的原因?我将首先向您的容器应用程序添加更多日志记录以确定它退出的原因。

标签: docker amazon-ecs aws-fargate aws-application-load-balancer


【解决方案1】:

该错误可能表示您的应用程序中存在内部类型错误。 docker 监控的进程(你的 init 脚本)正在退出。如果它与健康检查有关,它会特别说明“任务失败 ELB 健康检查”。您需要检查您的应用程序日志。

如果您没有看到任何内容,请尝试(使用您的等价物):

aws ecs list-tasks \
     --cluster cluster_name \
     --desired-status STOPPED \
     --region us-west-2

aws ecs describe-tasks \
     --cluster cluster_name \
     --tasks arn:aws:ecs:us-west-2:account_id:task/cluster_name/task_ID \
     --region us-west-2

您可能会在第二个命令的响应中获得更多详细信息

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2021-02-01
    • 2019-12-17
    • 2020-02-20
    • 2019-08-27
    • 2019-06-06
    • 2021-10-12
    • 2017-01-04
    • 2019-07-19
    相关资源
    最近更新 更多