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 创建。
评论