在 AWS ECS 中设置服务时出现问题
Problem with setting a service in AWS ECS
我试图在集群上设置 ECS 服务 运行 容器映像,但无法使设置正常工作。
我基本上遵循了 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html 上的指南,除了我试图在 EC2 实例上托管容器。
我想知道问题是否与网络模式有关(使用“awsvpc”)。
预期
它应该在使用 ALB link
访问时在 index.html 上显示一些内容
观察
当我尝试使用负载平衡器 link 访问时,它给出了 HTTP 503,health-check 也显示不健康
似乎 ECS 保留了“re-creating”容器? (原谅我对ECS还不是很熟悉)
试图直接访问容器实例但也无法访问
我查看了容器实例上的ECS代理日志(/var/logs/ecs-agent.log),镜像应该已经拉取成功了
任务应该已经开始了
ECS 服务事件
它似乎一直在注册和注销目标
安全组已设置为接受 HTTP 流量
设置
Tomcat 容器上的服务器在端口 80 上启动
- 阿尔比
- 听众
- 目标群体
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
}
根据评论。
为了调查这个问题,建议在没有 ALB 的情况下测试 ECS 服务。根据测试发现,由于应用程序启动时间长。
,ALB将ECS服务视为不健康
通过将 ALB health-check 宽限期 增加到(例如 300 秒)解决了该问题。
not sure if EC2 launch type must use "bridge"
您也可以在 EC2 实例上使用 awsvpc
,但在这种情况下 bridge
更容易使用。
我试图在集群上设置 ECS 服务 运行 容器映像,但无法使设置正常工作。
我基本上遵循了 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html 上的指南,除了我试图在 EC2 实例上托管容器。
我想知道问题是否与网络模式有关(使用“awsvpc”)。
预期
它应该在使用 ALB link
访问时在 index.html 上显示一些内容观察
当我尝试使用负载平衡器 link 访问时,它给出了 HTTP 503,health-check 也显示不健康
似乎 ECS 保留了“re-creating”容器? (原谅我对ECS还不是很熟悉)
试图直接访问容器实例但也无法访问
我查看了容器实例上的ECS代理日志(/var/logs/ecs-agent.log),镜像应该已经拉取成功了
任务应该已经开始了
ECS 服务事件
它似乎一直在注册和注销目标
安全组已设置为接受 HTTP 流量
设置
Tomcat 容器上的服务器在端口 80 上启动
- 阿尔比
- 听众
- 目标群体
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
}
根据评论。
为了调查这个问题,建议在没有 ALB 的情况下测试 ECS 服务。根据测试发现,由于应用程序启动时间长。
,ALB将ECS服务视为不健康通过将 ALB health-check 宽限期 增加到(例如 300 秒)解决了该问题。
not sure if EC2 launch type must use "bridge"
您也可以在 EC2 实例上使用 awsvpc
,但在这种情况下 bridge
更容易使用。