服务无法下达任务

时间:2017-05-24 22:50:52

标签: amazon-web-services amazon-ecs amazon-cloudformation

好的,我很遗憾在哪里甚至排除故障。我正在尝试启动一个在ECS中运行基本应用程序的堆栈。我将在下面显示cloudformation。但我一直在说:

  

服务sos-ecs-SosEcsService-1RVB1U5QXTY9S无法发出任务   因为没有容器实例满足其所有要求。原因:没有   在您的群集中找到了Container实例。欲获得更多信息,   请参阅“故障排除”部分。

我启动并运行了2个EC2实例,但都没有出现在ECS群集实例中。

以下是我的一些理论:

  • 是我的user_data正确吗?我需要分配值吗?
  • 健康检查怎么样?
  • 我的应用程序是一个使用端口4567的sinatra应用程序。我错过了什么吗?

另外,我基本上从这开始,http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ecs.html并简化了它。所以这是我现在的json,https://gist.github.com/kidbrax/388e2c2ae4d622b3ac4806526ec0e502

另外,如何简化此操作以取消所有自动缩放功能?只是想让它以某种形式或时尚的方式运作?

3 个答案:

答案 0 :(得分:2)

为了使ECS实例加入集群,必须满足以下条件:

  1. 必须正确配置代理才能连接到正确的 通过/etc/ecs/ecs.config文件进行群集。
  2. 必须为ECS实例分配正确的IAM角色,以允许ECS代理访问ECS端点。
  3. ECS实例必须通过igw或NAT连接到Internet才能与控制平面联系。
  4. ECS实例上的ECS代理应正在运行。

用于配置/etc/ecs/ecs.config文件的UserData。

#!/bin/bash
echo ECS_CLUSTER=ClusterName >> /etc/ecs/ecs.config

您可以在/var/log/ecs/ecs-agent.log *

中检查COntainer实例未在集群中注册的原因。

答案 1 :(得分:1)

阅读Why can't my ECS service register available EC2 instances with my ELB?后,我发现问题是我的用户数据。这些值没有被正确替换,因此实例加入了defualt集群。

答案 2 :(得分:0)

  

由于没有容器实例满足其所有要求,因此无法放置任务。原因:在群集中未找到容器实例。

这通常意味着您的实例已启动,但无法正常注册到集群。

导航到集群的负载均衡目标组,然后检查以下内容

    Targets 标签中
  • 实例的运行状况。
  • “描述”标签中的
  • 属性(值可以关闭)。
  • 运行状况检查参数。

如果您的实例已终止,请检查已终止实例的系统日志,以及 userdata 脚本中是否有任何错误(请检入启动配置)。

如果实例正在运行,请对其进行SSH验证,并验证以下内容:

  • 已在/etc/ecs/ecs.config中正确配置了群集。
  • ECS代理已启动并正在运行(docker ps)。如果不是,请手动通过以下方式启动:start ecs
  • 通过以下方式检查ECS日志是否有错误:tail -f /var/log/ecs/*

相关: