我的亚马逊自动缩放有什么问题?

时间:2014-12-17 15:18:36

标签: amazon-ec2 amazon-cloudfront

我有一个EC2实例,我想根据SQS队列中的消息数量进行扩展。如果有很多消息(5分钟)我想弹出一个新的EC2,以便更快地消费消息。然后,如果消息很少(5分钟),我想要弹出最老的EC2。这样,如果消耗消息的服务由于某种原因停止,我将终止旧的EC2,服务将运行。

我为此创建了AutoScalling。我已将TerminationPolicy设置为OldestInstance,但只有在我只设置一个区域(例如:eu-west-1a)时才能正常工作:它会创建一个新实例并每次终止最旧的实例。但是如果我有3个区域(eu-west-1a, eu-west-1b, eu-west-1c),它只会以OldestInstance方式启动和终止实例。或者,至少,不像我期望的那样:每次删除最旧的。是否有与不同区域相关的东西?在this速度上,我没有发现任何相关信息,除了默认政策。

即使应用了从默认策略链接到多个区域的案例,我也可以最多只有2个实例同时转向。它们总是在一个新的区域发射。

1 个答案:

答案 0 :(得分:2)

这可能是关键段落:

  

自定义终止策略时,Auto Scaling会首先评估可用区域是否存在任何不平衡。如果可用区的实例数多于该组使用的其他可用区,则Auto Scaling会对来自不平衡可用区的实例应用指定的终止策略。 如果组使用的可用区是平衡的,则Auto Scaling会随机选择可用区并应用您指定的终止策略。

我将此解释为,如果您在多个区域中有实例,并且这些区域已经平衡,那么AWS将随机选择一个区域,然后在随机选择的区域内选择最旧的实例 - 它赢得了'选择AZ中最旧的实例,选择随机AZ,然后在该AZ中终止最旧的实例。

enter image description here