自动缩放组终止策略如何组合?

自动缩放组终止策略如何组合?

创建自动扩展组时,我可以为其实例选择一个有序的终止策略列表。亚马逊的文档指出

您可以单独使用这些策略,也可以将它们组合到 Auto Scaling 在终止实例时使用的策略列表中。

但它掩盖了这些策略如何组合的细节,以及何时“失败”发生在列表中的下一个策略上,即在什么条件下每个策略失败并转到列表中的下一个策略。

例如,["OldestInstance", "Default"]我的组中有一个策略列表,但在扩展和收缩之后,扩展组继续终止,原因是最新(并且健康)实例(更新很多),但我不知道为什么。

此外,根据同一文档,默认策略实际上本身就是策略的组合,并且包括OldestLaunchConfigurationClosestToNextInstanceHour作为其两个步骤。如果我有一个包含的列表["OldestLaunchConfiguration", "ClosestToNextInstanceHour", "Default"],它会对OldestLaunchConfiguration和进行ClosestToNextInstanceHour两次评估吗?

最后,终止是否考虑了负载均衡器?例如,如果我的新实例无法正确初始化,并且未在负载均衡器中运行,并且OldestInstance已生效,那么缩减操作是否会首先终止不健康的实例,即使它是较新的?

答案1

将其分解为单独的问题:1) 当有多个终止策略时,它们如何应用 - 它将首先尝试执行第一个策略,如果存在平局,则继续执行下一个策略。如果它遍历了您选择的所有策略并且仍然存在平局,它将随机选择其中一个平局的实例

2) 当第一个终止策略是“最旧实例”时,它怎么可能终止最新的实例 - 从终止策略文档来看,AutoScaling Group (ASG) 将始终首先尝试平衡可用区,然后在实例最多的可用区内应用终止策略。因此,如果您有 2 个可用区,第一个有 2 个实例,第二个有 1 个实例,则 ASG 将终止第一个可用区中最旧的实例。- 这在您提出问题时并不适用,但如果您使用带有新选项的 ASG 来混合实例类型和购买选项,它将尝试保持您的现货/按需平衡,然后再考虑您的终止策略。 https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html

3) 终止是否考虑了 Elastic Load Balancer (ELB) 的健康状况?- 否,健康检查替换与扩展是分开的。如果某个实例被负载均衡器标记为不健康,则 ASG 将替换它,前提是:A) ASG 健康检查类型设置为 ELB B) 实例的使用时间超过 ASG 的健康检查宽限期 C) 此 ASG 中的实例曾被该 ELB/目标组标记为健康 -https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-add-elb-healthcheck.html -https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html

相关内容