EC2 自动扩展:配置目标跟踪策略以优先使用 Spot 实例

EC2 自动扩展:配置目标跟踪策略以优先使用 Spot 实例

亚马逊最近推出了EC2 Auto Scaling 的目标跟踪策略

在我的生产服务中,我使用两个独立的自动扩展组来支持使用 Spot 实例和按需实例的混合自动扩展。我希望我的 CPU 使用率不超过 70%,并且它应该尽可能使用 Spot 实例,但在必要时回退到按需实例。

首先,我将两个 Auto-Scaling 组(Spot 和 On-Demand)设置为使用目标跟踪,以实现 70% 的 CPU 负载,并将两个组的最小大小设置为 1。我的服务上的流量相当可预测(没有突然增加,白天流量较多,晚上流量较少)。

有一次,有两个按需实例和两个竞价实例在运行。系统刚刚缩减规模,因为五台服务器的 CPU 负载变得非常低(大约 35%)。当有四台服务器时,CPU 负载上升,几分钟后短暂超过 70% 大关(也许当时流量增加非常小)。

系统谨慎地决定再次扩大规模,但由于两个自动扩展组同时独立做出决定,因此启动了两个实例(一个 Spot 实例和一个按需实例)。此时,已有六台服务器在运行。过了一会儿,它再次缩小规模,最终达到运行四个实例的设置。

为了避免这种影响,我现在将设置更改如下:

  • 按需:目标 CPU 使用率为 70%,至少一台服务器
  • Spot:目标 CPU 使用率为 65%,至少一台服务器

我的假设是,它应该有助于防止我所描述的情况。我希望按需组比竞价组更早地缩减规模(无论如何,这是可取的,因为它们成本更高)。并且我希望竞价实例能够更快地扩大规模,这应该可以防止按需组不必要的扩大规模。

这是我的期望,但我没有找到太多细节在文档中确认这一点。有人可以详细说明新的目​​标跟踪扩展的工作原理,以及如何将其应用于具有 Spot 和按需实例的混合设置吗?

问题:

  • 如果我将目标设置为 70% CPU 利用率,那么它会在何时决定扩大规模,何时决定缩小规模?
  • 如果我有两个 Auto-Scaling 组,一个 CPU 利用率目标为 70%,另一个为 65%,那么它何时会决定扩大或缩小规模?它总是倾向于缩小 70% 的组吗?它总是倾向于扩大 65% 的组吗?
  • 如果现货市场的价格突然上涨至超过我的出价限额,会发生什么情况?按需自动扩展组会接管吗?
  • 我的理解是否正确?手动定义所需实例的数量只会产生短期效果,并且会由自动扩展策略自动调整?
  • 例如,如果它在晚上缩减到最小值,第二天又扩大了,是否意味着前一天最初的“所需实例数”设置现在已经过时了?换句话说,我是否只需要担心为最小值和最大值设置合理的值,AWS 会解决其余问题?

答案1

If I set the target to 70% CPU utilization, when will it decide to scale up and when to scale down?

- AWS 并未说明其具体工作原理,但它将为每个目标跟踪策略创建两个 CloudWatch 警报,一个用于扩展,一个用于缩减,您可以检查这些警报的阈值以了解何时触发它们

If I have two Auto-Scaling groups, one with a 70% CPU utilization target and the other with 65%, when will it decide to scale up or down? Will it always prefer to scale down the 70% group? Will it always prefer to scale up the 65% group?


What happens if the prices in the Spot market suddenly rise to exceed my bid limit. Will the On-Demand auto-scaling group take over?

- 最终,竞价型实例将被终止,这将导致按需实例的负载增加,从而导致它们扩展。

Is my understanding correct that manually defining the number of desired instances has only a short-term effect and will be automatically adjusted by the Auto Scaling policy?

- 正确,“所需容量”是扩展策略更改以终止或启动实例的内容

For example, if it scaled down to the minimum during the night and scaled up again next day, does it mean that the initial "number of desired instances" settings from the previous day are now obsolete? In other words, do I need to worry only about setting reasonable value for minimum and maximum, and will AWS will figure out the rest?

- 正确,最小值和最大值是期望值的界限(不能低于最小值或高于最大值)

您应该研究的一件事是,现在您可以在单个 AutoScaling 组中混合使用 Spot 和 On-Demand。您还可以一次在一个 AutoScaling 组中拥有多种实例类型。因此,理论上,您可以拥有一个组,其中包含一堆不同的备份实例类型,在任何给定时间使用 2 个最便宜的现货实例,如果这两个实例耗尽现货容量,则使用其他实例作为后备。

关于此新功能,有两点需要注意:1) 如果您为所选的任何实例类型选择的任何可用区域都没有现货容量,则不会自动回退到按需模式。因此,如果您将其设置为 50% 现货和 50% 按需模式,并且所需的是 10 个,而没有现货可用,那么您将只有 5 个按需实例。如果您选择了足够多的实例类型,我想这不会成为问题,但谁知道呢。

2)大多数负载均衡器都使用循环或类似的方法来分配与实例的连接,因此,如果有一个快速实例和一个慢速实例,它们都会收到相同数量的连接,而慢速实例最终会陷入困境

https://aws.amazon.com/blogs/aws/new-ec2-auto-scaling-groups-with-multiple-instance-types-purchase-options/

相关内容