扩展策略:目标跟踪与分步扩展
配置目标跟踪以维持 CPU 利用率目标,并配置分步扩展以响应 CloudWatch 警报阈值。
扩展策略:目标跟踪与分步扩展 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
扩缩容策略为何存在
负载恒定时,静态期望容量可以正常工作,但现实中的流量会不断波动。扩缩容策略允许 Auto Scaling Group 根据指标自动调整期望容量。AWS 提供三种主要的动态策略类型:目标跟踪、阶梯扩缩容和简单扩缩容。对于 SAA-C03 考试,目标跟踪和阶梯扩缩容是最需要理解的两种策略。
目标跟踪扩缩容详解
目标跟踪扩缩容的工作方式类似恒温器:您指定一个指标和目标值,AWS 会自动计算需要添加或移除的实例数量,使指标保持在该目标值。例如,如果将平均 CPU 利用率目标设为 50%,而利用率升至 80%,ASG 就会添加足够的实例,使 CPU 利用率恢复到 50%。AWS 会为您管理扩容和缩容操作。
aws autoscaling put-scaling-policy \
--auto-scaling-group-name 'MyAppASG' \
--policy-name 'TargetTrackingCPU50' \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ASGAverageCPUUtilization"
},
"TargetValue": 50.0
}'目标跟踪的预定义指标与自定义指标
目标跟踪开箱即用地支持多种预定义指标:ASGAverageCPUUtilization、ASGAverageNetworkIn、ASGAverageNetworkOut,以及 ALB 专用的 ALBRequestCountPerTarget。对于特定于应用的 KPI(队列深度、活动连接数、自定义业务指标),您可以提供自定义 CloudWatch 指标。自定义指标可以让您更精细地控制哪些因素驱动扩缩容决策。
目标跟踪的冷却期
扩容事件发生后,ASG 会等待冷却期(默认 300 秒),然后才评估下一次扩容。这会给新启动的实例留出开始处理流量的时间,使指标能够稳定下来。同样,缩容冷却期可以防止在增加容量后立即过早终止实例。对于目标跟踪,AWS 还建议使用预热期,这样新实例在完全初始化之前就不会使指标产生偏差。
阶梯扩缩容详解
阶梯扩缩容会响应 CloudWatch 警报,根据指标超出阈值的幅度添加或移除特定数量的实例。您可以定义多个阶梯调整——每个阶梯覆盖一个指标范围,并指定一次容量变更。例如:CPU 为 60%–70% 时添加 1 个实例;CPU 为 70%–90% 时添加 3 个实例;CPU 超过 90% 时添加 5 个实例。这样可以针对不同的负载水平进行分级且成比例的响应。
创建阶梯扩缩容策略
阶梯扩缩容需要预先存在的 CloudWatch 警报。该警报会监控一个指标,并在跨过阈值时转换到 ALARM 状态。扩缩容策略随后会根据指标值相对于警报阈值的情况,使用引用的阶梯调整。您可以配置调整类型为 ChangeInCapacity(添加 N 个)、ExactCapacity(设置为 N 个)或 PercentChangeInCapacity(按 N% 扩缩容)。
# First create a CloudWatch alarm
aws cloudwatch put-metric-alarm \
--alarm-name 'HighCPU' \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 60 \
--threshold 60 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=AutoScalingGroupName,Value=MyAppASG \
--evaluation-periods 2 \
--alarm-actions 'arn:aws:autoscaling:us-east-1:123456789:scalingPolicy:...'阶梯调整配置
每个阶梯调整都有一个 MetricIntervalLowerBound,以及可选的 MetricIntervalUpperBound。这些边界都是相对于警报阈值的。如果警报阈值为 60% CPU:当 CPU 为 60%–70% 时,LowerBound=0, UpperBound=10 会触发;当 CPU 超过 70% 时,LowerBound=10, UpperBound=null 会触发。这种分层方式可以确保遇到大幅流量峰值时立即大幅增加容量,而不必等待多个警报周期。
# Step scaling policy with two steps
{
'StepAdjustments': [
{
'MetricIntervalLowerBound': 0,
'MetricIntervalUpperBound': 10,
'ScalingAdjustment': 2
},
{
'MetricIntervalLowerBound': 10,
'ScalingAdjustment': 5
}
],
'AdjustmentType': 'ChangeInCapacity'
}简单扩缩容:较早的替代方案
简单扩缩容是阶梯扩缩容的前身。与阶梯扩缩容一样,它需要 CloudWatch 警报,但触发后会添加或移除固定数量的实例,然后等待整个冷却期结束后才再次评估。这使它在负载快速变化时反应迟缓。阶梯扩缩容更受推荐,因为在情况恶化时它可以无需等待完整冷却期就继续触发,并且能够进行成比例的响应。
缩容保护与实例保护
有时您需要防止特定实例在缩容期间被终止,例如某个实例正在运行耗时很长的批处理任务。您可以通过控制台或 CLI 为单个实例启用实例缩容保护。当 ASG 选择终止候选实例时,会跳过受保护的实例。请记得在任务完成后移除保护,否则如果所有实例都受到保护,ASG 可能完全无法缩容。
aws autoscaling set-instance-protection \
--auto-scaling-group-name 'MyAppASG' \
--instance-ids 'i-0abc123def456' \
--protected-from-scale-in结合使用目标跟踪与阶梯扩缩容
您可以将多个扩缩容策略连接到同一个 ASG。当目标跟踪策略和阶梯扩缩容策略同时存在时,ASG 会采用建议更大扩容操作的策略(即更保守的策略)。对于缩容,则采用建议移除最少实例的策略。这样可以防止系统在过度预置和容量不足之间反复振荡。常见做法是使用目标跟踪策略处理稳定状态,并使用阶梯扩缩容策略应对紧急流量激增。
扩缩容策略最佳实践
对于大多数 Web 应用,请先使用基于 CPU 或每个目标的请求数的目标跟踪——它所需的配置极少,并且由 AWS 管理计算过程。当您需要针对不同负载强度进行分级且成比例的响应时,请使用阶梯扩缩容。请始终将最小容量设置得足够高,以便在不依赖扩容的情况下处理基线流量,因为扩容需要时间。请监控 GroupDesiredCapacity 和 GroupInServiceInstances CloudWatch 指标,以验证策略是否按预期工作。
快速检查
测试您对本课 AWS Solutions Architect (SAA-C03) 概念的理解。
课程回顾
本课介绍了:目标跟踪扩缩容会自动计算并应用扩容/缩容操作,使指标保持在期望值(例如 50% CPU);当指标跨过更高阈值时,阶梯扩缩容会使用基于 CloudWatch 警报的阶梯调整,触发成比例更大的响应;在同一个 ASG 上组合使用策略是安全的——ASG 会采用最保守的扩容建议和最不激进的缩容建议。接下来,我们将学习针对已知流量模式的计划扩缩容和预测性扩缩容。
常见问题解答
「扩展策略:目标跟踪与分步扩展」课时是免费的吗?
是的 — 「扩展策略:目标跟踪与分步扩展」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「扩展策略:目标跟踪与分步扩展」这节课中我会学到什么?
配置目标跟踪以维持 CPU 利用率目标,并配置分步扩展以响应 CloudWatch 警报阈值。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「扩展策略:目标跟踪与分步扩展」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 启动模板与 ASG 配置
- 扩展策略:目标跟踪与分步扩展
- 计划扩展与预测性扩展
- 实例刷新与生命周期钩子