创建自动缩放组时,我可以为其实例选择一个有序的终止策略列表。亚马逊的文档指出
您可以单独使用这些策略,也可以将它们组合成 Auto Scaling 在终止实例时使用的策略列表。
但它掩盖了这些策略如何组合以及列表中的下一个策略何时发生“失败”的细节,即每个策略在什么情况下失败并转移到列表中的下一个策略。
例如,我的["OldestInstance", "Default"]
组中有一个策略列表,但在向上然后向下扩展之后,扩展组继续由最新(和健康)的实例(以较大的幅度更新)终止,我不知道为什么。
此外,根据同一个文档,默认策略实际上本身就是策略的组合,并且包括OldestLaunchConfiguration
和ClosestToNextInstanceHour
作为其两个步骤。如果我有一个包含 的列表,["OldestLaunchConfiguration", "ClosestToNextInstanceHour", "Default"]
它会评估OldestLaunchConfiguration
和ClosestToNextInstanceHour
两次吗?
最后,终止是否考虑负载均衡器?例如,如果我的新实例未能正确初始化并且没有与负载均衡器一起使用并且OldestInstance
有效,那么缩减操作是否会首先杀死不健康的实例,即使它较新?
将其分解为单独的问题:1)当有多个终止策略时,它们是如何应用的 - 它会尝试首先执行第一个策略,如果存在平局则继续执行下一个策略。如果它通过了您选择的所有策略并且仍然存在平局,它将随机选择一个平局的实例
2) 当第一个终止策略是“最旧的实例”时,它怎么会终止最新的实例 - 从终止策略文档中,AutoScaling Group (ASG) 将始终尝试平衡可用区的第一个,然后在AZ 实例最多。因此,如果您有 2 个 AZ,第一个有 2 个实例,第二个有 1 个实例,ASG 将终止第一个 AZ 中最旧的实例。- 这在您提出问题时不适用,但如果您使用 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