弹性伸缩是什么
弹性伸缩按规则自动增减实例数量,让计算容量跟随业务负载变化:负载升高时按模板创建新实例并挂到负载均衡后端,负载回落后缩容并释放实例。它由三部分组成——伸缩组定义数量边界与扩容范围,伸缩配置或启动模板定义新实例长什么样,伸缩规则定义何时触发。
基本信息
| 伸缩组 | 设置最小、期望与最大实例数,并绑定可用区与负载均衡后端 |
|---|---|
| 伸缩配置 | 定义新实例的镜像、规格、密钥、安全组与初始化数据 |
| 伸缩规则 | 按监控指标、定时任务或目标追踪触发扩缩容 |
| 冷却时间 | 两次伸缩之间的等待窗口,避免指标抖动引发反复扩缩 |
| 实例来源 | 扩容产生的多为按量实例;也可把已有包年实例手动加入伸缩组 |
| 健康检查 | 负载均衡与伸缩组各自的健康检查都会触发替换不健康实例 |
三类触发方式的差别
| 方式 | 触发依据 | 适合场景 |
|---|---|---|
| 指标触发 | CPU、内存或自定义监控超过阈值 | 日间波动明显、峰值可预测 |
| 定时触发 | 按计划在指定时间调整容量 | 有明显作息规律,如白天扩容、夜间缩容 |
| 目标追踪 | 设定目标值,系统自动维持 | 指标平稳但流量不规律的业务 |
典型使用场景
- 面向公众的 Web 服务:白天扩容、夜间缩容,压住峰谷差
- 定时任务集中期:在批处理时段临时扩到更大规模,跑完自动回收
- 压测与活动大促:提前按计划扩容,活动结束后快速缩回
- 无状态服务的容灾:实例被替换或可用区异常时自动补足数量
伸缩前先确认的两件事
伸缩前先确认的两件事
aliyun ess DescribeScalingGroups --RegionId cn-hangzhou # 查看伸缩组与当前实例数
aliyun ess DescribeScalingInstances --ScalingGroupId asg-bp1xxxx # 查看组内实例状态
# 确认负载均衡后端是否已绑定,未绑定时扩容出的实例不会接流
aliyun slb DescribeLoadBalancerAttribute --LoadBalancerId lb-bp1xxxx
# 华为云与腾讯云对应 AS 与伸缩组接口,字段名不同但概念一致扩容速度取决于镜像启动与初始化脚本:启动脚本越重,新实例接流越慢。把常用环境预置进自定义镜像,只保留必要的个性化初始化,可以明显缩短扩容到接流的时间。
最大实例数是最重要的安全阀:指标配置错误或外部攻击引发异常流量时,容量会一路扩到上限产生高额账单。除了设置上限,还要给伸缩活动配告警,异常扩容能被及时发现。
缩容会终止实例,应用必须能在收到终止信号后优雅摘除:先把自身从注册中心或后端池摘除,等待在途请求处理完再退出。没有这套机制时,缩容会直接表现为用户请求失败。