【问题标题】:service unable to place a task服务无法放置任务
【发布时间】:2017-10-25 11:12:55
【问题描述】:

好的,我什至不知道在哪里解决这个问题。我正在尝试启动一个在 ECS 中运行基本应用程序的堆栈。我将在下面展示云的形成。但我不断得到:

service sos-ecs-SosEcsService-1RVB1U5QXTY9S 无法放置任务 因为没有容器实例满足其所有要求。原因:没有 在您的集群中找到容器实例。了解更多信息, 请参阅故障排除部分。

我启动并运行了 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

顺便说一句,我怎样才能简化它以消除所有自动缩放?只是想让它以某种形式或方式工作?

【问题讨论】:

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


    【解决方案1】:

    阅读Why can't my ECS service register available EC2 instances with my ELB? 后,我意识到问题出在我的用户数据上。这些值没有被正确替换,因此实例正在加入默认集群。

    【讨论】:

      【解决方案2】:

      ECS实例加入集群需要满足以下条件:

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

      用于配置/etc/ecs/ecs.config 文件的用户数据。

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

      您可以在 /var/log/ecs/ecs-agent.log* 中查看容器实例未注册集群的原因

      【讨论】:

        【解决方案3】:

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

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

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

        • Targets 选项卡中实例的运行状况。
        • 属性在描述选项卡中(值可能是关闭的)。
        • 健康检查参数。

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

        如果实例正在运行,则通过 SSH 连接到它,并验证以下内容:

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

        相关:

        【讨论】:

          猜你喜欢
          • 2010-10-26
          • 1970-01-01
          • 1970-01-01
          • 2017-11-20
          • 1970-01-01
          • 2014-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多