什么是 Amazon EC2 Auto Scaling? - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

什么是 Amazon EC2 Auto Scaling?

Amazon EC2 Auto Scaling 帮助您确保具有正确数量的 Amazon EC2 实例以处理应用程序负载。您可创建 EC2 实例的集合,称为 Auto Scaling 组。您可以指定每个 Auto Scaling 组中最少的实例数量,Amazon EC2 Auto Scaling 会确保您的组中的实例永远不会低于这个数量。您可以指定每个 Auto Scaling 组中最大的实例数量,Amazon EC2 Auto Scaling 会确保您的组中的实例永远不会高于这个数量。如果您在创建组的时候或在创建组之后的任何时候指定了所需容量,Amazon EC2 Auto Scaling 会确保您的组一直具有此数量的实例。如果您指定了扩展策略,则 Amazon EC2 Auto Scaling 可以在您的应用程序的需求增加或降低时启动或终止实例。

例如,以下自动扩缩组的最小大小为四个实例,所需的容量为六个实例,最大大小为十二个实例。您制定的扩展策略是按照您指定的条件,在最大最小实例数范围内调整实例的数量。

VPC 内自动扩缩组的基本架构图。

Amazon EC2 Auto Scaling 的功能

凭借 Amazon EC2 Auto Scaling,您的 EC2 实例整理到自动扩缩组中,从而当作一个逻辑单位进行扩缩和管理。自动扩缩组将启动模板(或启动配置)用作其 EC2 实例的配置模板。

以下是 Amazon EC2 Auto Scaling 的主要功能:

监控正在运行的实例的运行状况

Amazon EC2 Auto Scaling 使用 EC2 运行状况检查自动监控实例的运行状况和可用性,并替换已终止或受损的实例以保持所需的容量。

自定义运行状况检查

除了内置的运行状况检查外,您还可以定义特定于您应用程序的自定义运行状况检查,以验证其是否按预期响应。如果某个实例未通过自定义运行状况检查,则会自动替换该实例以保持所需的容量。

跨可用区平衡容量

您可以为自动扩缩组指定多个可用区,Amazon EC2 Auto Scaling 会随着组的扩缩在各个可用区之间均匀地平衡您的实例。这可以保护您的应用程序免受单一位置故障的影响,从而提供高可用性和故障恢复能力。

多种实例类型和购买选项

在单个自动扩缩组内,您可以启动多种实例类型和购买选项(竞价型实例和按需型实例),从而能够通过竞价型实例使用量优化成本。您还可以将预留实例和节省计划折扣与组中的按需型实例结合使用,从而享受这些折扣。

自动替换竞价型实例

如果组包含竞价型实例,则当竞价型实例中断时,Amazon EC2 Auto Scaling 可以自动请求替换竞价型容量。通过容量再平衡功能,Amazon EC2 Auto Scaling 还可以监控和主动替换中断风险较高的竞价型实例。

负载均衡

您可以使用 Elastic Load Balancing 负载均衡和运行状况检查来确保将应用程序流量均匀分配给运行状况良好的实例。无论何时启动或终止实例,Amazon EC2 Auto Scaling 都会自动向负载均衡器注册和取消注册这些实例。

可扩展性

Amazon EC2 Auto Scaling 还提供了多种方法来扩缩自动扩缩组。使用自动扩缩可以增加容量以处理峰值负载,并在需求较低时移除容量,从而保持应用程序可用性并降低成本。您也可以根据需要手动调整自动扩缩组的大小。

实例刷新

实例刷新功能提供了一种机制,可在您更新 AMI 或启动模板时以滚动方式更新实例。您还可以使用分阶段方法(称为金丝雀部署)在一小部分实例上测试新 AMI 或启动模板,然后再将其推广到整个组。

生命周期钩子

生命周期挂钩对于定义在新实例启动时或实例终止之前调用的自定义操作非常有用。此功能对于构建事件驱动架构特别有用,但它也可以帮助您在实例的整个生命周期中对其进行管理。

支持有状态的工作负载

生命周期挂钩还提供了一种在关闭时保持状态的机制。为确保有状态应用程序的连续性,您还可以使用横向缩减保护或自定义终止策略来防止具有长时间运行进程的实例提前终止。

有关 Amazon EC2 Auto Scaling 优势的更多信息,请参阅 应用程序架构的 Auto Scaling 优势

Amazon EC2 Auto Scaling 的定价

Amazon EC2 Auto Scaling 不产生额外费用,因此可方便地试用它并了解它如何使您的 Amazon 架构获益。您仅需为使用的 Amazon 资源(例如 EC2 实例、EBS 卷和 CloudWatch 警报)付费。

开始使用

要开始使用,请学完创建您的第一个自动扩缩组教程,以创建一个自动扩缩组并了解它在该组中的实例终止时如何进行响应。

使用 Auto Scaling 组

您可以通过下面的任何一种方式来创建、访问和管理 Auto Scaling 组:

  • Amazon Web Services Management Console – 提供了可用来访问 Auto Scaling 组的 Web 界面。如果您已注册了 Amazon Web Services 账户,则可以通过登录到 Amazon Web Services Management Console,使用导航栏上的搜索框搜索 Auto Scaling groups(Auto Scaling 组),然后选择 Auto Scaling groups(Auto Scaling 组),从而访问您的 Auto Scaling 组。

  • Amazon Command Line Interface(Amazon CLI) – 提供了适用于各种Amazon Web Services 服务的命令,支持 Windows、macOS 和 Linux 等操作系统。要开始使用,请参阅 准备使用 Amazon CLI。有关更多信息,请参阅 Amazon CLI 命令参考中的弹性伸缩

  • Amazon Tools for Windows PowerShell – 为在 PowerShell 环境中编写脚本的用户提供大量 Amazon 产品的相关命令。要开始使用,请参阅 Amazon Tools for Windows PowerShell 用户指南。有关更多信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考

  • Amazon SDK – 提供了特定于语言的 API 操作,并简化了许多连接详细信息,例如计算签名、处理请求重试和处理错误。有关更多信息,请参阅 Amazon 软件开发工具包

  • 查询 API – 提供了您使用 HTTPS 请求调用的低级别 API 操作。使用查询 API 是访问 Amazon Web Services 服务 的最直接方式。但它需要您的应用程序处理低级别的详细信息,例如生成哈希值以签署请求以及处理错误。有关更多信息,请参阅 Amazon EC2 Auto Scaling API 参考

  • Amazon CloudFormation – 支持使用 CloudFormation 模板创建自动扩缩组。有关更多信息,请参阅 使用 Amazon CloudFormation 创建 Auto Scaling 组

要通过编程方式连接到某个Amazon Web Services 服务,您需要使用终端节点。有关 Amazon EC2 Auto Scaling 调用的端点的信息,请参阅《中国区域的亚马逊云科技入门》中的 中国区域的亚马逊云科技服务端点和 ARN