AWS Auto Scaling

根据需求自动增减 EC2 实例和 ECS 任务等资源数量,兼顾可用性与成本效率的服务

概述

AWS Auto Scaling 是一项根据应用程序负载自动横向扩展 (增加) 和缩减 (减少) 计算资源的服务。EC2 Auto Scaling 使用最为广泛,但也支持 ECS 服务、DynamoDB 表、Aurora 副本、Lambda 并发执行数等多种资源类型。通过组合基于 CPU 使用率或请求数等指标的目标跟踪扩展、基于计划的定时扩展和预测扩展三种策略,可以应对流量激增和过度预置的情况。

三种扩展策略的选择方法

Auto Scaling 的策略选择因流量模式而异。目标跟踪扩展只需指定目标值 (如"将 CPU 使用率维持在 60%"),Auto Scaling 就会自动调整实例数量。设置简单,适用于大多数工作负载,但对突发峰值的响应可能会有延迟。步进扩展可以按指标阈值精细控制每次添加的实例数,易于应对阶梯式负载增长,但配置较为复杂。预测扩展通过机器学习分析过去 14 天的指标模式,提前预判需求并进行横向扩展,最适合每天同一时段流量增加的工作负载。

Spot 实例混合舰队配置

Auto Scaling 成本优化中效果最显著的是混合实例策略。将基线负载分配给预留实例,Auto Scaling 追加的实例使用 Spot 实例,相比按需实例可节省 60-90% 的成本。Azure 的 Virtual Machine Scale Sets 也支持 Spot VM,但 EC2 Auto Scaling 可以原生控制 Spot 与按需的混合比例、多种实例类型的优先级、跨可用区的分布,在 Spot 中断时确保容量的灵活性更高。AWS 基础设施设计书籍 (Amazon) 可深入学习成本优化方法。

健康检查与预热的常见陷阱

Auto Scaling 运维中最常出问题的是健康检查和冷却期的配置错误。启用 ELB 健康检查后,会自动替换在应用层检测到异常的实例,但需要确保健康检查宽限期 (Health Check Grace Period) 足够长,以免在部署后的预热期间被误判为异常。宽限期过短时,每次新实例启动都会陷入异常判定 → 终止 → 新启动的循环。此外,缩减时设置冷却期也很重要,以防在指标稳定前过度删除实例。确切的做法是了解启动模板中用户数据脚本的执行时间,并据此设置相应的宽限期。

共有するXB!