来源:Notion ACP学习笔记 + 阿里云开发者社区 + 网络资料整理


一、详细讲解

1.1 弹性伸缩概述

弹性伸缩(Auto Scaling):根据业务负载自动调整计算资源(ECS 实例数量)的功能,实现"用多少扩多少,不用就缩回去"。

为什么需要弹性伸缩

  • 成本优化:波峰扩容、波谷缩容,避免资源浪费
  • 应对突发流量:大促、活动等场景下自动承接流量
  • 保证可用性:负载高时自动扩容,避免服务崩溃
  • 减少人工干预:规则驱动,7×24 小时无人值守

1.2 阿里云弹性伸缩核心概念(重点)

伸缩组(Scaling Group)

伸缩组是弹性伸缩的核心管理单元,包含以下要素:

要素 说明
最小实例数 伸缩组始终保持的最小实例数量
最大实例数 伸缩组允许扩容到的最大实例数量
期望实例数 伸缩组当前期望维持的实例数量
默认实例数 伸缩组创建时自动创建的实例数量

伸缩配置(Scaling Configuration)

定义创建新 ECS 实例的规格:

  • 实例规格(vCPU / 内存)
  • 镜像(操作系统)
  • 安全组
  • 弹性网卡
  • 实例存储

伸缩规则(Scaling Rule)

规则类型 说明 示例
简单规则 直接指定目标实例数或调整量 +1 台、-2 台、调整到 5 台
步进规则 按负载分层递进调整 CPU > 80% 时 +3 台,> 60% 时 +1 台
目标追踪规则 自动维持目标指标 保持平均 CPU 利用率在 60%

伸缩触发任务

触发方式 说明
定时任务 固定时间触发扩缩容(如每晚高峰期提前扩容)
云监控报警任务 指标阈值触发(CPU、内存、QPS 等)
周期任务 周期性重复触发(每天/每周定时)

⚠️ 重要云监控报警任务是独立于伸缩组存在的,删除伸缩组不会删除报警任务!

1.3 伸缩流程详解(重点)

自动扩容闭环链路

监控异常(CPU 90%) ↓ 云监控产生报警 ↓ 报警任务触发伸缩规则 ↓ 执行伸缩规则(+3 台) ↓ 从伸缩配置创建新 ECS ↓ 新 ECS 加入 SLB 服务器组 ↓ 流量自动分发到新实例 ↓ 负载下降,稳定在目标值

自动缩容闭环链路

负载持续偏低(CPU < 30% 持续 10 分钟) ↓ 云监控产生缩容报警 ↓ 报警任务触发缩容规则 ↓ 移出非保护状态实例 ↓ 实例从 SLB 后端服务器组移除 ↓ 实例进入"节省状态"后释放 ↓ 计费停止

1.4 伸缩组与负载均衡(SLB)联动

关键机制

  1. 伸缩组关联应用型负载均衡(ALB/CLB)的服务器组
  2. 扩容时:新建 ECS 自动加入 SLB 服务器组
  3. 缩容时:ECS 自动移出 SLB 服务器组
  4. 健康检查:SLB 持续检测后端 ECS 健康状态,不健康则自动移出

1.5 弹性伸缩注意事项(高频考点)

注意点 说明
冷却时间 伸缩完成后需要等待冷却时间(默认 300 秒)才能再次触发,避免震荡
实例保护 缩容时,被保护实例不会被移出,可手动取消保护
移出策略 缩容时按策略选择实例:最早创建 / 最新创建 / 最早配置生效
最小实例数 防止缩容过度,保证最小可用实例数
多伸缩规则冲突 同一时间多条规则取最大实例数

1.6 云监控 CloudMonitor

云监控是弹性伸缩的眼睛,提供以下监控能力:

产品 监控指标
ECS CPU、内存、磁盘、网络
RDS QPS、连接数、CPU/内存利用率
Redis 内存使用率、命中率、QPS
OSS 请求次数、流量、延迟
SLB 后端服务器健康状态、活跃连接数

报警通知方式

  • 短信
  • 邮件
  • 钉钉机器人 Webhook
  • API callback

1.7 运维实践

弹性架构标准模型

用户请求 ↓ ALB(应用型负载均衡)← 健康检查 ↓ 伸缩组管理的 ECS 集群 ← 自动扩缩 ↓ RDS(关系数据库) ↓ Redis(缓存层)← 弹性扩容不影响

高可用设计原则

  1. 多可用区部署:伸缩组实例分布在多个可用区,单区故障不影响整体
  2. 最小实例数 ≥ 2:保证任何时候都有实例可用
  3. 健康检查配置:SLB 健康检查频率和阈值要合理
  4. 滚动升级:使用新伸缩配置时,滚动替换旧实例

二、背诵版(Night Before Exam)

弹性伸缩四要素

伸缩组 = 容器伸缩配置 = 模板伸缩规则 = 动作触发任务 = 条件

扩容闭环

监控报警 → 触发规则 → 创建 ECS → 加入 SLB → 承接流量 → 负载下降

缩容闭环

负载低 → 触发缩容 → 移出 SLB → 进入保护 → 节省状态 → 释放实例

报警任务独立性

报警任务是独立的,删除伸缩组不会删除报警任务!这是高频考点!

关键数字

冷却时间默认 300 秒 / 最小实例数保障下限 / 最大实例数控制上限


三、速记版(考前 5 分钟回忆)

✅ 弹性伸缩 = 自动调整 ECS 数量 ✅ 伸缩组 = 管理单元(含最小/最大/期望实例数) ✅ 伸缩配置 = 创建新 ECS 的模板(规格、镜像、安全组) ✅ 伸缩规则 = 具体动作(+1/-1/调整到N) ✅ 定时任务 = 固定时间触发 ✅ 云监控报警任务 = 指标阈值触发 ⚠️独立于伸缩组 ✅ 扩容闭环:监控→报警→规则→创建ECS→加入SLB→承接流量 ✅ 冷却时间 = 300秒(默认)= 防止震荡 ✅ 实例保护 = 缩容时不移出 ✅ 移出策略 = 最早创建优先移出(默认) ✅ ALB + AS = 最佳拍档,新实例自动加入SLB ✅ 多可用区 = 单区故障不崩溃

四、测试练习题

单选题

1. 阿里云弹性伸缩的伸缩组中,“最大实例数"的作用是?

  • A. 保证最小可用实例数
  • B. 控制扩容上限,防止费用超支 ✅
  • C. 定义实例规格
  • D. 设置健康检查阈值

答案:B
解析:最大实例数控制扩容上限,防止突发流量导致费用失控。

2. 以下关于云监控报警任务的说法,正确的是?

  • A. 删除伸缩组会自动删除关联的报警任务
  • B. 报警任务独立于伸缩组存在 ✅
  • C. 报警任务只能触发扩容,不能触发缩容
  • D. 报警任务和定时任务不能同时配置

答案:B
解析:这是高频考点!云监控报警任务是独立资源,删除伸缩组不会删除报警任务。

3. 弹性伸缩的扩容闭环中,新建 ECS 加入 SLB 之前需要完成什么?

  • A. 格式化磁盘
  • B. 安装监控 Agent
  • C. 配置安全组规则
  • D. 健康检查通过后加入 ✅

答案:D
解析:SLB 健康检查通过后,新 ECS 才会正式加入后端服务器组开始承载流量。

4. 伸缩组的冷却时间(Cooldown)的默认值为?

  • A. 60 秒
  • B. 180 秒
  • C. 300 秒 ✅
  • D. 600 秒

答案:C
解析:默认冷却时间 300 秒(5 分钟),防止频繁扩缩震荡。

5. 关于伸缩规则的"目标追踪规则”,以下描述正确的是?

  • A. 需要手动指定调整数量
  • B. 自动维持指定指标的目标值 ✅
  • C. 只能追踪 CPU 指标
  • D. 不需要关联伸缩组

答案:B
解析:目标追踪规则自动计算需要的实例数量,以维持目标指标(如 CPU 60%)。

6. 缩容时,移出实例的默认策略是?

  • A. 最新创建的实例优先移出
  • B. 最早创建的实例优先移出 ✅
  • C. 随机移出
  • D. 最大规格实例优先移出

答案:B
解析:默认移出策略是"最早创建"(Oldest Instance)。

多选题

7. 弹性伸缩的触发任务包括?

  • A. 定时任务 ✅
  • B. 云监控报警任务 ✅
  • C. 周期任务 ✅
  • D. 手动触发 ✅

答案:A、B、C、D
解析:所有触发方式均支持。

8. 弹性架构中,ALB(应用型负载均衡)和 AS(弹性伸缩)联动的关键点包括?

  • A. 扩容时新 ECS 自动加入 ALB 服务器组 ✅
  • B. 缩容时 ECS 自动从 ALB 移出 ✅
  • C. ALB 提供后端 ECS 的健康检查 ✅
  • D. AS 可以替代 ALB 实现流量分发

答案:A、B、C
解析:AS 和 ALB 是配合关系,不是替代关系。

判断题

9. 只要配置了伸缩规则,弹性伸缩就会自动工作,不需要任何触发条件。

  • A. 正确
  • B. 错误 ✅

答案:B
解析:伸缩规则需要被触发(定时任务/报警任务)才能执行。

10. 开启了实例保护功能的 ECS,在缩容时不会被移出。

  • A. 正确 ✅
  • B. 错误

答案:A
解析:实例保护状态下,缩容规则不会选择该实例移出。