Amazon 为 EC2 容器服务提供自动缩放能力

  • Kent Weare
  • 大愚若智

2016 年 6 月 13 日

话题:AWS架构

Amazon 最近宣布将为自家的 ECS 服务提供自动缩放能力。借此 Amazon ECS 服务将能自动扩展或收缩。当阈值度量指标超过或低于预期值时,将由 Amazon CloudWatch 警报触发缩放事件。

Amazon ECS 又名 EC2 容器服务,是一种针对 Amazon EC2 集群上运行的 Docker 容器提供的管理服务。Amazon 已可支持EC2 集群的自动缩放,但原本并不支持对 EC2 集群中运行的容器服务进行自动缩放。

自动缩放事件由 Amazon Cloud Watch 度量指标驱动。Amazon Cloud Watch 度量指标包括 CPU 使用率、数据传输率,或磁盘使用量。开发者还可以通过put-metric-data这一 AWS 命令或 PutMetricData Query API 将自己的度量指标发布至 CloudWatch。

例如用户可以对已部署并面临 CPU 压力的 Web 服务启用自动缩放。在该场景中,可以对容器进行扩展,随后一旦 CPU 压力恢复正常水平,开发者还可以配置缩放事件以减少容器数量,进而降低计算成本。

下图演示了在 AWS 管理控制台为容器和集群层面配置扩展和收缩的方法。在扩展和收缩时,缩放事件是通过 CPU 使用率级别触发的。

图片来源:https://aws.amazon.com/blogs/compute/automatic-scaling-with-amazon-ecs/

通过使用 Multi-AZ (Availability Zone) EC2 集群和Elastic Load Balancers,客户可以跨越多个 Availability Zones 对 EC2 集群和 EC2 容器服务进行缩放,这样可以实现进一步容错。Amazon Web Services 企业解决方案架构师 Mayank Thakkar介绍了设置自动缩放的过程:“可以使用 ECS 控制台、CLI,以及 SDK 创建可自动缩放的服务。用户只需要选择任务数量的所需值、最小值和最大值,并创建一个或多个缩放策略,其余工作就可以由 Service Auto Scaling 完成。服务调度器也可感知 Availability Zone,因此无需担心 ECS 任务跨越多个区域的情况。”

Thakkar 同时还提醒用户,EC2 集群的缩放需要比容器缩放更长的时间,同时建议采取下列措施以便将延迟降到最低:“在设置集群缩放策略时,可以通过一定的方式确保额外预留一定的集群容量,这样 ECS 服务就可以实现更快速的扩展,但取决于具体需求,与此同时某些 EC2 实例可能面临使用率不足的情况。”

Amazon 并非唯一能为容器服务提供自动缩放能力的公有云供应商。Microsoft Azure 也通过 Azure Virtual Machine Scale Sets (VMSS) 的形式提供了类似的功能。Microsoft 会通过Azure Insights Autoscale在无需预先供应虚拟机的情况下提供自动缩放能力。Azure VMSS 不仅可用于容器,而且可以用于“大计算”和大数据工作负载。Azure VMSS 通常可使用 ARM 模板部署,亦可使用 REST API、Powershell 或 Azure CLI 创建。

查看英文原文Amazon Brings Auto Scaling to EC2 Container Service
AWS架构