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

问题描述 投票:31回答:6

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

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

amazon-web-services amazon-ecs
6个回答
35
投票

是的,这是可能的。

群集中的实例类型由启动配置中的“实例类型”设置确定。要更新实例类型而不必重新创建集群:

  1. 制作群集启动配置的副本并更新“实例类型”。
  2. 调整群集Auto Scaling组以指向新的启动配置。
  3. 等待您的新实例在您的群集和服务中注册以启动。

您还可以通过创建链接到不同启动配置的多个Auto Scaling组,将多个实例类型添加到单个群集。但请注意,您无法在控制台中轻松复制Auto Scaling Groups。


47
投票

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

  • 单击与ECS-Cluster对应的堆栈。
  • 点击Update Stack
  • 使用无线电话,gasxswpoi
  • 更改EcsInstanceType
  • current templateNextNext
  • 将您的群集升级到Next实例
  • 等待创建新类型的Update新实例
  • 将您的群集缩小到2*n
  • 或者你可以直接排空和终止实例1

3
投票

这是如何在没有任何停机时间的情况下完成的:

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

2
投票

这可以通过在ECS实例的CloudFormation堆栈中修改EcsInstanceType来实现。手动更改自动缩放组将被下一个“Scale ECS Instances”操作覆盖。


1
投票

以下是我在集群上更新实例类型所采取的确切步骤:

  • 转到群集服务,将任务数更新为0
  • 转到EC2 - >启动配置 - >操作下拉菜单 - >复制启动配置并设置新实例类型
  • 转到EC2 - > Auto Scaling Groups - > Edit - >将Launch Configuration设置为新创建的启动配置
  • 转到EC2 - > Auto Scaling Groups - > Instances - > Detach instance
  • 转到EC2 - >启动配置 - >删除旧的启动配置
  • 转到群集服务,将任务数更新为所需的计数。

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


1
投票

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

但请注意,使用多个启动配置连接到具有Container Instances Scaling策略的ECS群集是一项挑战。

例如,如果正在使用启动配置运行具有t2.medium类型实例的集群,并且具有连接到ECS集群的自动扩展策略,则它只能发信号通知自动扩展组且不超过1。

© www.soinside.com 2019 - 2024. All rights reserved.