aws::applicationautoscaling的cdk构造库
aws-cdk.aws-applicationautoscaling的Python项目详细描述
AWS自动缩放构造库
application autoscaling用于为所有 扩展EC2实例以外的服务。例如,您将使用这个 扩展ecs任务、dynamodb容量、现货车队规模等。
作为cdk用户,您可能不必与这个库交互 直接;相反,其他构造库将使用它来 为自己的结构提供自动缩放功能。
本文档将描述一般的自动缩放功能和概念; 您的特定服务可能只提供其中的一部分。
自动缩放基础
资源可以提供一个或多个属性来自动缩放,通常 表示基础服务的某个容量维度。例如, dynamodb表提供了 表本身及其全局二级索引,ECS服务提供 rds aurora集群自动调整其任务计数,提供对其 副本计数,等等。
为属性启用自动缩放时,可以指定最小值和 容量的最大值。自动调整响应度量的策略 永远不会高于或低于指示的容量(但已计划 缩放操作可能,请参见下文)。
有三种方法可以扩展您的容量:
- 响应度量(也称为步骤缩放);例如,您 如果集群中的CPU使用率开始上升,可能需要缩小规模, 当它再次下降时放大。
- 尝试在给定值周围保留某个度量 目标跟踪缩放);您可能希望自动缩放到 保持你的CPU使用率在50%左右。
- 按计划执行;您可能需要围绕流量组织缩放 你所期望的流量,通过在早上扩展和在 傍晚。
自动缩放的一般模式如下:
constcapacity=resource.autoScaleCapacity({minCapacity: 5,maxCapacity: 100});// Enable a type of metric scaling and/or schedule scalingcapacity.scaleOnMetric(...);capacity.scaleToTrackMetric(...);capacity.scaleOnSchedule(...);
阶跃标度
这种类型的缩放以确定的步骤进行缩放 配置,以响应度量值。例如,您的扩展策略 要根据CPU使用情况进行扩展,可能如下所示:
Scaling -1 (no change) +1 +3
│ │ │ │ │
├────────┼───────────────────────┼────────┼────────┤
│ │ │ │ │
CPU usage 0% 10% 50% 70% 100%
(注意,这不一定是推荐的扩展策略,但是 一个可能的。您必须确定哪些阈值适合您)。
您可以这样配置:
capacity.scaleOnMetric('ScaleToCPU',{metric: service.metricCpuUtilization(),scalingSteps:[{upper: 10,change:-1},{lower: 50,change:+1},{lower: 70,change:+3},],// Change this to AdjustmentType.PercentChangeInCapacity to interpret the// 'change' numbers before as percentages instead of capacity counts.adjustmentType: autoscaling.AdjustmentType.CHANGE_IN_CAPACITY,});
autoscaling构造库将创建所需的cloudwatch警报和 为您自动调整策略。
目标跟踪缩放
这种类型的缩放缩放是为了保持度量(通常 表示利用率)。这种缩放是 通常,服务严重依赖于您可以使用的度量,因此 不同的服务在这里有不同的方法来建立目标跟踪 缩放比例。
以下示例配置dynamodb表的读取容量 大约60%的利用率:
constreadCapacity=table.autosScaleReadCapacity({minCapacity: 10,maxCapacity: 1000});readCapacity.scaleOnUtilization({targetUtilizationPercent: 60});
计划缩放
这种缩放用于根据时间更改容量。它工作
通过改变属性的minCapacity
和maxCapacity
等
可用于两个目的:
- 通过设置
minCapacity
高或 低的maxCapacity
。 - 仍然允许常规的缩放操作完成其工作,但限制
它们可以扩展的范围(通过设置
minCapacity
和maxCapacity
但随着时间的推移,它们的范围会改变)。
可以使用以下计划表达式:
at(yyyy-mm-ddThh:mm:ss)
——在特定时间点缩放rate(value unit)
——每分钟/小时/天缩放一次cron(mm hh dd mm dow)
——按任意计划缩放
其中,cron表达式是最有用的,但也是最有用的
很复杂。计划表示为cron exp表达。Schedule
类有一个帮助构建cron表达式的cron
方法。
下面的例子在早上扩展舰队,让自然 夜间缩放接管:
constcapacity=resource.autoScaleCapacity({minCapacity: 1,maxCapacity: 50,});capacity.scaleOnSchedule('PrescaleInTheMorning',{schedule: autoscaling.Schedule.cron({hour:'8',minute:'0'}),minCapacity: 20,});capacity.scaleOnSchedule('AllowDownscalingAtNight',{schedule: autoscaling.Schedule.cron({hour:'20',minute:'0'}),minCapacity: 1});