3. 弹性伸缩基础原理
弹性伸缩是云计算最核心的能力之一,它允许系统根据实时负载自动调整计算资源数量,在保证服务质量的同时控制成本。理解水平伸缩与垂直伸缩的区别、触发条件以及伸缩组的概念,是设计自助服务门户集成弹性伸缩运营任务编排流程的前提。
3.1 水平伸缩 vs 垂直伸缩
伸缩策略主要分为两种模式:水平伸缩(Scale Out/In) 和 垂直伸缩(Scale Up/Down)。两者在资源调整方式、适用场景和局限性上存在本质差异。
| 对比维度 | 水平伸缩(Scale Out/In) | 垂直伸缩(Scale Up/Down) |
|---|---|---|
| 操作方式 | 增加或减少实例数量(如从 2 台变为 5 台) | 增加或减少单个实例的规格(如从 2C4G 升级为 4C8G) |
| 扩展上限 | 理论上无上限,受限于云资源配额 | 受限于物理机或虚拟机最大规格 |
| 弹性速度 | 中等(需启动新实例、注册服务) | 较快(通常只需重启或热升级) |
| 适用架构 | 无状态应用、微服务、分布式系统 | 单体应用、有状态服务、数据库 |
| 成本模型 | 线性增长,按需付费 | 跳跃式增长,规格越高单价越贵 |
| 故障影响 | 单点故障影响小,高可用性强 | 单点故障影响大,存在单点风险 |
设计建议:在自助服务门户的弹性伸缩编排中,优先采用水平伸缩策略。对于数据库等有状态组件,可结合读写分离架构实现水平扩展,或使用垂直伸缩作为临时应对手段。
3.2 触发条件体系
弹性伸缩的触发条件决定了“何时伸缩”以及“伸缩多少”。常见的触发条件分为三类:基础资源指标、自定义业务指标 和 定时/周期策略。
3.2.1 基础资源指标
云平台默认提供的监控指标,通常包括 CPU 使用率、内存使用率、网络出入带宽、磁盘 IOPS 等。这些指标采集成本低,适合作为通用伸缩依据。
- CPU 使用率:最常用的指标,反映计算负载。建议设置 60%-80% 作为伸缩阈值。
- 内存使用率:适用于内存密集型应用(如缓存、数据分析)。
- 网络流量:适用于流量突发型业务(如视频直播、电商大促)。
- 磁盘 IOPS/吞吐量:适用于数据库或日志处理场景。
3.2.2 自定义业务指标
基于应用层业务数据定义的指标,比基础资源指标更精准地反映真实负载。通常通过云监控 SDK 或 Prometheus 等工具上报。
- 队列深度:消息队列中待处理消息的数量。
- 请求响应时间(RT):平均响应时间超过阈值时扩容。
- 并发连接数:Web 服务器或 API 网关的活跃连接数。
- 每秒请求数(QPS):直接反映业务压力。
- 业务订单量:电商场景下每分钟生成的订单数。
3.2.3 定时/周期策略
基于时间规律预定义的伸缩计划,适用于业务流量可预测的场景。
- 固定时间:如每天 9:00 扩容,22:00 缩容。
- 周期重复:如每周一至周五 10:00-12:00 保持 10 台实例。
- 日历事件:如双十一、春节等大促期间提前扩容。
避坑提示:单一指标容易导致误伸缩。例如 CPU 使用率低但内存已满,此时扩容 CPU 无法解决问题。建议采用“多指标组合”策略,例如 CPU > 80% 且 内存 > 70% 时触发扩容,避免无效伸缩。
3.3 伸缩组概念与生命周期
伸缩组(Auto Scaling Group, ASG) 是弹性伸缩的核心管理单元,它将一组云服务器实例作为一个逻辑整体进行统一管理。伸缩组定义了伸缩的边界、策略和行为规则。
3.3.1 伸缩组核心要素
| 要素 | 说明 | 示例值 |
|---|---|---|
| 最小实例数 | 伸缩组中始终保留的最小实例数量,保障基础服务能力 | 2 |
| 最大实例数 | 伸缩组允许扩容的上限,防止资源失控 | 20 |
| 期望实例数 | 伸缩组当前期望维持的实例数量,由伸缩策略动态调整 | 5 |
| 启动配置 | 新实例创建时使用的模板,包含镜像、规格、安全组等 | CentOS 7.9 / 4C8G |
| 伸缩策略 | 定义触发条件和伸缩动作的规则集合 | CPU > 75% 时 +2 台 |
| 健康检查 | 定期检测实例状态,自动替换不健康实例 | 每 30 秒检测一次 |
3.3.2 伸缩组生命周期
伸缩组中的每个实例都会经历完整的生命周期状态转换,理解这些状态有助于编排运维任务。
- 加入中(Adding):新实例启动,正在执行初始化脚本。
- 服务中(InService):实例通过健康检查,正常处理请求。
- 移出中(Removing):实例被标记为缩容,正在执行优雅退出。
- 备用中(Standby):实例暂停服务,用于运维操作(如补丁更新)。
- 已终止(Terminated):实例被释放,资源回收。
编排要点:在自助服务门户的运营任务编排中,需在“加入中”阶段注入配置下发、服务注册等初始化步骤;在“移出中”阶段执行连接排空、日志转储等清理操作。这些步骤应作为可编排的任务节点,集成到统一的部署流程中。
3.4 弹性伸缩核心流程图示
下图展示了从指标采集到伸缩动作执行的完整闭环流程,以及伸缩组在其中的核心位置。
3.5 水平伸缩与垂直伸缩对比图示
下图直观对比了两种伸缩模式在资源调整方式上的差异,帮助理解在自助服务门户中应如何选择伸缩策略。