【问题标题】:reduce price by on AWS (EC2 and spot instances)在 AWS 上降低价格(EC2 和 Spot 实例)
【发布时间】:2017-11-15 10:01:02
【问题描述】:

我有一个作业队列,并且正在运行处理这些作业的 AWS EC2 实例。我们为现场和按需版本中的每个 c4.* 实例类型提供了一个 AutoScaling 组。

每个实例的功率等于实例 CPU 的数量。 (例如 c4.large 的 power=2 因为它有 2 个 CPU)。

我们需要的确切功率只是根据队列中的作业数量计算得出。

我想实现一种算法,它会定期检查队列中的作业数量,并通过 AWS SDK 更改特定 AutoScaling 组的所需值,以尽可能节省资金并保持实例的总功率以保持已处理的作业。

特别是:

  1. 我更喜欢现场实例而不是按需实例,因为它们更便宜
  2. EC2 实例按小时收费,我们希望仅在其 1 小时正常运行时间的最后一分钟关闭该实例。
  3. 我们希望尽可能将按需实例替换为现场实例。因此,在 55 分钟增加点组,在 58 点检查新的点实例是否正在运行,如果是,则减少按需组。
  4. 如果出价过高,我们希望通过按需替换 Spot 实例。只需关闭点播的,然后打开现场的。

看来这个问题真的很难处理。有人有任何经验或实施类似的解决方案吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 scaling


    【解决方案1】:

    您当然可以编写自己的代码来执行此操作,从而有效地告诉您的 Auto Scaling 组何时添加/删除实例。

    另外,请注意,使用 Spot 实例降低成本的一个好策略是了解 Spot 实例的价格因而异:

    • 地区
    • 可用区
    • 实例类型

    因此,如果 c4.xlarge 的现货价格在一个 AZ 上涨,则在另一个 AZ 可能仍然是相同的成本。此外,c4.2xlarge 的价格可能会低于c4.xlarge,但功率却是后者的两倍。

    因此,您的目标应该是多样性跨多个 AZ 和多个实例类型的 Spot 实例。这意味着现货价格变化只会影响您车队的一小部分,而不是一次全部影响。

    您可以使用Spot Fleet 来协助完成此操作,甚至可以使用第三方产品,例如SpotInst

    还值得一看 AWS Batch(目前并非在每个地区都可用),它旨在智能地为批处理作业提供容量。

    【讨论】:

      【解决方案2】:

      自动缩放组允许您使用在自动缩放组之外定义的警报和指标。

      如果您使用的是 SNS,您应该能够在您的 SNS 队列上设置警报,并使用它来扩大和缩小您的伸缩组。

      如果您使用的是自定义队列系统,您可以将指标推送到 cloudwatch 以创建类似的警报。

      您可以确定缩放操作发生的频率,但可能很难将运行时间精确到一小时。

      【讨论】:

      • 我试过报警器,结果报警器很慢。启动新实例最多需要 5 分钟的警报时间。另外,您将如何处理现场实例?我们运行的 EC2 实例的数量应该是大约。 QueueSize / C,其中 C 是一个常数。闹钟无法做到这一点。
      猜你喜欢
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 2018-04-22
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多