有没有办法在 AWS 中使用自动缩放来停止不终止实例?
Is there a way to STOP not TERMINATE instances using auto-scaling in AWS?
我正在考虑使用 AWS 自动扩展功能根据各种性能指标(CPU 等)扩展和缩减我的基础设施。我知道如何设置;但是,我不喜欢实例在按比例缩小时被终止而不是停止。这意味着当我向上扩展时,我必须从头开始使用一个新实例并重新安装我的软件等。我宁愿只根据需要 start/stop 我的实例而不是 create/terminate。有办法吗?
不,无法停止 Auto Scaling 下的实例。当扩展策略触发删除实例时,Auto Scaling 将始终终止 实例。
但是,这里有一些想法来处理终止的概念...
选项 1:使用预配置的 AMI
您可以使用所需的软件、数据和设置配置 Amazon EC2 实例。然后,select 管理控制台中的 EC2 实例和 choose the Create Image action。这将创建一个新的 Amazon 机器映像 (AMI)。然后,您可以将 Auto Scaling 配置为在启动新实例时使用此 AMI。每个新实例都将包含完全相同的磁盘内容。
值得一提的是,EBS 从 AMI 启动的速度非常快。它没有将整个 AMI 复制到引导磁盘,而是将其复制到 "first access"。这意味着新实例可以立即启动,而不是等待整个磁盘被复制。
选项 2:使用启动(用户数据)脚本
每个 Amazon EC2 实例都有一个 User Data 字段,可从实例访问该字段。 A script can be passed through the User Data field,然后在实例启动时执行。该脚本可用于安装软件、下载数据和配置实例。
脚本可以做一些非常简单的事情,比如从源代码存储库下载配置脚本,然后执行脚本。这意味着机器配置可以集中管理和版本控制。想要更新您的应用程序?只需使用更新后的脚本启动一个新实例并丢弃旧实例(这比 "updating" 一个应用程序容易得多)。
选项 3:Add/Remove 个实例到 Auto Scaling 组
不是将扩展策略用于 Auto Scaling 组的 Launch/Terminate 个实例,而是可以 attach/detach 个特定实例。因此,您可以 'simulate' 自动缩放:
- 当你想缩小时,detach an instance from the Auto Scaling group,然后停止它。
- 当你想添加实例时,启动实例然后attach it to the Auto Scaling group。
这需要您自己的代码,但它非常简单(基本上是两次 API 调用)。您将负责跟踪 attach/detach.
的实例
您可以暂停扩展进程,请参阅此处的文档:
将该实例添加到受保护的扩展中,然后停止该实例,然后它不会删除您的实例,因为它具有受保护的扩展。
实际上,您有三个官方 AWS 选项来重启甚至停止属于 Auto Scaling 组的实例:
- 将实例置于待机状态
- 从组中分离实例
- 暂停健康检查进程
参考:https://aws.amazon.com/premiumsupport/knowledge-center/reboot-autoscaling-group-instance/
截至 2021 年 4 月:
选项 4:使用暖池和实例重用策略
By default, Amazon EC2 Auto Scaling terminates your instances when your Auto Scaling group scales in. Then, it launches new instances into the warm pool to replace the instances that were terminated.
If you want to return instances to the warm pool instead, you can specify an instance reuse policy. This lets you reuse instances that are already configured to serve application traffic.
这主要是自动化 。
文档:https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html
我正在考虑使用 AWS 自动扩展功能根据各种性能指标(CPU 等)扩展和缩减我的基础设施。我知道如何设置;但是,我不喜欢实例在按比例缩小时被终止而不是停止。这意味着当我向上扩展时,我必须从头开始使用一个新实例并重新安装我的软件等。我宁愿只根据需要 start/stop 我的实例而不是 create/terminate。有办法吗?
不,无法停止 Auto Scaling 下的实例。当扩展策略触发删除实例时,Auto Scaling 将始终终止 实例。
但是,这里有一些想法来处理终止的概念...
选项 1:使用预配置的 AMI
您可以使用所需的软件、数据和设置配置 Amazon EC2 实例。然后,select 管理控制台中的 EC2 实例和 choose the Create Image action。这将创建一个新的 Amazon 机器映像 (AMI)。然后,您可以将 Auto Scaling 配置为在启动新实例时使用此 AMI。每个新实例都将包含完全相同的磁盘内容。
值得一提的是,EBS 从 AMI 启动的速度非常快。它没有将整个 AMI 复制到引导磁盘,而是将其复制到 "first access"。这意味着新实例可以立即启动,而不是等待整个磁盘被复制。
选项 2:使用启动(用户数据)脚本
每个 Amazon EC2 实例都有一个 User Data 字段,可从实例访问该字段。 A script can be passed through the User Data field,然后在实例启动时执行。该脚本可用于安装软件、下载数据和配置实例。
脚本可以做一些非常简单的事情,比如从源代码存储库下载配置脚本,然后执行脚本。这意味着机器配置可以集中管理和版本控制。想要更新您的应用程序?只需使用更新后的脚本启动一个新实例并丢弃旧实例(这比 "updating" 一个应用程序容易得多)。
选项 3:Add/Remove 个实例到 Auto Scaling 组
不是将扩展策略用于 Auto Scaling 组的 Launch/Terminate 个实例,而是可以 attach/detach 个特定实例。因此,您可以 'simulate' 自动缩放:
- 当你想缩小时,detach an instance from the Auto Scaling group,然后停止它。
- 当你想添加实例时,启动实例然后attach it to the Auto Scaling group。
这需要您自己的代码,但它非常简单(基本上是两次 API 调用)。您将负责跟踪 attach/detach.
的实例您可以暂停扩展进程,请参阅此处的文档:
将该实例添加到受保护的扩展中,然后停止该实例,然后它不会删除您的实例,因为它具有受保护的扩展。
实际上,您有三个官方 AWS 选项来重启甚至停止属于 Auto Scaling 组的实例:
- 将实例置于待机状态
- 从组中分离实例
- 暂停健康检查进程
参考:https://aws.amazon.com/premiumsupport/knowledge-center/reboot-autoscaling-group-instance/
截至 2021 年 4 月:
选项 4:使用暖池和实例重用策略
By default, Amazon EC2 Auto Scaling terminates your instances when your Auto Scaling group scales in. Then, it launches new instances into the warm pool to replace the instances that were terminated.
If you want to return instances to the warm pool instead, you can specify an instance reuse policy. This lets you reuse instances that are already configured to serve application traffic.
这主要是自动化
文档:https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html