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 伸缩组生命周期

伸缩组中的每个实例都会经历完整的生命周期状态转换,理解这些状态有助于编排运维任务。

  1. 加入中(Adding):新实例启动,正在执行初始化脚本。
  2. 服务中(InService):实例通过健康检查,正常处理请求。
  3. 移出中(Removing):实例被标记为缩容,正在执行优雅退出。
  4. 备用中(Standby):实例暂停服务,用于运维操作(如补丁更新)。
  5. 已终止(Terminated):实例被释放,资源回收。
编排要点:在自助服务门户的运营任务编排中,需在“加入中”阶段注入配置下发、服务注册等初始化步骤;在“移出中”阶段执行连接排空、日志转储等清理操作。这些步骤应作为可编排的任务节点,集成到统一的部署流程中。

3.4 弹性伸缩核心流程图示

下图展示了从指标采集到伸缩动作执行的完整闭环流程,以及伸缩组在其中的核心位置。

弹性伸缩核心流程闭环 业务负载 监控指标采集 触发条件判断 伸缩组(ASG) 最小/最大/期望实例数 + 启动配置 伸缩动作(扩容/缩容) 反馈闭环 说明:伸缩组是弹性伸缩的核心管理单元,它根据触发条件判断结果执行扩容或缩容动作,动作完成后新的实例状态反馈回业务负载,形成闭环。

3.5 水平伸缩与垂直伸缩对比图示

下图直观对比了两种伸缩模式在资源调整方式上的差异,帮助理解在自助服务门户中应如何选择伸缩策略。

水平伸缩 vs 垂直伸缩 水平伸缩(Scale Out/In) 实例 1 实例 2 实例 3 扩容 → 增加实例 实例 4 实例 5 缩容 → 减少实例 实例 1 实例 2 垂直伸缩(Scale Up/Down) 2C4G 小规格实例 升级规格 ↑ 4C8G 中规格实例 升级规格 ↑ 8C16G 大规格实例 水平伸缩通过增减实例数量应对负载变化,垂直伸缩通过调整单个实例规格应对负载变化。自助服务门户应优先支持水平伸缩编排。