1

我试图在集群上设置运行容器映像的 ECS 服务,但无法使设置正常工作。

我基本上遵循了https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html上的指南,除了我试图在 EC2 实例上托管容器。

我想知道这个问题是否与网络模式有关(使用“awsvpc”)。

期待

它应该在使用 eh ALB 链接访问时在 index.html 上显示一些内容

观察

当我尝试使用负载均衡器链接访问时,它给出了 HTTP 503,并且运行状况检查也显示不健康

ALB_Link_HTTP_503

似乎 ECS 一直在“重新创建”容器?(原谅我对ECS还不熟悉)

Containers_keep_re-creating

试图直接访问容器实例但也无法访问

Container_instance_link

Conatiner_instance_could_not_reach

我查看了容器实例上的 ECS 代理日志(/var/logs/ecs-agent.log),应该已成功拉取映像

Image_pulled_successfully

任务应该已经开始了

在此处输入图像描述

ECS服务事件

似乎它一直在注册和注销目标

ECS_service_events

安全组已设置为接受 HTTP 流量

设置

容器上的 Tomcat 服务器在端口 80 上启动

  • ALB

在此处输入图像描述

  • 听众

在此处输入图像描述

  • 目标组

在此处输入图像描述

ECS 任务定义创建

{
"family": "TestTaskDefinition",
"networkMode": "awsvpc",
"containerDefinitions": [
    {
        "name": "TestContainer",
        "image": "<Image URI>",
        "portMappings": [
            {
                "containerPort": 80,
                "hostPort": 80,
                "protocol": "tcp"
            }
        ],
        "essential": true
    }
],
"requiresCompatibilities": [
    "EC2"
],
"cpu": "256",
"memory": "512",
"executionRoleArn": "<ECS execution role ARN>"
}

ECS服务创建

{
"cluster": "TestCluster",
"serviceName": "TestService",
"taskDefinition": "TestTaskDefinition",
"loadBalancers": [
    {
        "targetGroupArn": "<target group ARN>",
        "containerName": "TestContainer",
        "containerPort": 80
    }
],
"launchType": "EC2",
"schedulingStrategy": "REPLICA",
"deploymentController": {
    "type": "CODE_DEPLOY"
},
"networkConfiguration": {
   "awsvpcConfiguration": {
      "assignPublicIp": "DISABLED",
      "securityGroups": [ "sg-0f9b629686ca3bd08" ],
      "subnets": [ "subnet-05f47b367df4f50d4", "subnet-0fd76fc8e47ea3be7" ]
   }
},
"desiredCount": 1
}
4

1 回答 1

1

根据评论。

为了调查这个问题,建议在没有 ALB 的情况下测试 ECS 服务。经测试发现,由于应用启动时间过长,ALB将ECS服务视为不健康。

该问题已通过将 ALB 运行状况检查宽限期增加到(例如 300 秒)来解决。

不确定 EC2 启动类型是否必须使用“桥”

您也可以awsvpc在 EC2 实例上使用,但bridge在这种情况下更易于使用。

于 2020-09-24T07:03:38.470 回答