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