Rya*_*yan 14 amazon-ec2 amazon-web-services amazon-ecs amazon-elb
我有一个EC2启动配置,可以构建ECS优化的AMI.我有一个自动缩放组,确保我始终至少有两个可用的实例.最后,我有一个负载均衡器.
我正在尝试创建一个ECS服务,在负载均衡器中的实例之间分配我的任务.
在阅读了ECS负载平衡的文档之后,我的理解是我的ASG不应该自动向ELB注册我的EC2实例,因为ECS负责这一点.所以,我的ASG没有指定ELB.同样,我的ELB没有任何已注册的EC2实例.
当我创建我的ECS服务时,我选择ELB并选择ecsServiceRole.创建服务后,我从未在ECS实例选项卡中看到任何可用实例.该服务也无法启动任何任务,其中包含非常一般的错误...
服务无法放置任务,因为无法找到资源.
我已经在这里工作了大约两天,似乎无法弄清楚哪些配置设置没有正确配置.有没有人对可能导致这种情况不起作用的想法有任何想法?
更新@ 06/25/2015:
我认为这可能与ECS_CLUSTER用户数据设置有关.
在我的EC2自动缩放启动配置中,如果我将用户数据输入完全清空,则会创建ECS_CLUSTER值为"default" 的实例.发生这种情况时,我会看到一个自动创建的集群,名为"default".在这个默认集群中,我看到了实例,并且可以像预期的那样向ELB注册任务.一旦任务在ELB中注册,我的ELB运行状况检查(HTTP)就会通过,并且一切都在世界上很好.
但是,如果我将该ECS_CLUSTER设置更改为自定义设置,我永远不会看到使用该名称创建的集群.如果我手动创建具有该名称的集群,则实例永远不会在集群中可见.在这种情况下,我无法在ELB中注册任务.
有任何想法吗?
Rya*_*yan 12
最后,最终我的EC2实例没有被分配公共IP地址.似乎ECS需要能够与每个EC2实例直接通信,这将要求每个实例具有公共IP.我没有为我的容器实例分配公共IP地址,因为我认为我将它们全部放在公共负载均衡器后面,并且每个容器实例都是私有的.
小智 11
我有类似的症状,但最终在日志文件中找到答案:
/var/log/ecs/ecs-agent.2016-04-06-03:
2016-04-06T03:05:26Z [ERROR] Error registering: AccessDeniedException: User: arn:aws:sts::<removed>:assumed-role/<removed>/<removed is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-west-2:<removed:cluster/MyCluster-PROD
status code: 400, request id: <removed>
Run Code Online (Sandbox Code Playgroud)
在我的情况下,资源存在但无法访问.听起来OP指的是不存在或不可见的资源.您的群集和实例是否在同一区域?日志应确认详细信息.
回应其他帖子:
您不需要公共IP地址.
您需要:ecsServiceRole或分配给EC2实例的等效IAM角色,以便与ECS服务进行通信.您还必须指定ECS群集,并且可以在实例启动或启动配置定义期间通过用户数据完成,如下所示:
#!/bin/bash
echo ECS_CLUSTER=GenericSericeECSClusterPROD >> /etc/ecs/ecs.config
Run Code Online (Sandbox Code Playgroud)
如果在新启动的实例上未能执行此操作,则可以在实例启动后执行此操作,然后重新启动该服务.
| 归档时间: |
|
| 查看次数: |
13139 次 |
| 最近记录: |