🚀 一、什么是弹性伸缩ESS
弹性伸缩(Elastic Scaling Service,简称ESS,也称为Auto Scaling),是一款可根据您预设的策略自动调整计算资源(ECS/ECI实例)数量的云服务。在业务需求增长时自动扩容保证计算能力,业务需求下降时自动缩容节约成本,帮助企业应对业务流量波动的同时,大幅提升资源利用率、降低IT运维成本。
本章内容以ECS实例为核心示例进行介绍,ECI类型伸缩组的核心逻辑与使用方式与ECS类型保持一致。
1.1 前置概念
阅读本章前,建议您先了解以下基础云产品概念:
1.2 核心价值与优势
弹性伸缩的核心价值在于自动化、降成本、高可用、灵活智能、易审计,核心优势说明如下:
| 核心优势 | 核心说明 |
|---|---|
| 自动化 | 弹性扩张时自动创建实例、关联负载均衡与RDS白名单;弹性收缩时自动移出实例、解除负载均衡与RDS白名单关联,全程无需人工干预 |
| 降成本 | 无需提前预留冗余资源应对业务高峰,无需人工值守调整实例数量,按需取用、自动释放,大幅降低资源拥有成本与人力运维成本 |
| 高可用 | 内置实例健康检查功能,可自动检测实例运行状态,及时用新实例替换不健康实例,保障业务连续性 |
| 灵活智能 | 支持ECS/ECI双实例类型,兼容固定数量、健康、定时、动态、自定义等多种伸缩模式,提供丰富的扩缩容策略与实例模板配置,适配各类复杂业务场景 |
| 易审计 | 自动全量记录每一次伸缩活动详情,提供完善的伸缩组监控能力,帮助您快速定位问题根源,实现全流程可追溯 |
📌 核心价值总结
弹性伸缩的本质是用自动化能力平衡业务可用性与资源成本,既避免了峰值流量下的容量不足,也杜绝了低谷期的资源闲置浪费,同时大幅降低了人工运维的工作量与风险。
1.3 核心功能边界说明
⚠️ 重要功能边界提示
以下是弹性伸缩的核心能力边界,使用前请务必明确,避免因功能认知偏差导致业务异常。
- 弹性伸缩仅支持ECS/ECI实例数量的自动增减,不支持单个实例的配置变更(如CPU、内存、带宽调整),此类需求可通过阿里云系统运维管理OOS实现。
- 弹性伸缩的核心功能组件分为必选基础组件与可选扩展组件,具体如下:
| 功能组件 | 是否必选 | 核心作用 |
|---|---|---|
| 伸缩组 | 必选 | 实例的管理集合,定义实例类型、最大/最小实例数、关联负载均衡/RDS等核心边界属性,是弹性伸缩的基础载体 |
| 实例配置来源 | 必选 | 定义弹性扩容时创建实例的模板信息,包括镜像、实例规格、网络、安全组等配置 |
| 伸缩规则 | 可选 | 定义扩缩容的具体执行动作,可手动执行,也可被定时任务/报警任务自动触发 |
| 定时任务 | 可选 | 按预设时间点/周期自动执行指定伸缩规则,适配有规律的业务波动 |
| 报警任务 | 可选 | 基于云监控指标实时监测业务负载,满足阈值条件时自动执行伸缩规则,适配无规律的突发业务波动 |
弹性伸缩完整使用流程如下图所示:
🖥️ 弹性伸缩使用流程参考

1.4 扩展能力说明
1.4.1 通知能力
伸缩活动执行完成(成功/失败/拒绝)后,弹性伸缩支持通过以下方式发送通知:
| 通知类型 | 说明 |
|---|---|
| 消息通知 | 支持通过短信、站内信、邮件发送伸缩结果通知 |
| 事件通知 | 支持发送消息到云监控系统事件、MNS主题/队列,实现伸缩事件的自动化联动处理 |
1.4.2 实例生命周期管理能力
| 能力名称 | 核心作用 |
|---|---|
| 生命周期挂钩 | 可暂停自动触发的扩缩容活动,让实例处于挂起状态,为您预留自定义操作时间(如预装软件、拷贝日志),超时后再继续执行伸缩流程 |
| 手动实例管理 | 支持手动向伸缩组添加/移出/删除ECS/ECI/托管实例,适配混合部署场景 |
| 滚动升级 | 仅ECS类型伸缩组支持,可通过任务形式批量更新组内实例的镜像、执行脚本、安装OOS软件包,实现业务的无感发布 |
1.5 产品计费
💡 计费规则说明
弹性伸缩本身不收取任何服务费用,仅在您使用ECS/ECI实例、RDS、负载均衡、MNS等关联云产品时,按照对应产品的计费规则产生费用。
1.6 使用方式
您可以通过以下三种方式使用弹性伸缩服务,所有方式均共享相同的核心能力:
- 弹性伸缩控制台:可视化Web操作页面,地址:essnew.console.aliyun.com
- OpenAPI:支持GET/POST请求的RPC风格API,可实现深度的自动化集成
- 开发者工具:
- 阿里云CLI:基于API封装的命令行管理工具
- OpenAPI开发者门户:提供API在线检索、调试、SDK代码自动生成能力
1.7 关联云服务
弹性伸缩可与多款阿里云核心云产品深度联动,构建完整的弹性业务架构,核心关联服务如下:
| 服务名称 | 与弹性伸缩的关联作用 |
|---|---|
| 云服务器ECS 核心计算 | 弹性伸缩核心管理的计算资源,提供可弹性扩展的虚拟机服务 |
| 弹性容器实例ECI 容器计算 | Serverless容器运行服务,可作为弹性伸缩的实例类型,提供更高的弹性和免运维能力 |
| 云数据库RDS 数据存储 | 可与伸缩组关联,自动将扩容实例的内网IP添加到RDS访问白名单 |
| 负载均衡SLB 流量分发 | 可与伸缩组关联,自动将扩容实例加入后端服务器组,实现流量的均匀分发 |
| 云监控CloudMonitor 监控告警 | 为弹性伸缩的报警任务提供监控指标采集、阈值判断能力,是动态伸缩的核心基础 |
| 日志服务SLS 日志管理 | 可存储伸缩组内实例的业务日志、运行日志,避免实例缩容释放后日志丢失 |
| 轻量消息队列MNS 消息通知 | 用于接收弹性伸缩的事件通知,实现业务系统与伸缩事件的自动化联动 |
⚙️ 二、核心功能特性
2.1 伸缩组管理
伸缩组是弹性伸缩的核心管理单元,所有实例、配置、规则均基于伸缩组进行管理,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 基础生命周期管理 | 创建伸缩组 | 定义实例类型、实例边界、关联资源等核心属性,是使用弹性伸缩的第一步 |
| 启用/停用伸缩组 | 启用后伸缩组才可正常执行扩缩容活动;暂时无需使用时可停用,暂停所有自动伸缩动作 | |
| 修改伸缩组 | 支持修改伸缩组的大部分属性,无需重新创建,适配业务需求变化 | |
| 删除伸缩组 | 释放伸缩组配额,删除时会同步删除组内的伸缩配置、伸缩规则;开启伸缩组保护后禁止删除 | |
| 克隆伸缩组 | 基于已有伸缩组快速复制配置,仅需少量适配修改即可完成新伸缩组创建,提升配置效率 | |
| 查询伸缩组 | 支持查看伸缩组基础信息、实例列表、配置来源、伸缩规则、生命周期挂钩等全量配置 | |
| 容量管理 | 最大/最小实例数 | 定义伸缩组实例数量的上下限,实例数超限时自动触发扩缩容,确保实例数量始终在合规范围内 |
| 期望实例数 | 开启后伸缩组会自动将实例数量维持在期望实例数;支持并行伸缩活动,同一时间可执行多个扩缩容任务,大幅提升伸缩效率 | |
| 关联资源管理 | 负载均衡关联管理 | 支持为伸缩组添加/移除CLB/ALB/NLB负载均衡实例/服务器组,扩容实例自动加入后端,缩容实例自动移出 |
| RDS实例关联管理 | 支持为伸缩组添加/移除RDS实例,自动管理实例IP在RDS白名单中的增删 | |
| 高级配置管理 | 扩缩容策略 | 支持按可用区优先级、均衡分布、成本优化等策略选择扩缩容的实例;缩容时可自定义实例移出规则(最早创建/最新创建/最早配置对应实例等) |
| 实例回收模式 | 缩容移出ECS实例时,支持直接释放实例,或触发节省停机效果(仅回收vCPU/内存,保留云盘等资源,降低停机成本) | |
| 冷却时间 | 定义伸缩活动完成后的锁定时间,期间拒绝云监控报警任务触发的伸缩请求,避免指标波动导致频繁扩缩容 | |
| 实例健康检查 | 开启后定期检查实例运行状态,自动判定并移出不健康实例,保障业务可用性 | |
| 消息通知配置 | 支持配置事件通知与消息接收通知,实时掌握伸缩组动态,实现自动化运维 | |
| 暂停/恢复伸缩流程 | 支持单独暂停/恢复扩容流程、缩容流程、健康检查、定时任务、报警任务,实现流程级别的精细控制,适配问题排查、压力测试等场景 |
📖 拓展:伸缩组创建核心必填参数
创建伸缩组时,以下为核心必填参数,需提前规划完成:
- 伸缩组名称与所属地域
- 实例类型(ECS/ECI)
- 实例最大/最小数量边界
- 网络配置(专有网络VPC/虚拟交换机)
- 实例健康检查配置
2.2 伸缩组内实例管理
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 实例状态管理 | 实例状态调整 | 支持手动将实例转为/移出备用状态、保护状态、停用状态,实现实例级别的精细管控 |
| 实例生命周期管理 | 完整覆盖实例从加入伸缩组到移出/释放的全生命周期,包含加入中、服务中、备用中、保护中、移出中、停用中等核心状态,支持通过生命周期挂钩干预生命周期流程 | |
| 托管实例管理 | 手动添加托管实例 | 支持将非阿里云服务器注册为托管实例后加入伸缩组,实现线下+云上资源的统一弹性管理 |
| 移除托管实例 | 支持手动移出/删除伸缩组内的托管实例,不影响实例本身的运行 | |
| 运维发布 | 滚动升级 | 支持为组内运行中的ECS实例批量更新镜像、执行脚本、安装OOS软件包,实现业务的滚动发布,无需中断服务 |
| 监控运维 | 实例数量变化监控 | 支持查看伸缩组内不同状态实例的数量波动情况,实时掌握资源利用情况 |
| 实例健康状态监控 | 定期检查实例运行状态,自动识别不健康实例并触发替换,保障业务高可用 | |
| 手动实例操作 | 手动添加实例 | 将已有的ECS/ECI/托管实例加入伸缩组,可选择是否将实例生命周期托管给伸缩组 |
| 手动移出实例 | 将实例从伸缩组移出,不释放实例本身 | |
| 手动删除实例 | 从伸缩组删除实例,自动创建/已托管的实例会被释放,未托管实例仅被移出 |
2.3 实例配置来源管理
实例配置来源是弹性扩容时创建实例的模板,核心分为伸缩配置与启动模板两类,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 伸缩配置管理 | 创建伸缩配置 | 定义ECS/ECI实例的镜像、规格、存储、网络、安全组、登录凭证等全量配置,是扩容创建实例的核心模板 |
| 选用伸缩配置 | 一个伸缩组同一时间仅能有一个生效的伸缩配置,支持切换选用新的伸缩配置,后续扩容按新配置创建实例 | |
| 修改伸缩配置 | 支持修改已创建的伸缩配置,适配实例配置需求的变化 | |
| 导入/导出伸缩配置 | 支持导出伸缩配置用于本地备份,或导入到其他伸缩组,大幅提升跨伸缩组的配置效率 | |
| 删除伸缩配置 | 仅未生效、且无对应自动创建实例的伸缩配置可被删除,释放配置配额 | |
| 镜像更新 | 支持手动/自动方式更新伸缩配置中的镜像,适配业务迭代与系统更新需求 | |
| 伸缩配置查询 | 支持查询伸缩配置的全量详情,校验配置准确性 | |
| 启动模板管理 | 启动模板查询 | 支持基于ECS实例启动模板创建伸缩组,快速复用已有的实例配置 |
⚠️ 实例配置重要提示
伸缩配置是扩容实例的唯一模板,若配置错误(如镜像不可用、规格无库存、安全组不存在),会直接导致扩容活动失败,修改配置后请务必校验配置的有效性。
2.4 伸缩规则管理
伸缩规则定义了扩缩容的具体执行动作,是触发伸缩活动的核心载体,支持多种规则类型适配不同业务场景,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 伸缩规则类型 | 简单规则 | 基础扩缩容规则,支持增加/减少指定数量/比例的实例、或将实例数量调整至指定值;一条规则仅能触发扩容或缩容单一动作 |
| 步进规则 | 基于云监控报警的分段扩缩容策略,在简单规则基础上增加分步定义,可根据指标违例规模执行不同的扩缩容动作,实现精细化弹性管理 | |
| 目标追踪规则 | 基于预设的云监控指标目标值(如CPU使用率50%),自动动态计算需要扩缩容的实例数量,将指标值维持在目标值附近;可自动创建扩容/缩容报警任务,无需手动配置 | |
| 预测规则 | 基于机器学习分析伸缩组至少24小时的历史监控数据,预测未来48小时的指标值与所需实例数,自动创建定时任务设置伸缩组边界值;支持先预测不伸缩,验证效果后再开启自动伸缩 | |
| 规则生命周期管理 | 创建/删除伸缩规则 | 可根据业务需求创建不同类型的伸缩规则,不再使用时可删除规则释放配额 |
| 执行伸缩规则 | 仅简单规则、步进规则支持手动执行;目标追踪规则、预测规则由弹性伸缩自动执行;手动执行可绕过冷却时间立即触发伸缩活动 | |
| 查询伸缩规则 | 支持查询伸缩规则的类型、标识符、执行动作、关联报警任务等全量详情 |
📌 伸缩规则选型建议
- 简单业务场景:优先使用简单规则,配置门槛低、逻辑清晰
- 精细化弹性场景:优先使用步进规则,可根据负载超标程度匹配不同的扩缩容力度
- 稳态业务负载优化:优先使用目标追踪规则,系统自动维持指标在合理区间,无需人工维护阈值
- 有明确历史规律的业务:优先使用预测规则,提前预留资源,避免峰值容量滞后
2.5 伸缩规则触发方式
弹性伸缩支持定时触发、报警触发、手动触发三种核心方式,适配不同的业务波动场景,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 定时触发(适配有规律的业务波动) | 创建定时任务 | 可设置指定时间点/周期执行伸缩规则,支持按天/周/月循环,或通过Cron表达式自定义循环规则;触发失败后可在LaunchExpirationTime内自动重试 |
| 修改定时任务 | 支持修改定时任务的执行时间、循环规则、关联伸缩规则、重试时间等属性,无需重新创建 | |
| 报警触发(适配无规律的突发业务波动) | 配置报警任务 | 基于云监控系统指标/自定义指标,实时监测伸缩组负载,满足阈值条件时自动执行关联的伸缩规则;支持多指标组合判断,设置生效周期、统计周期、触发次数等精细化配置 |
| 系统监控报警任务 | 以伸缩组为粒度,内置CPU使用率、内存使用率、网络流量、QPS等丰富的系统指标,指标值为组内所有实例的统计结果,无需额外配置采集 | |
| 自定义监控报警任务 | 支持对接您自主上报至云监控的自定义指标,适配个性化的业务弹性场景 | |
| 手动触发(适配临时运维场景) | 手动执行伸缩规则 | 临时需要调整实例资源时,可手动执行伸缩规则;伸缩组无执行中的伸缩活动时,可绕过冷却时间立即执行 |
2.6 伸缩活动管理
伸缩活动是扩缩容动作的执行记录,完整记录了伸缩触发原因、执行过程、执行结果、实例变化等全量信息,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 伸缩活动状态管理 | 伸缩活动状态说明 | 伸缩活动包含拒绝、执行中、成功、警告、失败5种核心状态,可通过状态快速判断伸缩执行结果 |
| ECS实例级回滚 | 伸缩活动中部分实例未能成功加入伸缩组时,仅对失败实例进行回滚,而非整体伸缩活动回滚,最大化保障业务扩容效果 | |
| 伸缩流程管控 | 暂停/恢复伸缩流程 | 支持单独暂停/恢复扩容、缩容、健康检查、定时任务、报警任务等核心流程,适配问题排查、压力测试等场景,避免自动伸缩干扰运维操作 |
| 伸缩活动查询 | 查看伸缩活动详情 | 支持查看伸缩活动的触发原因、起止时间、实例变化详情、状态信息、失败原因等,帮助快速定位伸缩异常问题 |
📖 拓展:伸缩活动核心状态说明
- 拒绝:伸缩活动在请求阶段被拒绝,未执行任何扩缩容动作,可查看拒绝原因定位问题
- 执行中:伸缩活动已通过校验,正在执行实例创建/移出操作
- 成功:所有目标实例均完成加入/移出操作,伸缩活动正常完成
- 警告:部分实例完成加入/移出,部分实例执行失败,仅对失败实例进行回滚
- 失败:所有目标实例均未完成加入/移出,伸缩活动整体执行失败
2.7 生命周期挂钩管理
生命周期挂钩是弹性伸缩提供的实例生命周期干预能力,可暂停自动扩缩容活动,为您预留自定义操作时间,核心功能如下:
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 挂钩生命周期管理 | 创建/删除生命周期挂钩 | 可创建针对弹性扩张/弹性收缩活动的生命周期挂钩,单个伸缩组最多可创建10个;不再使用时可删除挂钩释放配额,删除后已挂起的实例会提前结束等待状态 |
| 修改生命周期挂钩 | 支持修改挂钩的超时时间、默认执行策略、通知方式等属性,不支持修改挂钩名称 | |
| 暂停/启用生命周期挂钩 | 业务暂时不需要挂钩时可暂停,需要时重新启用,无需重新创建 | |
| 查询生命周期挂钩 | 支持查询挂钩的全量配置详情与执行记录 | |
| 核心配置能力 | 超时时间配置 | 支持设置30秒~6小时的挂起超时时间,需根据自定义操作的耗时合理设置,超时后自动执行默认策略 |
| 默认执行策略 | 支持设置继续、拒绝、回滚三种默认策略,定义挂起超时后伸缩活动的执行动作 | |
| 通知方式 | 支持不通知、MNS主题、MNS队列、OOS模板、事件总线五种通知方式,可实现挂钩触发后的自动化自定义操作 |
💡 生命周期挂钩典型使用场景
- 扩容场景:实例创建后,通过挂钩暂停加入流程,完成业务代码部署、配置初始化、服务启动预热后,再加入负载均衡承接流量
- 缩容场景:实例释放前,通过挂钩暂停释放流程,完成业务流量切走、日志备份、数据落盘后,再执行实例释放
2.8 事件通知管理
| 功能集 | 功能项 | 功能描述 |
|---|---|---|
| 事件通知配置 | 配置事件通知方式 | 支持在发生指定伸缩事件后,自动发送消息到云监控、MNS主题、MNS队列,实现伸缩事件的自动化联动 |
| 事件通知场景配置 | 支持指定触发通知的伸缩活动类型,如成功的弹性扩张、失败的弹性收缩、拒绝的伸缩活动等,按需配置通知场景 | |
| 删除事件通知 | 不再使用的事件通知可直接删除,释放通知配额(单个伸缩组最多6个事件通知) |
2.9 配额管理
弹性伸缩的各类资源使用存在数量配额限制,您可前往阿里云配额中心查看当前配额值,也可提交申请提升配额。
2.10 开源与生态
弹性伸缩支持通过Terraform进行基础设施即代码(IaC)管理,可通过Terraform代码安全高效地创建、配置、管理弹性伸缩资源。
💡 三、产品核心优势
3.1 全流程自动化,零人工干预
弹性伸缩可实现扩缩容全流程自动化,无需人工值守操作,彻底避免手动操作带来的人为失误与响应延迟。
- 弹性扩张自动化:自动按模板创建实例、挂载负载均衡后端、添加RDS白名单,实例就绪后自动接入流量;
- 弹性收缩自动化:自动将实例从负载均衡后端摘除、从RDS白名单移除,再执行实例移出/释放,避免业务中断;
- 故障自愈自动化:自动检测实例健康状态,发现不健康实例后自动创建新实例替换,保障业务连续性。
3.2 极致成本优化,按需取用资源
弹性伸缩从资源成本与人力成本两个维度,帮助企业实现极致的成本优化。
- 资源成本优化:无需提前预留大量冗余实例应对业务高峰,业务低谷时自动释放空闲资源,按实际业务需求使用计算资源,大幅降低闲置资源成本;
- 人力成本优化:无需运维人员7*24小时值守应对业务波动,无需人工批量创建/释放实例,大幅降低运维人力投入,让运维人员聚焦更核心的业务价值。
3.3 企业级高可用,保障业务连续性
弹性伸缩从多个维度保障业务的高可用性,避免单点故障与容量不足导致的业务中断。
- 健康检查与故障自愈:定期检测实例运行状态,自动替换不健康实例,即使单台实例故障,也能快速完成自愈,不影响整体业务服务能力;
- 多可用区均衡部署:支持跨多个可用区均衡分布实例,单个可用区故障时,可自动在其他可用区扩容实例,实现可用区级别的容灾;
- 多实例规格容错:伸缩配置支持配置多个实例规格、多个磁盘类型,单个规格库存不足时,自动使用其他规格创建实例,大幅提升扩容成功率。
3.4 灵活智能的策略体系,适配全场景业务需求
弹性伸缩提供丰富的伸缩模式与策略体系,可灵活组合适配各类业务场景,无论是有规律的周期波动、无规律的突发流量,还是稳态业务的高可用保障,都能完美适配。
- 多伸缩模式兼容:支持固定数量、健康、定时、动态、自定义模式同时配置,多模式并行生效,互不干扰;
- 丰富的扩缩容策略:支持按成本优化策略(优先使用单价最低的实例)、可用区优先级策略、均衡分布策略等,可自定义实例移出规则,满足企业个性化的资源管理需求;
- 智能预测伸缩:基于机器学习算法,自动分析历史业务数据,预测未来的流量趋势与实例需求,提前创建实例预留资源,避免突发流量带来的容量滞后问题。
3.5 全链路可审计,运维排查高效
弹性伸缩提供全流程的可观测与可审计能力,帮助运维人员快速掌握伸缩动态、定位问题根源。
- 全量伸缩活动记录:自动记录每一次伸缩活动的触发原因、执行时间、实例变化、执行结果、失败原因等全量信息,实现伸缩行为的全程可追溯;
- 完善的监控能力:与云监控深度集成,可实时查看伸缩组内实例数量变化、指标监控、伸缩事件等,无需逐台查看实例状态;
- 多渠道通知告警:支持通过短信、邮件、站内信、MNS等多渠道发送伸缩事件通知,让运维人员实时掌握伸缩组动态,及时响应异常问题。
📖 四、典型应用场景
4.1 无规律的突发业务量波动
场景特征:业务流量突增/突降的时间不可预测,如新闻网站的热点事件、电商平台的突发促销、直播平台的流量爆发等,手动调整实例无法保障及时性,且调整数量难以精准把控。
解决方案:利用弹性伸缩的报警任务,基于业务核心指标实现自动化动态扩缩容。
📌 场景落地方案
- 方案1:配置两条简单规则+报警任务,CPU使用率>70%时自动增加3台实例,CPU使用率<30%时自动减少3台实例;
- 方案2:配置一条目标追踪规则,自动将实例的CPU使用率维持在50%左右,无需手动配置扩容/缩容的阈值与规则。
4.2 有规律的业务量波动
场景特征:业务流量波动有明确的时间规律,如游戏公司每天18:00-22:00为业务高峰、办公系统工作日9:00-18:00需要更高容量、视频平台每周五晚间流量激增等,每天手动调整实例浪费大量人力与时间成本。
解决方案:利用弹性伸缩的定时任务,按业务规律预设扩缩容时间与动作。
📌 场景落地方案
示例:设置两条定时任务,每天17:55自动增加3台实例应对晚间高峰,每天22:05自动减少3台实例释放空闲资源,既保障高峰业务容量,又避免低谷资源浪费。
4.3 无明显业务量波动的稳态业务高可用保障
场景特征:业务全天运行,流量无明显波动,但需要保障业务的持续可用性,如企业官网、通信支撑系统、内部管理系统等,若现有实例突发故障,会导致业务中断,且难以及时修复替换。
解决方案:利用弹性伸缩的健康模式+固定数量模式,开启实例健康检查,设置最小实例数保障业务基础容量。
📌 场景落地方案
示例:设置伸缩组最小实例数/期望实例数为2台,开启健康检查,弹性伸缩会始终保持组内有2台健康实例运行;若其中1台实例故障,会自动被移出,并创建新的健康实例替换,实现故障自愈,保障业务持续可用。
4.4 混合型业务场景
场景特征:业务场景复杂,既有稳态的基础流量,又有波动的突发流量,如企业已采购包年包月实例承载基础流量,仅需针对波动的流量部分进行弹性调整,同时需要兼顾故障自愈与突发流量应对。
解决方案:手动将包年包月实例加入伸缩组(不托管生命周期),结合报警任务+定时任务+健康检查,实现混合部署场景的统一弹性管理。
📌 场景落地方案
示例:将3台包年包月实例加入伸缩组作为基础容量,配置报警任务在CPU使用率>80%时自动扩容按量付费实例,CPU使用率<30%时自动缩容;同时开启健康检查,包年包月实例故障时自动用按量实例临时替换,既保障了基础容量的成本最优,又实现了波动流量的弹性应对。
🔍 五、工作原理
本章以ECS类型伸缩组为例,介绍弹性伸缩的核心工作流程、伸缩模式配置与核心原理,ECI类型伸缩组的工作原理完全一致。
5.1 核心工作流程
弹性扩容的核心工作流程如下,缩容流程为反向逻辑:
🖥️ 弹性扩容工作流程参考

以典型的Web三层架构(负载均衡-应用服务器-数据库)为例,弹性伸缩的完整执行步骤如下:
5.1.1 触发条件匹配,执行伸缩模式
弹性伸缩实时检测各伸缩模式的触发条件,满足条件时触发对应伸缩活动。支持6种伸缩模式,且可多模式并行配置,具体如下:
| 伸缩模式 | 核心说明 |
|---|---|
| 固定数量模式 | 基于最小/最大/期望实例数,自动将实例数量维持在设定范围内,是伸缩组的基础模式 |
| 健康模式 | 开启健康检查后,定期检测实例运行状态,自动移出不健康实例并补充新实例 |
| 定时模式 | 基于定时任务,在预设时间点执行指定伸缩规则,适配有规律的业务波动 |
| 动态模式 | 基于报警任务,云监控指标满足阈值时自动执行伸缩规则,适配无规律的突发流量 |
| 自定义模式 | 支持手动执行伸缩规则、手动添加/移出/删除实例,适配临时运维场景 |
| 多模式并行 | 组合各伸缩模式的配置方式,各模式互相独立,无优先级区分,先触发的模式先执行,可同时配置多种模式适配复杂业务场景 |
5.1.2 调用执行接口,解析伸缩规则
系统通过ExecuteScalingRule接口执行伸缩活动,接口传入伸缩规则的唯一标识符ScalingRuleAri,解析获取伸缩规则、伸缩组、实例配置的全量信息。
- 控制台操作:可在伸缩规则详情页查看
ScalingRuleAri; - API操作:可调用
DescribeScalingRules接口查询伸缩组下所有规则的ScalingRuleAri。
5.1.3 创建伸缩活动,校验执行条件
基于解析后的信息,创建伸缩活动,校验伸缩组状态、实例数量边界、是否有执行中的非并行伸缩活动等条件,校验通过后正式执行伸缩动作。
- 开启期望实例数的伸缩组:支持并行伸缩活动,可同时执行多个并行伸缩任务;
- 未开启期望实例数的伸缩组:同一时间只能执行一个伸缩活动,后续任务会在重试窗口期内自动重试。
5.1.4 执行实例操作,配置关联资源
- 扩容场景:按伸缩配置创建指定数量的ECS实例,将实例内网IP添加到关联RDS的访问白名单,将实例加入关联负载均衡的后端服务器组;
- 缩容场景:将待移出实例从负载均衡后端服务器组摘除,从RDS白名单中移除实例IP,再执行实例的移出/释放操作。
5.1.5 完成伸缩活动,启动冷却时间
伸缩活动执行完成后,更新伸缩组实例数量,启动伸缩组冷却时间;冷却时间内,拒绝云监控报警任务触发的伸缩请求,避免指标波动导致频繁扩缩容。
5.2 伸缩模式的配置方式
不同伸缩模式对应不同的最小配置单元,具体配置方式与说明如下:
| 伸缩模式 | 核心配置方式 | 配置说明 |
|---|---|---|
| 固定数量模式 | 伸缩组+实例配置来源 | 必选基础配置,伸缩效果由最小/最大/期望实例数决定,是所有伸缩模式的基础 |
| 健康模式 | 伸缩组+实例配置来源 | 需开启伸缩组的实例健康检查配置项,开启后自动生效 |
| 定时模式 | 伸缩组+实例配置来源+伸缩规则+定时任务 | 在基础配置上,创建伸缩规则与定时任务,由定时任务触发规则执行 |
| 动态模式 | 伸缩组+实例配置来源+伸缩规则+报警任务 | 在基础配置上,创建伸缩规则与报警任务,由报警任务触发规则执行 |
| 自定义模式 | 任意伸缩模式的配置方式 | 无论是否配置其他模式,都支持手动执行伸缩规则、手动管理实例 |
| 多模式并行 | 组合各伸缩模式的配置方式 | 各模式互相独立,无优先级区分,先触发的模式先执行,可同时配置多种模式适配复杂业务场景 |
5.3 核心场景原理示意图
5.3.1 弹性扩容示意图
🖥️ 弹性扩容原理参考

用户请求经负载均衡分发到伸缩组内的ECS实例,当业务负载满足扩容条件时,弹性伸缩自动创建新的ECS实例,加入负载均衡与RDS白名单,承接业务流量,提升整体服务能力。
5.3.2 弹性缩容示意图
🖥️ 弹性缩容原理参考

当业务负载降低满足缩容条件时,弹性伸缩自动将待释放实例从负载均衡与RDS白名单中移除,再执行实例释放,释放空闲计算资源,降低使用成本。
5.3.3 弹性自愈示意图
🖥️ 弹性自愈原理参考

弹性伸缩定期检测实例健康状态,发现不健康实例后,自动创建新的健康实例替换故障实例,保障伸缩组内始终有足够的健康实例承接业务流量,实现业务故障自愈。
⚠️ 六、使用限制
6.1 功能限制
⚠️ 核心功能限制说明
以下限制为弹性伸缩的硬性约束,使用过程中需严格遵守,否则可能导致业务异常或伸缩活动失败。
- 部署在伸缩组内实例上的应用,必须是无状态、可横向扩展的,因为伸缩组内的实例可能被自动释放,不适合保存会话记录、应用数据、日志等本地状态信息;如需保存,建议将会话存入独立状态服务器,应用数据存入RDS,日志存入日志服务SLS。
- 弹性伸缩不支持自动将实例IP添加到Memcache实例的访问白名单,需您手动配置。
- 若伸缩组关联的RDS实例、负载均衡实例/服务器组被删除,伸缩组会自动解除与该资源的关联。
- 若伸缩组的自动伸缩活动连续失败超过30天,系统会自动暂停该伸缩组的自动触发伸缩功能,并通过短信/邮件通知您,建议您及时登录控制台处理异常。
- 定时任务的
LaunchTime不能设置为自创建当天起90日后的时间,循环执行的结束时间RecurrenceEndTime不能设置为自创建当天起365日后的时间。 - 仅简单规则、步进规则支持手动调用
ExecuteScalingRule接口执行,目标追踪规则、预测规则不支持手动执行,由系统自动触发。 - 包年包月ECS实例可加入伸缩组,但不支持将生命周期托管给伸缩组,缩容时仅会被移出伸缩组,不会被释放。
6.2 数量限制(配额限制)
单个阿里云账号使用弹性伸缩时,核心资源的数量配额如下,配额值可前往阿里云配额中心查看与申请提升:
| 配额项 | 默认配额值 |
|---|---|
| 单个地域下的伸缩组总数 | 以配额中心展示为准,支持手动申请提升 |
| 单个伸缩组内的伸缩配置总数 | 10个 |
| 单个伸缩组内的伸缩规则总数 | 50条 |
| 单个伸缩组可关联的RDS实例总数 | 5个 |
| 单个伸缩组可关联的负载均衡实例总数 | 5个 |
| 单个伸缩组可关联的ALB/NLB服务器组总数 | 5个 |
| 单个伸缩组可关联的虚拟服务器组总数 | 5个 |
| 单个伸缩组可设置的组内最大实例数 | 2000台 |
| 单个地域下的定时任务总数 | 以配额中心展示为准,支持手动申请提升 |
| 单次自动扩缩容可加入/删除的实例总数 | 1000台 |
| 单个伸缩配置中的多实例规格总数 | 20个 |
| 单个伸缩组内的事件通知总数 | 6个 |
| 单个伸缩组内的生命周期挂钩总数 | 10个 |
📌 七、核心基本概念
本章列举弹性伸缩使用过程中的核心概念,帮助您快速理解产品逻辑:
| 核心概念 | 概念说明 |
|---|---|
| 弹性伸缩ESS | 阿里云提供的自动调整计算资源数量的云服务,可根据业务需求和预设策略,自动增加/减少ECS/ECI实例数量,保障业务需求的同时优化资源成本 |
| 伸缩组 | 具有相同应用场景、相同实例类型的实例集合,是弹性伸缩的核心管理单元,定义了组内实例的最大/最小值、关联资源、伸缩策略等核心属性 |
| ECS实例 | 阿里云提供的云服务器,等同于一台虚拟服务器,包含CPU、内存、操作系统、网络、磁盘等基础计算组件,是弹性伸缩最常用的实例类型 |
| 弹性容器实例ECI | 阿里云提供的Serverless容器运行服务,无需管理底层服务器,只需提供容器镜像即可运行,适配容器化业务的弹性伸缩场景 |
| 负载均衡SLB | 对流量进行按需分发的服务,通过将流量分发到不同的后端实例来扩展应用系统的服务吞吐能力,消除单点故障,分为ALB、NLB、CLB三种类型 |
| RDS实例 | 阿里云提供的在线云数据库服务,可与伸缩组关联,弹性伸缩自动管理扩容/缩容实例的IP在RDS白名单中的增删 |
| 伸缩模式 | 弹性伸缩触发扩缩容的方式,包括固定数量模式、健康模式、定时模式、动态模式、自定义模式、多模式并行 |
| 实例配置来源 | 弹性扩容时创建实例的模板,分为伸缩配置和实例启动模板两类,定义了实例的镜像、规格、网络、安全组等全量配置信息 |
| 伸缩配置 | 弹性伸缩提供的实例模板类型,专门适配弹性伸缩场景,可定义实例创建的全量配置信息 |
| 伸缩规则 | 定义扩缩容具体执行动作的规则,分为简单规则、步进规则、目标追踪规则、预测规则四类,可手动执行,也可被定时/报警任务自动触发 |
| 自动触发任务 | 分为定时任务和报警任务两类,定时任务按预设时间执行伸缩规则,适配有规律的业务波动;报警任务基于云监控指标动态执行伸缩规则,适配无规律的突发流量 |
| 伸缩活动 | 记录伸缩组内实例数量、边界值、期望实例数变化的执行记录,执行伸缩规则、修改伸缩组边界值等操作均会触发伸缩活动,完整记录了伸缩动作的全流程信息 |
| 期望实例数 | 伸缩组的可选配置项,开启后伸缩组会自动将实例数量维持在期望实例数;同时支持并行伸缩活动,大幅提升伸缩效率 |
| 并行伸缩活动 | 开启期望实例数后支持,手动执行规则、定时任务、手动添加/移出实例、健康检查等触发的伸缩活动为并行伸缩活动,可同时执行多个并行伸缩任务 |
| 非并行伸缩活动 | 云监控报警任务触发的伸缩活动为非并行伸缩活动,有执行中的非并行伸缩活动时,不能触发其他伸缩活动 |
| 生命周期挂钩 | 可暂停自动触发的扩缩容活动,让实例处于挂起状态,为您预留自定义操作时间(如预装软件、日志拉取),超时后再继续执行伸缩流程 |
| 冷却时间 | 伸缩活动成功完成后的一段锁定时间,期间伸缩组会拒绝云监控报警任务触发的伸缩请求,避免监控指标波动导致频繁扩缩容 |