0

我有带有 ALB 和目标组的 ECS 集群(EC2 类型,仅 1 个服务)。所需计数在 ECS 服务级别上设置为 2,任务没有 ASG。从技术上讲,一切正常。我可以毫无问题地与我的 API 通信,但有一个小问题困扰着我。我的 ECS 任务的容器运行状况检查不起作用。我将容器端口 3000 映射到主机端口 0,但由于它在容器内部,所以没关系?

我很难理解为什么,这是我使用的 cmd(我将粘贴我的整个运行状况检查块,因为我使用 terraform 来部署我的基础设施)

healthCheck = {
    retries = 10
    command = ["CMD-SHELL", "curl -f http://localhost:3000/health || exit 1"]
    timeout : 5
    interval : 10
    startPeriod : 45
}

值得一提的是,我使用随机端口的两个任务在目标组运行状况检查中都是可见的,我使用的是相同的端点。这是它的样子:

resource "aws_alb_target_group" "my_api_backend_tg" {
  name                 = "my_tg_name"
  port                 = 3000
  protocol             = "HTTP"
  vpc_id               = "vpc_id"
  deregistration_delay = 25

  health_check {
    path                = "/health"
    healthy_threshold   = 2
    unhealthy_threshold = 5
    timeout             = 5
    interval            = 15
    matcher             = "200"
  }

  lifecycle {
    create_before_destroy = true
    ignore_changes        = [name]
  }
}

我对 AWS 比较陌生,所以它可能是微不足道的,但我什至不确定如何调试它,不胜感激。

4

1 回答 1

0

毕竟这是一件微不足道的事情,甚至与 AWS 无关,而是与 docker 本身有关。图像太薄了,没有安装 curl。安装它解决了我的问题。

于 2022-02-05T23:42:04.093 回答