【问题标题】:Scaling ECS EC2 instances when a task cannot be placed无法放置任务时扩展 ECS EC2 实例
【发布时间】:2017-11-20 16:59:30
【问题描述】:

我正在使用带有Jenkins ECS plugin 的 Jenkins 代理/从属的 ECS 集群。

当作业请求构建节点时,插件会放置一个 ECS 任务。现在我想根据需求扩展与 ECS 集群关联的 Autoscaling Group 中的 EC2 实例。

  1. jenkins 经常闲置。在这种情况下,我不希望自动缩放组中有任何实例。
  2. 如果请求了一个节点(因此是一个 ECS 任务)但无法放置,我想将一个 EC2 实例添加到自动缩放组。
  3. 如果某个实例处于空闲状态并且在计费时间之前不久,我希望删除该实例。

第 3 点可以通过 EC2 实例上的 cronjob 来完成,该任务定期检查是否满足条件并删除 EC2 实例。

但是我怎样才能完成 2. 点呢?如果无法放置任务,我无法创建触发的 cloudwatch 警报。

我怎样才能做到这一点?

【问题讨论】:

    标签: amazon-web-services amazon-ecs


    【解决方案1】:

    如果无法放置任务,则意味着将该任务放置在您的 ECS 集群中将超过您的 MemoryReservation 或 CPUReservation。您可以为这些 ECS 指标中的一个或两个设置 Cloudwatch 警报,以及在 ECS 集群中添加和删除 EC2 实例的自动扩展策略。

    这与在 ecs:service:DesiredCount 维度上扩展 ECS 服务的自动扩展策略相结合应该足以让您添加 ECS 集群所需的底层 EC2 实例。 p>

    例如,您的 ECS 服务的 ScalingPolicy 可能是“当我们为此服务使用 70% 的分配内存时,将 2 添加到 DesiredCount”。添加 1 个服务任务后,您的 ECS 集群 MemoryReservation 指标可能会超过“80”阈值,此时会针对 ECS MemoryReservation 上的某个阈值触发 Cloudwatch 警报,自动扩展策略会添加另一个 EC2 节点,第二个节点在该节点上现在可以放置任务了。

    【讨论】:

      【解决方案2】:

      对于第 2 点,解决此问题的一种方法是在没有足够的 cpu 单元放置新的 jenkins 从站时自动缩放。

      您应该使用集群上的 cpu 预留指标来进行扩展。 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html#cluster_reservation

      【讨论】:

      • 这并不能真正解决第 2 点。我希望在无法放置任务时发生缩放事件。当它可能无法放置时不是:原因是有些任务需要 12GB 的 Ram,这几乎是一个完整的 EC2 实例。如果我按照您的建议进行扩展,我将始终运行一个额外的 EC2 实例。我不想要的。
      【解决方案3】:

      实现此目的的一种相当老套的方法:您可以使用 Lambda 函数来检测服务何时拥有runningCount + pendingCount < desiredCount 超过 X 秒。 (我还没有测试过。) 提出了类似的解决方案here

      似乎没有适当的解决方案仅在无法放置任务时进行扩展。也许 AWS 希望我们过度配置集群,这可能是实现高可用性的良好做法,但并不总是最好或最便宜的解决方案。

      【讨论】:

        【解决方案4】:

        对于那些在 2020 年 1 月之后到达的人,现在处理它的方法可能是集群自动缩放,如下所述:“Amazon ECS cluster auto scaling”,更多信息在这里:“Deep Dive on Amazon ECS Cluster Auto Scaling)”。

        基本上,ECS 现在处理大部分繁重的工作。不是全部,否则我不会在这里寻找答案;)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-15
          • 2019-02-25
          • 1970-01-01
          • 2022-01-10
          • 2020-12-25
          • 2022-01-26
          • 2019-08-02
          • 2016-07-03
          相关资源
          最近更新 更多