确保停止EC2实例

问题描述:

我想保持停止的Amazon EC2实例池池的可用性。只要金额低于阈值,我希望能够创建新的实例,然后在运行后立即停止。仅在亚马逊基础设施内是否可能?确保停止EC2实例

+0

您能否提供有关*为什么*您希望这样做的信息?实现目标可能有更好的方法(例如,使用Auto Scaling在需要时启动新实例)。 –

+0

启动停止实例的时间比创建新实例的时间短得多。 –

+0

那么,你正在寻找一种快速向外扩展的方式?您是否考虑过[Amazon EC2容器服务](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)?它可以在几秒钟内部署容器(例如与您的应用程序)。你目前遇到什么困难,导致实例发布太慢?启动实例时是否使用完全配置的AMI?你使用的是Linux还是Windows? –

你也可以创建亚马逊的EC2实例,然后阻止他们,使可用以后开始。正如你指出的那样,这有利于实例的启动速度快于启动新实例。

没有协助此自动化方法。你可能不得不编写一个解决方案,具有以下功能:

  • 监视器停止实例的数量
  • 如果数量低于阈值,推出一个新的实例
  • 新的实例可自动地停止本身通过用户数据(经由一个关断命令给操作系统,或经由StopInstances呼叫到EC2)

有些事情你必须考虑:

  • 什么触发监控?它会按计划吗?
  • ,会启动新的实例将需要等待新实例启动&停止启动任何更多的实例
  • 需要他们什么时候开始实例之前的任务是什么?
  • 是否有实例获得已停止何时不再需要它们?

的更好的选择是使用自动缩放,基于一些度量的向外扩展的报警,说你的舰队正忙,和规模的报警删除实例时,船队不忙。一旦通过阈值(例如80%CPU),可以设置向外扩展警报,以便在事情100%忙碌之前允许新实例启动。启动新实例和启动现有实例之间的时间差异很小(至少对于Linux)。

如果您使用的是Windows,启动新实例时的最大延迟时间是由于Sysprep,这使得“干净”机器具有新的唯一ID。您可以通过创建没有Sysprep的AMI来进行欺骗,从而启动速度更快。

+0

谢谢@Johnson Rotenstein。我们目前有一个等待状态改变的编码解决方案。我不知道用户数据可以用于此目的,我当然不知道Sysprep。优秀的答案。 –

也许我误解你的目标...你不能“确保可用性”的实例没有付钱。

实例处于停止状态都只是实际并不存在的任何地方的逻辑实体 - 硬件分配上发射,释放上停止,重新分配下次启动。在不太可能的情况下,如果给定实例类的可用区域耗尽了容量,则该类的已停止实例将无法启动,因为没有可供部署的硬件。

为了确保实例始终可用,必须保留它们,你必须指定一个特定的可用性区的保留:

亚马逊EC2预留实例提供显著的折扣(高达75% )与按需定价相比较,并在特定的可用区中使用时提供容量预留[强调]

https://aws.amazon.com/ec2/pricing/reserved-instances/

在大多数计划,预留实例支付相同速度是否正在运行与否,因此会有小点阻止他们。

+0

你误解了这个问题。我想为每个区域保持一定数量的处于“停止”状态的实例。假设这个数字是10.每当其中一个实例“启动”时,我想创建另一个实例,一旦它“运行”就会停止。而已。 –

+0

该计划如何在您需要时启动实例更有用/有用?该战略的好处是什么? –

+0

我们现在要脱离主题,但我会放纵。自动缩放时,启动停止实例所花费的时间要比创建等效实例所用的时间短得多。 –