AWS Auto Scaling 怎么配置?启动模板、目标跟踪与预热

从应用无状态化到容量边界、实例预热和安全缩容建立闭环

讲解 AWS EC2 Auto Scaling Group、启动模板、目标跟踪、容量范围、预热、健康检查和缩容排空。

EC2 Auto Scaling 通过 Auto Scaling Group 管理实例容量。完整方案至少包括启动模板、最小/期望/最大容量、子网、健康检查、伸缩策略、预热时间和缩容行为;只配置 CPU 告警并不能形成可靠弹性。

适合多数网站的起点:先在“EC2 → 启动模板”固化 AMI、实例类型、安全组和 IAM 角色,再进入“EC2 → Auto Scaling 组”创建跨两个可用区的伸缩组。把目标跟踪指标设为能代表真实瓶颈的 CPU 或负载均衡请求量,最小容量至少覆盖故障后仍需保留的实例数。Auto Scaling 组本身通常不收费,但新 EC2、EBS、负载均衡和监控会计费。

AWS EC2 Auto Scaling 目标跟踪与实例预热流程图
容量调整需要与实例初始化、负载均衡健康和缩容排空协同。

先让应用可以横向扩展

  • 会话放到共享存储或由客户端携带;
  • 上传文件不只保存在实例本地;
  • 实例可由启动模板和 User Data 重建;
  • 任务调度具备幂等与分布式锁;
  • 实例终止前能停止接流并排空连接。

三组容量值

参数含义风险
Minimum最低保有容量太低无法承受故障或突发
Desired当前目标容量会被策略动态调整
Maximum允许扩展上限太低会阻止继续扩容

目标跟踪策略

选择随容量增加而下降的指标,例如平均 CPU 或 ALB 每目标请求数,并设置具有突发余量的目标值。多个目标跟踪策略同时存在时,AWS 倾向优先保障可用性:任一策略需要扩容即可扩容,而缩容通常要求相关策略都允许。

预热与健康检查

默认实例预热用于避免新实例尚未接流时的临时指标干扰伸缩。预热时间应覆盖系统启动、应用加载和健康检查;长初始化可结合生命周期钩子。ALB 健康检查与 EC2 状态检查的含义不同,应按业务选择。

缩容安全

缩容前确认注销延迟、生命周期钩子、任务与长连接处理。数据库、单机队列或持久文件未外置时,不应直接进入自动缩容。

验证方法

  1. 用受控负载触发扩容;
  2. 检查 Activity history 和失败原因;
  3. 验证新实例按时进入 InService 并接收请求;
  4. 降低负载观察缩容是否过早;
  5. 模拟单个可用区容量不足并核对替代规格策略。

创建启动模板前要清掉什么

启动模板不能包含临时登录凭据、固定主机名或只适用于旧实例的本地状态。AMI 必须先用独立实例验证,用户数据要可重复执行,安全组只开放负载均衡和运维来源。实例类型若可能缺货,可在组内配置多个兼容规格;ARM 与 x86 不能混用同一份不兼容镜像。

中文控制台创建伸缩组

  1. 进入“EC2 → 启动模板 → 创建启动模板”,选择已验收 AMI,并配置实例类型、密钥、网络、安全组和角色。
  2. 打开“Auto Scaling 组 → 创建 Auto Scaling 组”,选启动模板和版本。
  3. 选择 VPC,并至少选择两个可用区的私有子网;需要对外服务时关联现有负载均衡目标组。
  4. 设置最小、所需和最大容量。新系统先把最小值设为当前稳定容量,最大值按预算和下游承载力限制。
  5. 添加目标跟踪策略,选择平均 CPU 或 ALB 每目标请求数,并填写实例预热时间。

预热时间怎么定

预热应覆盖“实例启动、用户数据执行、应用启动、加入目标组并通过健康检查”的完整时间。默认可从实际部署记录的高分位耗时开始,而不是固定照抄 300 秒。设得过短会把尚未就绪的实例计入指标并连续扩容;设得过长会延迟下一次合理扩容。数据库迁移等一次性动作不要放进每台实例启动流程。

不扩容或反复扩缩的分支

  • 活动历史显示容量限制:检查最大容量、服务配额和目标可用区的实例容量。
  • 新实例立即不健康:检查目标组端口、健康检查路径、安全组和应用启动日志。
  • CPU 很低但网站慢:瓶颈可能在数据库、EBS 或外部 API,改用更合适的指标,不能盲目降低目标值。
  • 频繁扩缩:增加合理预热和缩容冷却,检查指标是否被定时任务或单个热点请求扰动。

验证与安全回退

把测试流量逐步提高,确认活动历史创建实例、目标组健康、应用会话和文件不依赖本机。再手动终止一台组内实例,验证系统能补回容量。修改策略前保存旧启动模板版本和三项容量值;异常时暂停动态扩缩,切回上一启动模板版本并把所需容量恢复到稳定值。不要在仍承载唯一数据副本时缩容。

上线前最后核对

确认伸缩组终止实例时不会删除唯一上传文件、会话或本地任务状态。上传文件应进入对象存储,共享会话进入外部存储,后台任务要有可重试的队列。再检查最大容量不会超过数据库连接数和预算上限;自动扩容只能增加计算节点,不能自动消除下游瓶颈。

完成当前任务后继续检查

官方资料

AWS 教程AWS CloudShell 显示账户验证中怎么办?已验证仍无法创建环境的排查2026-09-15AWS 教程AWS EBS 卷卡在 attaching 怎么排查?可用区、挂载限制与设备识别2026-09-01AWS 教程AWS CloudTrail 怎么查操作记录?Event history、Trail 与审计边界2026-08-28

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区