亚马逊AWS官方博客

新增功能 – 休眠您的 EC2 实例

如您所知,您可以轻松构建高度可扩展的 AWS 应用程序,从而根据需要启动新的 EC2 实例。虽然实例可以在几秒钟内启动并运行,但启动操作系统和应用程序可能需要相当长的时间。此外,缓存和其他以内存为中心的应用程序组件进行预加载或预热也可能需要一些时间(有时需要几十分钟)。如果您需要非常快速地增加容量,以上两个因素都会导致延迟,进而迫使您过度配置。

EC2 实例的休眠
今天,我们让您能够启动 EC2 实例,并对其进行所需设置,让其休眠,然后在需要时重新将其启用。休眠进程存储实例的内存状态及其私有和弹性 IP 地址,使其能够准确地从中断位置恢复。

此功能现已上市,您可以在运行 Amazon Linux 1 的新推出的 M3、M4、M5、C3、C4、C5、R3、R4 和 R5 实例上使用该功能(对 Amazon Linux 2 的支持正在开发中,稍后会推出)。它适用于按需实例和使用预留实例覆盖率运行的实例。

当指示实例进行休眠时,它会将内存中状态写入根 EBS 卷中的一个文件,然后(实际上)自我关闭。用于启动实例的 AMI 必须加密,实例的根 EBS 卷也必须加密。加密可确保在从内存复制到 EBS 卷时,对敏感数据进行适当保护。

当实例处于休眠状态时,您只需为 EBS 卷和附加的弹性 IP 地址付费;没有其他小时费用(如同任何其他停止的实例)。

休眠实际应用
为了查看此功能,我启动了一个 c4.large 实例,并选择休眠作为停止行为:

我还扩展了实例的根卷,将实例的内存大小增加 10 GB 以上,达到所需的大小:

我还创建了弹性 IP 地址,并将其与我的实例相关联,因为公共 IP 地址会发生变化。我的实例已启动并运行,现在可以检查正常运行时间:

然后我在 EC2 控制台中选择实例,并从实例状态菜单中选择停止 – 休眠(也可以使用 API 和 CLI 支持):

在数秒内,实例状态从正在运行变为正在停止,然后变为已停止

控制台提供有关转换的其他信息:

与实例的 SSH 连接断开,因为它不再运行:

稍后,当我准备好继续操作时,单击开始

这次,还是在几秒钟内,状态从已停止变为待处理,然后变为运行中,这时可以重新连接。然后,我可以使用正常运行时间来查看实例是否未重新启动,而是已从中断处继续:

如果我以交互方式使用此实例,可以使用会话管理器(如screentmuxmosh)来使其完全无缝。最有趣的休眠用例围绕长时间运行的进程和服务,这些进程和服务在准备好接受流量前,需要花费大量时间进行初始化,这可能是一个问题。

注意事项
正如您所看到的,休眠容易起来真的很简单,我希望您已经在考虑将某些方法应用到您的应用程序中。这里需要牢记几点:

实例类型 – 您可以对上述类型的新启动实例启用和使用休眠。

根卷大小 – 根卷的空闲空间必须等于实例上的 RAM 量才能成功休眠。

操作系统 – 最新的 Amazon Linux 1 AMI 配置为休眠状态,对其他许多版本的配置正在进行中。您需要使用其中一个 AMI 作为基础创建加密 AMI。您也可以按照我们的指示自定义和使用您自己的 AMI。

修改 – 您无法在休眠状态下修改实例的大小或类型,但您可以修改用户数据和 EBS 优化设置。

定价 – 当实例处于休眠状态时,您只需支付 EBS 存储和挂载到该实例的任何弹性 IP 地址的费用。

性能 – 休眠或恢复的时间取决于实例的内存大小、要保存的内存数据量以及根 EBS 卷的吞吐量。

即将推出 – 我们正在为 Amazon Linux 2、Ubuntu、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016 以及 Windows AMI 的 SQL Server 变体提供支持。

现已推出
此功能现已在美国东部(弗吉尼亚州北部、俄亥俄州)、美国西部(加利福尼亚州北部、俄勒冈州)、加拿大(中部)、南美洲(圣保罗)、亚太地区(孟买、首尔、新加坡、悉尼、 东京)和欧盟(法兰克福、伦敦、爱尔兰、巴黎)地区推出。

本篇作者

Jeff Barr

AWS 首席布道师; 2004年开始发布博客,此后便笔耕不辍。