AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

AWS ECS Cluster Auto Scaling 现已全面推出

  • 2019-12-11
  • 本文字数:3444 字

    阅读完需:约 11 分钟

AWS ECS Cluster Auto Scaling 现已全面推出

今天,我们推出了 AWS ECS Cluster Auto Scaling。这项新功能通过提高集群外扩的速度和可靠性,控制集群中维护的备用容量的数量以及自动管理内缩集群上的实例终止来改善您的集群扩展体验。


要启用 ECS Cluster Auto Scaling,您需要创建名为“容量提供程序”的新 ECS 资源类型。容量提供程序可以与 EC2 Auto Scaling 组 (ASG) 关联。将 ECS 容量提供程序与 ASG 关联并将容量提供程序添加到 ECS 集群后,该集群现在可以通过使用 ECS 的两个新功能来自动扩展 ASG:


  1. 托管扩展在 ASG 上具有自动创建的扩展策略,以及该扩展策略使用的新扩展指标(容量提供程序预留);和

  2. 托管实例终止保护会在发生内缩时,在 ASG 中实现容器感知的实例终止。


这些新功能将使客户可以更好地控制 Amazon ECS 集群进行内缩和外扩的时机及方式。


容量提供程序预留


新的指标称为容量提供程序预留,它衡量集群中所有 ECS 工作负载所需的集群资源的总百分比,包括现有工作负载、新工作负载以及工作负载大小的变化。与使用 CPU 或内存预留指标时相比,此指标使扩展策略可以更快更可靠地进行外扩。客户还可以使用此指标在集群中保留备用容量。保留备用容量可使客户在需要时立即运行更多容器,而无需等待新实例启动。


托管实例终止保护


通过实例终止保护,ECS 可以控制在内缩时允许扩展策略终止哪些实例,以最大程度地减少正在运行的容器的中断。这些改进可帮助客户降低运营成本,并提高在 ECS 上运行的容器工作负载的可用性。


**此功能如何帮助客户


**在 ECS 上运行可扩展容器工作负载的客户经常使用基于指标的扩展策略来自动扩展其 ECS 集群。这些扩展策略使用通用指标(例如平均集群 CPU 和内存预留百分比)来确定策略应何时添加或删除集群实例。


运行单个工作负载或缓慢外扩的多个工作负载的集群通常可以很好地与此类策略配合使用。但是,在同一集群中运行多个工作负载或快速外扩的多个工作负载的客户很可能遇到集群扩展问题。理想情况下,当前集群无法容纳工作负载大小的增加时应触发将集群外扩至更大规模的策略。


因为现有指标不是特定于容器的,并且仅考虑已在使用的资源,所以此过程可能缓慢且不可靠。此外,由于扩展策略不知道容器在集群中的何处运行,因此在进行内缩时它可能会不必要地终止容器。这些问题可能会降低容器工作负载的可用性。过度预置、定制工具或手动干预等缓解措施通常会带来高昂的运营成本。


**论述已明,着手施行


**为了更清楚地了解这些新功能,我觉得可以举个例子。


Amazon ECS Cluster Auto Scaling 可以使用 AWS 管理控制台、AWS CLI 或 Amazon ECS API 进行设置和配置。 我将打开终端并创建集群。


首先,我创建两个文件。第一个文件名为 demo-launchconfig.json,它定义了构成我的 Auto Scaling 组的 Amazon Elastic Compute Cloud (EC2) 实例的实例配置。


Json


{    "LaunchConfigurationName": "demo-launchconfig",    "ImageId": "ami-01f07b3fa86406c96",    "SecurityGroups": [        "sg-0fa5be8c3749f3aa0"    ],    "InstanceType": "t2.micro",    "BlockDeviceMappings": [        {            "DeviceName": "/dev/xvdcz",            "Ebs": {                "VolumeSize": 22,                "VolumeType": "gp2",                "DeleteOnTermination": true,                "Encrypted": true                }        }    ],    "InstanceMonitoring": {        "Enabled": false    },    "IamInstanceProfile": "arn:aws:iam::365489315573:role/ecsInstanceRole",    "AssociatePublicIpAddress": true}
复制代码


第二个文件是 demo-userdata.txt,它包含将添加到每个 EC2 实例的用户数据。文件中包含的 ECS_CLUSTER 名称必须与我们将要创建的集群的名称相同。此示例中,其名称为 demo-news-blog-scale


Bash


#!/bin/bashecho ECS_CLUSTER=demo-news-blog-scale >> /etc/ecs/ecs.config
复制代码


使用 create-launch-configuration 命令,将创建的两个文件作为输入传递,这会创建将在 Auto Scaling 组中使用的启动配置。


Bash


aws autoscaling create-launch-configuration --cli-input-json file://demo-launchconfig.json --user-data file://demo-userdata.txt
复制代码


接下来,我要创建名为 demo-asgconfig.json 的文件并定义我的要求。


Json


{    "LaunchConfigurationName": "demo-launchconfig",    "MinSize": 0,    "MaxSize": 100,    "DesiredCapacity": 0,    "DefaultCooldown": 300,    "AvailabilityZones": [         "ap-southeast-1c" ],    "HealthCheckType": "EC2",    "HealthCheckGracePeriod": 300,    "VPCZoneIdentifier": "subnet-abcd1234",    "TerminationPolicies": [         "DEFAULT"     ],    "NewInstancesProtectedFromScaleIn": true,    "ServiceLinkedRoleARN": "arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"}
复制代码


然后,我使用 create-auto-scaling-group 命令,以上述文件作为输入来创建名为 demo-asg 的 Auto Scaling 组。


Bash


aws autoscaling create-auto-scaling-group --auto-scaling-group-name demo-asg --cli-input-json file://demo-asgconfig.json
复制代码


我现在可以创建容量提供程序了。我创建一个名为 demo-capacityprovider.json 的文件,另外很重要的一点是,要将 managedTerminationProtection 属性设置为 ENABLED


Json


{    "name": "demo-capacityprovider", "autoScalingGroupProvider": {    "autoScalingGroupArn": "arn:aws:autoscaling:ap-southeast-1:365489315573:autoScalingGroup:e9c2f0c4-9a4c-428e-b81e-b22411a52954:autoScalingGroupName/demo-ASG",            "managedScaling": {                "status": "ENABLED",                "targetCapacity": 100,                "minimumScalingStepSize": 1,                "maximumScalingStepSize": 100            },            "managedTerminationProtection": "ENABLED"    }}
复制代码


然后,我使用新的 create-capacity-provider 命令以文件作为输入来创建提供程序。


Bash


aws ecs create-capacity-provider --cli-input-json file://demo-capacityprovider.json
复制代码


现在所有组件都已创建,我终于可以创建集群了。我添加容量提供程序,并将集群的默认容量提供程序设置为 demo-capacityprovider


Bash


aws ecs create-cluster --cluster-name demo-news-blog-scale --capacity-providers demo-capacityprovider --default-capacity-provider-strategy<br />capacityProvider=demo-capacityprovider,weight=1
复制代码


现在,我需要等待集群进入活动状态。我使用以下命令来获取有关集群的详细信息。


Bash


aws ecs describe-clusters --clusters demo-news-blog-scale --include ATTACHMENTS
复制代码


现在集群已经建立,我可以注册一些任务。首先,我需要创建一个任务定义。以下是我创建的名为 demo-sleep-taskdef.json 的文件。它所做的只是定义一个永久休眠的容器。


Json


{    "family": "demo-sleep-taskdef",    "containerDefinitions": [        {            "name": "sleep",            "image": "amazonlinux:2",            "memory": 20,            "essential": true,            "command": [                "sh",                "-c",                "sleep infinity"]         }],    "requiresCompatibilities": [        "EC2"] }
复制代码


然后,我使用 register-task-definition 命令注册任务定义。


Bash


aws ecs register-task-definition --cli-input-json file://demo-sleep-taskdef.json
复制代码


最后,我可以创建任务。在本示例中,我基于刚刚注册的 demo-sleep-taskdef:1 定义创建了 5 个任务。


Bash


aws ecs run-task --cluster demo-news-blog-scale --count 5 --task-definition demo-sleep-taskdef:1
复制代码


现在,由于实例尚不可用来运行任务,因此任务进入预置状态,这意味着它们正在等待容量以变为可用。我配置的容量提供程序现在将外扩 Auto Scaling 组,以便实例启动并加入集群 – 此时,任务将放置在实例上。这提供了一种前所未有的真正“从零开始缩放”的功能。


**注意事项


**AWS ECS Cluster Auto Scaling 现已在可使用 Amazon ECSAWS Auto Scaling 的所有区域推出 – 请查阅区域表以获取最新列表。


祝扩展顺利!


— Martin


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/aws-ecs-cluster-auto-scaling-is-now-generally-available/


2019-12-11 15:32759

评论

发布
暂无评论
发现更多内容

对话在行人 | 微乘科技:升级数智底座,从管控向“管理+服务”转变

用友BIP

2023全球商业创新大会 对话在行人

Vulkan 同步

江湖修行

android OpenGL ES 渲染 移动端开发 vulkan

浅谈东数西算战略中,发挥算网大脑作用的4个关键点

鲸品堂

东数西算 算力网络 企业号10月PK榜

博睿数据获评2023中国智能运维领域“最具商业合作价值企业”

博睿数据

可观测平台 智能运维AIOps

林旅强 | AI+开源时代 - 开发者与治理者的机遇与挑战

开源雨林

人工智能 开源 开发者 超级个体

记一次MySQL5初始化被kill的问题排查 | 京东云技术团队

京东科技开发者

MySQL 数据库 企业号10月PK榜

驱动数字化转型,Doris Summit Asia 2023 智慧金融与政企论坛精彩预告!

SelectDB

数据库 大数据 数据分析 实时数仓 apache doris

火山引擎ByteHouse:双十一即将到来,如何用数据分析提升电商平台销售转化?

字节跳动数据平台

大数据 数据仓库 云原生 电商

RazorSQL for Mac注册激活版(多功能SQL数据库管理器)支持M1

iMac小白

数据库软件 RazorSQL下载 RazorSQL破解版

李彦宏,AI原生应用的秋收时刻

脑极体

AI

DHorse v1.4.2 发布,基于 k8s 的发布平台

tiandizhiguai

文件夹数据同步 Sync Folders Pro中文免激活版

mac大玩家j

Mac软件 同步工具 备份同步软件

财政部办公厅发布公立医院内控建设征求意见函 信息化成为内控建设重要抓手

用友BIP

数智医疗

太强了!三种方案优化 2000w 数据大表!

互联网工科生

数据库

水务行业管理与服务数智化升级,用友Fast by BIP在行!

用友BIP

Fast by BIP 水务行业

消灭指标二义性!提效30%的指标管理如何炼成?

奇点云

奇点云 数据云操作系统 指标标签

设计模式之策略模式:让你的代码灵活应对不同的算法 | 京东云技术团队

京东科技开发者

算法 设计模式 策略模式 企业号10月PK榜

解析设计模式与设计原则:构建可维护性和可扩展性代码的重要性

华为云开发者联盟

开发 华为云 华为云开发者联盟

图文详解!带你认识 ancert:硬件兼容性标准实现工具!| 龙蜥技术

OpenAnolis小助手

开源 操作系统 龙蜥社区 Ancert 硬件兼容性

叮!你有一份1024程序员节的通关秘籍待查收!

飞桨PaddlePaddle

1024程序员节

AI原生应用速通指南

百度Geek说

App 百度文库 AIGC 企业号10月PK榜

Bonree ONE 秋季产品发布会上新功能提前剧透!

博睿数据

可观测性 智能运维

sip中继的内容介绍

cts喜友科技

SIP sip中继

用友Fast by BIP助力公交企业降本增效,数智运营!

用友BIP

浅谈分布式事务及解决方案 | 京东物流技术团队

京东科技开发者

数据库 分布式 分布式事务 事务 企业号10月PK榜

如何使用GaussDB(DWS)的本地临时表进行数据处理

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 本地临时表

Opencv入门篇:简介与基本使用 | 京东物流技术团队

京东科技开发者

Python OpenCV 计算机视觉 企业号10月PK榜

记录TritonServer部署多模型到多GPU踩坑 | 京东云技术团队

京东科技开发者

人工智能 gpu 企业号10月PK榜

AWS ECS Cluster Auto Scaling 现已全面推出_行业深度_AWS_InfoQ精选文章