gpt4 book ai didi

amazon-web-services - 更新 AWS ECS 服务

转载 作者:行者123 更新时间:2023-12-04 08:02:50 28 4
gpt4 key购买 nike

我有一项在 AWS EC2 Container Service (ECS) 上运行的服务。我的设置比较简单。它使用单个任务定义和以下详细信息运行:

  • 所需容量设置为 2
  • 最低健康设置为 50%
  • 最大可用设置为 200%
  • 任务以 80% 的 CPU 和内存预留运行

  • 最初,我能够毫无问题地将必要的 EC2 实例注册到包含该服务的集群。然后关联的任务开始在两个实例上运行。正如预期的那样——考虑到 CPU 和内存预留——任务几乎占用了 EC2 实例的全部资源。

    有时,我希望任务使用它正在运行的应用程序的新版本。为了实现这一点,我创建了任务的修订版,取消注册以前的修订版,然后更新服务。请注意,我已将最小健康百分比设置为要求 2 * 0.50 = 1实例始终运行,最大健康百分比允许高达 2 * 2.00 = 4正在运行的实例。

    因此,我预计 1 个取消注册的任务实例将被排空并脱机,以便该任务的新修订版的 1 个实例可以联机。然后这个过程会重复,使部署进入成功状态。

    不幸的是,集群什么都不做。在 events log,它告诉我它不能放置新任务,即使我上面描述的过程允许它这样做。

    如何让集群执行我期望的行为?我只有在我手动将另一个 EC2 实例注册到集群然后在更新完成后将其拆除时才能做到这一点(这是不可取的)。

    最佳答案

    我遇到了同样的问题,过去的任务卡住了,没有空间放置它们。以下来自 AWS 文档的片段 updating a service帮助我做出了以下决定。

    If your service has a desired number of four tasks and a maximum percent value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default value for maximum percent is 200%.



    我们应该有 集群资源可用/容器实例可用让新任务开始,这样它们就可以开始,而旧任务可以耗尽。

    这些是我做的事情
  • 在进行服务更新之前,向集群添加 20% 的容量。您可以使用 ASG(自动缩放组)命令行并从所需容量向您的集群添加 20%。这样,您将在部署期间拥有一些额外的实例。
  • 有了实例后,新任务将开始快速旋转,而旧任务将开始耗尽。

  • 但这是否意味着我会有额外的容器实例?

    是的,在部署过程中,您将添加一些实例,但随着旧任务耗尽,它们将继续存在。去除它们的方法是

    创建一个 MemoryReservationLow警报(在您的情况下为约 70% 的阈值)大约 25 分钟(更长的持续时间以确保我们已经超额调试)。由于一旦您没有使用这些额外的服务器,预订就会降低,因此可以将其删除。

    关于amazon-web-services - 更新 AWS ECS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655705/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com