【问题标题】:How can I control which EC2 instances get removed by an AutoScalingGroup using Amazon Web Services?如何控制使用 Amazon Web Services 的 AutoScalingGroup 删除哪些 EC2 实例?
【发布时间】:2018-09-05 00:35:42
【问题描述】:

我已经预见到我的应用程序可能会出现一个问题,但我不确定是否可以解决,也许架构需要重新设计。

我在 AWS 上使用 AutoScalingGroup (ASG) 创建 EC2 实例,以托管玩家可以加入的游戏服务器。目前,ASG 是通过匹配 API 手动扩展的,该 API 根据其需求更改所需容量。游戏服务器完成后会出现问题。

当游戏结束时,它会向 matchmaker 发出信号,告知它已经完成并需要终止,然后 matchmaker 会相应地缩小 ASG,但是,它似乎并不确切知道要删除哪个实例,因此它赢了不一定是需要终止的那个。

我可以终止实例,但是当实例终止时,ASG 所需的容量永远不会改变,因此会创建另一个服务器。

有没有一种方法可以缩小 ASG,以及指定要从组中删除的服务器?

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

    简而言之,缩减期间的默认终止策略旨在删除使用最旧启动配置的实例。

    目前,Amazon EC2 Auto Scaling 支持以下终止策略:

    OldestInstance 终止组中最旧的实例。当您将 Auto Scaling 组中的实例升级到新的 EC2 实例类型时,此选项很有用。您可以逐渐将旧类型的实例替换为新类型的实例。

    NewestInstance 终止组中的最新实例。当您测试新的启动配置但不想将其保留在生产环境中时,此策略很有用。

    OldestLaunchConfiguration 终止具有最旧启动配置的实例。当您更新组并从以前的配置中逐步淘汰实例时,此策略很有用。

    ClosestToNextInstanceHour 终止最接近下一个计费时间的实例。此政策可帮助您最大限度地利用实例并管理您的 Amazon EC2 使用成本。

    默认 根据默认终止策略终止实例。当您对组有多个扩展策略时,此策略很有用。

    实例保护

    可能的解决方案之一是使用实例保护。自动伸缩提供实例保护,控制实例在缩容时是否可以终止。

    因此,默认启用for ASG 实例保护以保护实例不被缩减。完成服务器后,减少所需实例数的值,从特定实例中删除实例保护(使用 CLI 或 SDK;请注意,此保护对其余实例保持启用),自动缩放将终止该确切实例。

    有关实例保护的更多信息,请参阅Instance Protection

    【讨论】:

    • 抱歉耽搁了,我不得不优先考虑其他事情。好的,实例保护似乎是最好的选择,但是有没有办法在线禁用来自 aws 控制台的保护?我似乎找不到它,而且我的实例在启用后也没有被删除。
    • 哦,看来我可以终止它们,然后按比例缩小。这很好用,谢谢。
    【解决方案2】:

    最旧的服务器被删除。如果您想缩减特定服务器,则必须在更改所需容量之前终止该服务器。

    【讨论】:

    • 那不完全正确。默认情况下,具有最早启动配置的实例会被终止。如果有多个实例具有相同的配置,则最接近下一个计费小时的实例将被终止。如果这些实例更多,则随机选择一个。请注意,实例必须是unprotected
    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2016-08-31
    • 2014-09-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多