ECS部署中容器健康检查失败,请求技术排查支持
ECS容器健康检查失败问题排查求助
我在ECS上部署NextJS应用时碰到了容器健康检查失败的问题。应用自带/health路由,返回HTTP 200响应和JSON数据,这个路由在本地测试以及ALB负载均衡器的健康检查中都能正常工作,部署后的应用也可以通过公网URL正常访问,但ECS的容器健康检查始终无法通过,所有尝试过的命令都会在约2分钟后失败。
我尝试过的健康检查命令包括:
CMD-SHELL,curl -f http://localhost/health || exit 1CMD-SHELL,curl -f http://localhost:3000/health || exit 1CMD-SHELL,curl -f http://127.0.0.1/health || exit 1CMD-SHELL,curl -f http://127.0.0.1:3000/health || exit 1CMD-SHELL, echo "OK"echo "OK"CMD, echo "OK"
我在应用日志里看不到任何健康检查的请求记录(用echo命令时自然不会有记录,但调用API端点时也没有)。已经确认最终的容器镜像里存在echo和curl命令。
我的任务定义如下:
{ "taskDefinitionArn": "[REDACTED]", "containerDefinitions": [ { "name": "log_router", "image": "grafana/fluent-bit-plugin-loki", "cpu": 0, "memoryReservation": 50, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-create-group": "true", "awslogs-region": "us-east-2", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit", "options": { "enable-ecs-log-metadata": "true" } } }, { "name": "[REDACTED]", "image": "[REDACTED]:latest", "cpu": 1024, "memory": 2048, "portMappings": [ { "name": "[REDACTED]-3000-tcp", "containerPort": 3000, "hostPort": 3000, "protocol": "tcp" } ], "essential": true, "environment": [ { "name": "ENVIRONMENT", "value": "development" } ], "mountPoints": [], "volumesFrom": [], "secrets": [], "ulimits": [ { "name": "nofile", "softLimit": 65536, "hardLimit": 65536 } ], "logConfiguration": { "logDriver": "awsfirelens", "options": { "RemoveKeys": "container_id,ecs_task_arn", "LineFormat": "key_value", "Labels": "{app=\"[REDACTED]\"}", "LabelKeys": "container_name,ecs_task_definition,source,ecs_cluster", "Url": "[REDACTED]", "Name": "grafana-loki" }, "secretOptions": [] }, "healthCheck": { "command": [ "CMD", "echo \"ok\"" ], "interval": 30, "timeout": 5, "retries": 3, "startPeriod": 30 }, "systemControls": [] } ], "family": "[REDACTED]-development", "taskRoleArn": "[REDACTED]", "executionRoleArn": "[REDACTED]", "networkMode": "awsvpc", "revision": 22, "volumes": [], "status": "ACTIVE", "requiresAttributes": [ { "name": "ecs.capability.execution-role-awslogs" }, { "name": "com.amazonaws.ecs.capability.ecr-auth" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21" }, { "name": "com.amazonaws.ecs.capability.logging-driver.awsfirelens" }, { "name": "com.amazonaws.ecs.capability.task-iam-role" }, { "name": "ecs.capability.container-health-check" }, { "name": "ecs.capability.execution-role-ecr-pull" }, { "name": "ecs.capability.secrets.ssm.environment-variables" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" }, { "name": "ecs.capability.task-eni" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.29" }, { "name": "com.amazonaws.ecs.capability.logging-driver.awslogs" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19" }, { "name": "ecs.capability.firelens.fluentbit" } ], "placementConstraints": [], "compatibilities": [ "EC2", "FARGATE" ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "2048", "registeredAt": "2024-07-12T15:54:18.852Z", "registeredBy": "[REDACTED]", "tags": [ { "key": "Environment", "value": "development" }, { "key": "CostCenter", "value": "engineering" }, { "key": "Application", "value": "[REDACTED]" }, { "key": "Name", "value": "[REDACTED]" } ] }
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

