我有带有 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 比较陌生,所以它可能是微不足道的,但我什至不确定如何调试它,不胜感激。