来源: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)联动
关键机制:
- 伸缩组关联应用型负载均衡(ALB/CLB)的服务器组
- 扩容时:新建 ECS 自动加入 SLB 服务器组
- 缩容时:ECS 自动移出 SLB 服务器组
- 健康检查: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(缓存层)← 弹性扩容不影响高可用设计原则
- 多可用区部署:伸缩组实例分布在多个可用区,单区故障不影响整体
- 最小实例数 ≥ 2:保证任何时候都有实例可用
- 健康检查配置:SLB 健康检查频率和阈值要合理
- 滚动升级:使用新伸缩配置时,滚动替换旧实例
二、背诵版(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
解析:实例保护状态下,缩容规则不会选择该实例移出。