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

var*_*en_ 37 amazon-web-services amazon-ecs

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

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

rev*_*.lt 56

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

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

  • 对我来说,一个接一个地排出实例是一个更好的方法,因为缩小规模2n-> n消除了我的n个实例,运行容器有效地导致我的服务停机.奇怪的是,AWS并没有逐渐降级,即使用正在运行的容器终止一个实例,在可用实例上生成新容器等,终止另一个实例等... (4认同)

Luk*_*son 38

是的,这是可能的.

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

  1. 制作群集启动配置的副本并更新"实例类型".
  2. 调整群集Auto Scaling组以指向新的启动配置. 注意:这将终止现有的群集实例.
  3. 等待您的新实例在您的群集和服务中注册以启动.

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

  • 这对我有用.回顾一下,如上所述,步骤是:1)使用新的'-COPY'名称,新实例类型制作Launch Config的副本; 2)调整群集Auto Scaling组以指向新的'-COPY'启动配置; 3)删除旧的启动配置; 4)复制新的'-COPY'启动配置,给它旧名; 调整群集Auto Scaling组以指向新的启动配置(具有旧名称的那个); 5)删除'-COPY'启动配置; 6)手动停止在群集中运行的实例,等待Auto Scaling Group使用新的Launch Config重新启动.这似乎对我有用. (9认同)
  • Luke是对的,但请记住,ECS cloudformation模板希望找到与创建时相同的名称.要修复它,在执行步骤1-2后,您将需要删除原始启动配置.之后,您将需要再次执行步骤1-2,但将启动配置重命名为其原始名称. (3认同)
  • 你是对的。我能够使用您的方法更改实例类型。我已将接受的答案更改为您的答案,请相应地进行编辑。非常感谢! (2认同)
  • 不幸的是,这对我不起作用,并且会在ECS-UI中创建一个不一致的地方,在该地方将创建实例,但未在群集下方列出,请参阅下面的答案。 (2认同)

Gre*_*som 7

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

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


Mig*_*ota 5

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

  • 进入集群服务,更新任务数为0

  • 转到 EC2 -> 启动配置 -> 操作下拉列表 ->复制启动配置并设置新实例类型

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

  • 转至 EC2 -> Auto Scaling 组 -> 实例 ->分离实例

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

  • 转到集群服务,将任务数更新为您想要的数量。

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


Sun*_*rma 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组具有默认终止策略。