为 Amazon EC2 服务自动扩缩创建预测式扩缩策略
创建步进扩缩策略,以便 Amazon ECS 根据历史数据自动增加或减少服务运行的任务数。
注意
一项新服务需要提供至少 24 小时的数据,然后才能生成预测。
-
除了用于创建和更新服务的标准 IAM 权限之外,您还需要额外权限。有关更多信息,请参阅 Amazon ECS 服务自动扩缩所需的 IAM 权限。
-
请确定要用于策略的指标。可供使用的指标如下:
-
ECSServiceAverageCPUUtilization:服务应使用的平均 CPU 使用率。
-
ECSServiceAverageMemoryUtilization:服务应使用的平均内存使用率。
-
ALBRequestCountPerTarget:任务理想情况下应接收的平均每分钟请求数。
您也可以使用自定义指标。您需要定义以下值:
-
负载:该指标应准确代表应用程序的全部负载,并且是应用程序中对扩展最重要的方面。
-
扩缩指标:衡量应用程序理想利用率的最佳预测指标。
-
-
在 Clusters(集群)页面上,选择集群。
-
在“集群详细信息”页面,找到服务部分,然后选择服务。
此时系统会显示服务详细信息页面。
-
选择设置任务数。
-
在 Amazon ECS 服务任务计数下,选择使用自动扩缩。
此时将显示任务计数部分。
-
对于最小任务数,输入供服务自动扩缩使用的任务数的下限。所需计数不会低于此计数。
-
对于最大值,输入供服务自动扩缩使用的任务数的上限。所需计数不会高于此计数。
-
选择保存。
此时将显示策略页面。
-
-
选择创建扩缩策略。
此时将显示创建策略页面。
-
对于扩缩策略类型,选择预测式扩缩。
-
对于 Policy name(策略名称),请输入策略的名称。
-
对于指标对,从选项列表中选择指标。
如果您选择每目标的 Application Load Balancer 请求计数,请在目标组中选择目标组。每目标的应用程序负载均衡器请求计数仅在您已为服务附加应用程序负载均衡器目标组时才支持。
如果您选择自定义指标对,请从负载指标和扩缩指标的列表中选择单个指标。
-
在目标利用率中,输入 Amazon ECS 应保留的任务百分比的目标值。服务自动扩缩可横向扩展您的容量直到平均利用率达到目标利用率,或直到达到您指定的最大任务数。
-
选择创建扩缩策略。
使用 AWS CLI 按如下方式为 Amazon ECS 服务配置预测式扩缩策略。将每个用户输入占位符
替换为您自己的信息。
有关您可以指定的 CloudWatch 指标的更多信息,请参阅《Amazon EC2 Auto Scaling API Reference》中的 PredictiveScalingMetricSpecification。
示例 1:具有预定义内存的预测式扩缩策略。
以下是具有预定义内存配置的策略的示例。
cat policy.json { "MetricSpecifications": [ { "TargetValue":
40
, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceMemoryUtilization
" } } ], "SchedulingBufferTime":3600
, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
以下示例演示了如何通过运行指定配置文件的 put-scaling-policy 命令来创建策略。
aws aas put-scaling-policy \ --service-namespace
ecs
\ --regionus-east-1
\ --policy-namepredictive-scaling-policy-example
\ --resource-idservice/MyCluster/test
\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
如果成功,该命令会返回策略的 ARN。
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}
示例 2:具有预定义 CPU 的预测式扩缩策略。
以下是具有预定义 CPU 配置的策略的示例。
cat policy.json { "MetricSpecifications": [ { "TargetValue":
0.00000004
, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceCPUUtilization
" } } ], "SchedulingBufferTime":3600
, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
以下示例演示了如何通过运行指定配置文件的 put-scaling-policy 命令来创建策略。
aws aas put-scaling-policy \ --service-namespace
ecs
\ --regionus-east-1
\ --policy-namepredictive-scaling-policy-example
\ --resource-idservice/MyCluster/test
\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
如果成功,该命令会返回策略的 ARN。
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}