Amazon web services 在AWS中有没有一种方法可以停止使用自动缩放而不是终止实例?

Amazon web services 在AWS中有没有一种方法可以停止使用自动缩放而不是终止实例?,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我正在考虑使用AWS自动伸缩功能,根据各种性能指标(CPU等)上下伸缩我的基础设施。我了解如何设置此功能;但是,我不喜欢实例在缩小时终止而不是停止。这意味着,当我向上扩展时,我必须从头开始使用一个新实例并重新安装我的软件,等等。我宁愿根据需要启动/停止实例,而不是创建/终止实例。有什么方法可以做到这一点吗?没有,不可能在自动缩放下停止实例。当缩放策略触发删除实例时,自动缩放将始终终止该实例 然而,这里有一些想法来处理终止的概念 选项1:使用预配置的AMI 您可以使用所需的软件、数据和设置配置Am

我正在考虑使用AWS自动伸缩功能,根据各种性能指标(CPU等)上下伸缩我的基础设施。我了解如何设置此功能;但是,我不喜欢实例在缩小时终止而不是停止。这意味着,当我向上扩展时,我必须从头开始使用一个新实例并重新安装我的软件,等等。我宁愿根据需要启动/停止实例,而不是创建/终止实例。有什么方法可以做到这一点吗?

没有,不可能在自动缩放下停止实例。当缩放策略触发删除实例时,自动缩放将始终终止该实例

然而,这里有一些想法来处理终止的概念

选项1:使用预配置的AMI

您可以使用所需的软件、数据和设置配置AmazonEC2实例。然后,在管理控制台中选择EC2实例并单击。这将创建一个新的亚马逊机器映像(AMI)。然后,您可以配置自动缩放以在启动新实例时使用此AMI。每个新实例将包含完全相同的磁盘内容

值得一提的是,EBS从AMI启动得非常快。它不是将整个AMI复制到引导磁盘,而是在“首次访问”时将其复制到另一个磁盘。这意味着新实例可以立即启动,而不是等待整个磁盘被复制

选项2:使用启动(用户数据)脚本

每个Amazon EC2实例都有一个用户数据字段,可以从该实例访问该字段,然后在实例启动时执行。该脚本可用于安装软件、下载数据和配置实例

脚本可以做一些非常简单的事情,比如从源代码存储库下载配置脚本,然后执行脚本。这意味着机器配置可以集中管理和版本控制。要更新你的应用程序吗?只需使用更新后的脚本启动一个新实例,然后扔掉旧实例(这比“更新”应用程序容易得多)

选项3:向自动缩放组添加/删除实例

可以附加/分离特定实例,而不是使用缩放策略启动/终止自动缩放组的实例。因此,您可以“模拟”自动缩放:

  • 当你想缩小规模时,停止它
  • 如果要添加实例,请启动该实例

这需要您自己的代码,但非常简单(基本上是两个API调用)。您将负责跟踪要附加/分离的实例。

您可以暂停缩放过程,请参阅此处的文档:


将该实例添加到保护中的缩放中,然后停止该实例,那么它将不会删除您的实例,因为它在保护中具有缩放功能。

实际上,您有三个官方AWS选项可以重新启动甚至停止属于自动缩放组的实例:

  • 将实例置于待机状态
  • 从组中分离实例
  • 暂停运行状况检查过程

参考:

自动缩放的大多数用例都遵循以下原则:所需的软件要么在启动时引导(通过自动化安装),要么预烘焙到源AMI中。听起来您可能使用不正确?是的,我可以在启动时引导它,但考虑到需要完成的软件和配置数量,这将需要几分钟(我已经测试过)。我想我可以用所有已经配置好的软件构建自己的AMI。我还没有试过。@user3712321使用所有配置构建您自己的AMI是自动缩放的标准实践,除非您使用的是Elastic Beanstalk-即使如此,这也是一个很好的起点。谢谢John。在我的情况下,选项2是不现实的,因为启动时需要为每个实例执行大量的软件和配置。但是,预配置的AMI似乎可以工作。这个答案是无效的,因为它是4年前的,所以请检查Noah的另一个答案。仅供参考hashicorp的packer使烘焙自己的AMI非常容易,然后可以将其集成到构建更改源中,jenkins提出了一个新的概念:暂停缩放过程指的是暂停AWS操作,如上面的AWS链接所述。它不会挂起EC2。以上答案仍然正确您无法让AWS自动缩放停止而不是终止您的实例。@AstroTom如果您暂停终止缩放过程,则您可以停止实例而不终止它。如果您的备用ec2实例失败,autoscaling会创建新实例吗?