如何解决在AWS ECS中设置服务时遇到问题
我试图设置在集群上运行容器映像的ECS服务,但无法使设置正常工作。
除了我试图在EC2实例上托管容器外,我基本上遵循了https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html上的指南。
我想知道问题是否与网络模式(使用“ awsvpc”)有关。
期望
通过ALB链接访问时,它应该在index.html上显示一些内容
观察
当我尝试使用负载均衡器链接进行访问时,它会显示HTTP 503,并且运行状况检查也显示不健康
而且ECS似乎一直在“重新创建”着色器? (请原谅我,因为我还不熟悉ECS)
试图直接访问容器实例,但也无法访问
我查看了容器实例上的ECS代理日志(/var/logs/ecs-agent.log),该图像应该已成功拉出
该任务应该已经开始
ECS服务事件
似乎它保持注册和注销目标
安全组已设置为接受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
}
解决方法
基于评论。
要调查此问题,建议测试不带ALB的ECS服务。根据测试,发现由于申请开始时间长,ALB将ECS服务视为不健康。
将ALB健康状况检查宽限期延长至(例如300秒)可以解决此问题。
不确定EC2启动类型是否必须使用“ bridge”
您也可以在EC2实例上使用awsvpc
,但是在这种情况下,bridge
更易于使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。