如何更改AWS ECS群集中的实例类型?

时间:2017-06-19 18:09:59

标签: amazon-web-services amazon-ecs

我在AWS EC2 Container Service中有一个群集。当我设置它时,我使用了t2.micro实例,因为它们足以进行开发。现在我想使用更强大的实例,比如m4.large。

我想知道是否可以仅更改实例类型,因此我不需要重新创建整个集群。我找不到怎么做。

9 个答案:

答案 0 :(得分:45)

是的,您可以在CloudFormation中实现这一目标。

  • 单击与ECS-Cluster对应的堆栈。
  • 点击Update Stack
  • 使用电台current templateNext
  • 更改EcsInstanceType
  • NextNextUpdate
  • 将您的群集升级到2*n个实例
  • 等待创建新类型的n个新实例
  • 将您的群组缩小为n
  • 或者您可以直接排空并终止实例1

答案 1 :(得分:35)

是的,这是可能的。

群集中的实例类型由'实例类型'在启动配置中进行设置。要更新实例类型而不必重新创建集群:

  1. 制作群集的副本启动配置并更新“实例类型”。
  2. 调整群集 Auto Scaling组以指向新的启动配置
  3. 等待您的新实例在群集和服务中注册以启动。
  4. 您还可以通过创建链接到不同启动配置的多个Auto Scaling组,将多个实例类型添加到单个群集。但请注意,您无法在控制台中轻松复制Auto Scaling Groups。

答案 2 :(得分:5)

如何在Amazon ECS中更改容器实例类型?

要更改您的容器实例类型,请完成以下部分之一的步骤:

  • 更新通过AWS CloudFormation堆栈在ECS集群中启动的容器实例
  • 更新在ECS集群中手动启动的容器实例

解决方案

  • 更新通过AWS CloudFormation堆栈在ECS集群中启动的容器实例

重要:以下步骤仅适用于使用内部创建基础 AWS CloudFormation堆栈的资源创建的ECS集群。堆栈具有以下格式的名称: EC2ContainerService-yourClusterName 。这些步骤不适用于空的ECS群集或用于配置容器实例的自定义方法。

更新AWS CloudFormation堆栈中 EcsInstanceType 参数的值:

1。打开AWS CloudFormation控制台。

  1. 选择包含您的ECS集群的堆栈。

注意:群集名称附加到堆栈名称的末尾(例如,EC2ContainerService-yourClusterName)。

  1. 选择“操作”,然后选择“更新堆栈”。

  2. 选择“使用当前模板”,然后选择“下一步”。

  3. 对于EcsInstanceType,为容器实例中的实例类型设置一个合适的值,然后选择“下一步”。

  4. 跳过“选项”部分,选择“下一步”,然后选择“更新”。

替换群集中的旧容器实例:

  1. 要更新AWS CloudFormation堆栈,请完成上一节中的步骤1-4。

  2. 对于AsgMaxSize,输入一个参数值,该值是当前大小的两倍。 注意:例如,如果当前值为2,则将新值设置为4。这有助于防止在更改实例类型时停机。

  3. 打开Amazon ECS控制台。
  4. 在导航窗格中,选择“群集”,然后选择您的群集。
  5. 选择“ ECS实例”选项卡,然后为要替换的旧容器实例选择容器实例ID。 注意:如果DeploymentConfiguration允许将替换任务放置在6.容器实例上,则Amazon ECS将自动放置替换任务。
  6. 选择“操作”菜单,然后选择“清空实例”以清空实例。
  7. 在“ ECS实例”选项卡上,确认旧容器实例的“正在运行的任务”计数为0。
  8. 在导航窗格中,选择“群集”,然后选择您的群集。 选择“ ECS实例”选项卡,选择旧容器实例的容器实例ID,然后选择“注销”。 注意:注销实例会将其从Amazon ECS中删除。
  9. 在您的AWS CloudFormation模板中,将AsgMaxSize的值设置为原始值以终止较旧的容器实例。 重要提示:此步骤假定您的Auto Scaling组具有默认终止策略。

答案 3 :(得分:4)

是的,您可以在ECS集群中更改实例类型。我相信您已经从AWS GUI手动创建了ECS集群。在幕后,根据您从AWS控制台(ECS)的输入(例如VPC,实例类型和大小等),创建AWS云形成模板。请按照以下步骤进行操作。

  1. 找到名称为“ EC2ContainerService- {your-ecs-cluster-name}”的云形成模板。
  2. 在“参数”标签中检查现有设置(您可以在此处检查实例类型)。
  3. 现在您需要更新云的形成。单击->更新->使用当前模板->下一个-> 更新EcsInstanceType变量->下一个->下一个->更新堆栈。
  4. 现在您的云形成更新。现在您可以在EC2控制台中检查是否存在具有新实例类型的新竞价型舰队。

答案 4 :(得分:3)

这是在没有任何停机的情况下进行的操作:

  1. 创建Auto Scaling使用的启动配置的副本 分组,包括您要进行的任何更改。
  2. 将Auto Scaling组编辑为:
    • 使用新的启动配置
    • 所需容量=所需容量* 2
    • 最小值=所需容量
  3. 在ECS群集的“ ECS实例”选项卡中等待所有新实例变为“ ACTIVE”
  4. 选择旧实例,然后单击“操作”->“清除实例”
  5. 等待所有旧实例都运行0个任务
  6. 编辑Auto Scaling组并将“最小”和“所需”更改回其原始值

答案 5 :(得分:2)

这可以通过在CloudFormation堆栈中为ECS实例修改EcsInstanceType来实现。手动对自动伸缩组所做的任何更改都将被下一个“伸缩ECS实例”操作覆盖。

答案 6 :(得分:1)

以下是我更新群集中实例类型的确切步骤:

  • 转到群集服务,将任务数更新为0

  • 转到EC2 - >启动配置 - >行动下拉菜单 - > 复制启动配置并设置新实例类型

  • 转到EC2 - > Auto Scaling Groups - >编辑 - >将启动配置设置为新创建的启动配置

  • 转到EC2 - > Auto Scaling Groups - >实例 - > 分离实例

  • 转到EC2 - >启动配置 - >删除旧的启动配置

  • 转到群集服务,将任务数更新为所需的计数。

现在,当任务开始时,它将在更新的EC2实例类型上运行。

答案 7 :(得分:1)

当然,根据使用启动配置的建议,有多种方法可以更改实例类型。

但是请注意,使用多个启动配置来附加到具有容器实例扩展策略的ECS集群是一个挑战。

例如,如果正在使用启动配置运行具有t2.medium类型实例的群集,并且将自动扩展策略附加到ECS群集,则它只能表示自动扩展组,而不能超过1。

答案 8 :(得分:1)

AWS文档具有完整的分步指南,涵盖了手动启动的CloudFormationStack和ECS集群。

How do I change my container instance type in Amazon ECS?

根据指南:

要更改容器实例类型,请完成以下任一步骤 以下部分:

  1. 更新通过AWS CloudFormation堆栈在ECS集群中启动的容器实例
  2. 更新在ECS集群中手动启动的容器实例