具有竞价型和按需实例的EC2自动扩展?


13

我希望通过让它们启动竞价型实例而不是按需实例来优化我们的自动伸缩EC2组的成本。

我真正想要的是能够将某些服务器作为按需实例保留在组中,而不管现货实例定价市场发生什么情况。然后,我希望组中超出我配置的最低配置的其他服务器成为竞价型实例。对于通过竞价请求添加服务器的延迟,我通常是可以的。

我似乎找不到任何方法可以做到这一点,并且我尝试搜索AWS文档。看来,ASG可以是按需或现货的,但不能是混合的。

我可能可以手动将按需实例添加到分配给自动缩放组的Elastic Load Balancer,但是该服务器的负载不会被计入自动缩放度量和触发器中。

我想我可以输入一个高得离谱的出价,以确保我能始终获得所需的服务器,但随后我查看了价格历史记录,并发现偶尔出现大幅度的上涨。

AWS文档与其本身是矛盾的,因为在一个地方它说如果您输入服务器最低数量,则会“确定”该数量。但是,当您阅读有关竞价型实例时,便无法保证。现货的价格差异非常引人注目,因此我想尽可能地利用这一价格,同时仍保持始终处于基准状态。这可能吗?

Answers:


1

目前,您可以在单个ASG中混合按需实例和现货实例

Amazon EC2 Auto Scaling现在可以让您在单个Auto Scaling组(ASG)中跨购买选项,可用区(AZ)和实例系列配置和自动扩展实例,以优化扩展,性能和成本。现在,您可以在单个ASG中包含具有按需和RI的竞价型实例,以节省多达90%的计算成本。


是的-感谢您更新此问题。我已将您标记为对此的新规范答案。
平台

15

上面讨论的方法会有些混乱,并且不太灵活。更为规范的方法是只创建2个ASG(一个用于现场,一个用于点播),然后将它们注册到同一ELB中(在此处讨论)。这使您能够独立控制每个对象,而不必试图在单个ASG中进行LC交换。


7

不幸的是,这种混合 Auto Scaling方法似乎并非确实可用。

但是,您可以按照以下方法解决此限制(未经测试,只是我一直在研究一段时间的系统设计):

潜在的解决方法

使用自动缩放启动竞价型实例中概述的那样,竞价价格出价是使用中的启动配置的参数。正如您所指出的,没有可用的混合启动配置,而是必须是按需或现场的,这意味着用例需要两种不同的启动配置。

这似乎并没有立即解决,因为您一次只能将一个启动配置附加到Auto Scaling组,但具有以下(部分过时)约束(请参阅启动配置):

将新的或更新的启动配置附加到Auto Scaling组时,将使用新的配置参数启动任何新实例。现有实例不受影响。当需要按比例缩小Auto Scaling时,它将首先终止具有较早启动配置的实例[强调我的]

但是,强调的部分是关键,前者涵盖了在从相应的初始按需启动配置更改为附加的现​​场启动配置后保持按需实例运行的要求,而由于以下原因,后者不再必要Auto Scaling组的实例终止策略中记录了最近引入的Auto Scaling终止策略(对于更改,通常不会通过随附的AWS博客文章大肆宣传):

在Auto Scaling选择要终止的实例之前,它首先会标识比该组使用的其他可用区具有更多实例的可用区。如果所有可用区具有相同数量的实例,则它将标识一个随机的可用区。在已标识的可用区中,Auto Scaling使用终止策略来选择要终止的实例[强调我的]

终止策略的工作原理所述如果您希望终止最近启动的实例可以指定NewestInstance,这将是最近启动的竞价型实例之一:

Auto Scaling使用实例启动时间来确定最后启动的实例。

显然,这可能还有很多,例如,您可以将任何一个策略指定为独立策略,或者可以在有序列表中列出多个策略,但是这种方法应确保将所有实例的负载都分解为自动缩放测量和触发;不过,还有一个警告:

警告

如果负载平衡器由于任何其他原因(例如,由于其自​​身变得不正常)终止了一个按需实例,则不会自动将其替换为按需实例。因此,您需要分别监视和解释此事件,例如,通过再次临时激活按需启动配置。

祝好运!


2
这很有意义-出色的侦探工作。仍然存在断电风险,但是看来您已经发现了降低这种风险的几种新方法。希望有一天,我们将为ASG提供一个简单的复选框,“在服务器最低数量或以下的实例是按需实例。” 谢谢!
平台

1

我从这里的答案中汲取了灵感,提出了https://github.com/ashwanthkumar/matsya

它可以帮助您执行以下操作

  • 您始终需要一组机器来满足Hadoop / Mesos / YARN集群的要求
  • 您希望通过使用Spot节省资金,但又要回退到OD,因为您需要处理能力才能满足SLA
  • 在OD上一次切换回Spot以节省资金。

1
请注意,我们的政策的自我宣传
HBruijn

有人以良好的意愿分享了该答案,可能有用。如果您发现它是自我宣传,则可以删除答案。
2015年

如果我认为您的答案是实际的垃圾邮件,那么我已经将其标记为垃圾邮件,因此您无需删除您的帖子。产品促销链接更占优势,尽管这样的答案可能很有价值,但还是有一个不错的平衡,例如您这样的相对较新的用户通常都不知道。作为主持人,我现在想对您进行教育,在您跨越任何不存在的界线之前(这是一种不幸的重复模式)
HBruijn 2015年

说得通。感谢您对这项政策的注意。
ashwanthkumar 2015年

1

如果您只需要1个具有静态数量的按需实例的ASG,则应该可以使用以下方法:

  • 根据竞价型实例启动配置创建Auto Scaling组。

  • 在ASG上暂停Auto Scaling

  • 手动将按需实例(静态基本负载)添加到ASG,然后为这些实例打开实例保护。

  • 在ASG上恢复自动缩放

  • 默认的自动缩放策略现在将忽略按需实例(由于保护),并终止与按需实例数量相同的竞价型实例,以实现所需的组数量。任何扩展或扩展活动都只会启动或终止竞价型实例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.