华为云弹性伸缩 AS 结合 ELB 负载均衡实践:业务高峰自动扩缩容
在做电商、内容分发、在线服务这类业务时,一个绕不开的问题是:流量有明显的波峰波谷。白天和深夜访问量差几倍,大促时又可能瞬间翻十倍。如果按峰值配置固定数量的 ECS,成本会高得吓人;如果按平均值配置,高峰期又扛不住。华为云弹性伸缩(Auto Scaling,简称 AS)就是为了解决这个问题——它能在预设的策略下自动增减弹性云服务器(ECS),配合负载均衡(ELB)把请求均匀分发到所有健康的节点,让系统既能扛住高峰,又不在低谷时浪费钱。
这篇文章记录我在一次业务上线中,用 AS + ELB 搭建弹性集群的完整过程,包括伸缩组怎么配、伸缩策略怎么设、和 ELB 怎么联动,以及几个踩过的坑。
一、整体架构
最前面是 ELB 实例,对外提供一个 VIP(虚拟 IP)或域名。ELB 后面挂一个后端服务器组,成员就是弹性伸缩组(Scaling Group)里的 ECS 实例。用户请求进来,ELB 按负载均衡策略(我用的加权轮询)转发到后端某台 ECS。当负载升高,AS 按伸缩策略自动创建新实例并自动加入 ELB 后端组;当负载回落,AS 自动释放多余实例并从后端组摘除,全程无需人工干预。
几个关键组件:
- 伸缩组(Scaling Group):定义一组 ECS 的最小、最大和期望实例数,是 AS 的管理单元。
- 伸缩配置(Scaling Configuration):新建实例用的模板,指定镜像、规格、系统盘、数据盘、安全组、子网等。
- 伸缩策略(Scaling Policy):在什么条件下、按什么幅度增减实例。
- 冷却时间(Cooldown):一次伸缩动作后的缓冲期,防止频繁伸缩导致震荡。
二、创建伸缩配置
创建伸缩组之前,先创建伸缩配置,本质是预定义一个 ECS 模板。我选的是通用型 s6.large(2 vCPU 4GB),系统盘选高 I/O,安全组放通 80、443 和业务端口。如果 ECS 需要自动加入 ELB 后端组,伸缩配置里可以直接关联 ELB 的后端服务器组,也可以让伸缩组在创建实例后自动注册。华为云支持在伸缩组里直接绑定 ELB 实例和端口,新建的 ECS 会自动成为 ELB 后端,释放时自动摘除,省去手动维护后端列表的麻烦。
三、创建伸缩组并绑定 ELB
进入 AS 控制台创建伸缩组。我配置的核心参数是:最小实例数 2,最大实例数 8,期望实例数 2,也就是平时保 2 台、最多扩到 8 台。在关联负载均衡里选上前面的 ELB 实例并填监听端口(比如 8080),伸缩配置指向刚建好的模板。
创建完伸缩组后要记得启用伸缩组。默认新建的伸缩组是暂停状态,不启用不会触发任何伸缩动作——这是我第一个踩的坑,配了半天发现实例数纹丝不动,最后是忘了启用。
四、伸缩策略:定时 + 告警双保险
我配了两类策略互为补充。第一类是定时策略:业务有明显规律,每天 8 点到 24 点是高峰,我设了每天 7:45 扩容把期望实例数提到 6、每天 23:30 缩容回 2,保证流量高峰到来之前实例已经就绪,避免临时抱佛脚扩容来不及。
第二类是告警策略:关联云监控(CES)告警,监测 ELB 后端服务器平均 CPU 利用率。当 5 分钟内 CPU 持续超过 70% 就增加 2 个实例;持续低于 20% 超过 10 分钟就减少 1 个实例,用来兜底,一旦流量异常暴涨、定时策略没覆盖到,告警策略能自动补位。
关键参数是冷却时间:我把扩容冷却设为 5 分钟、缩容冷却设为 10 分钟。一次扩容后新实例需要时间启动、通过健康检查、承接流量,立刻又触发下一次扩容很容易扩过头。把缩容冷却设得比扩容长,是为了避免流量波动时扩了又缩、缩了又扩的震荡。
五、健康检查与故障自愈
ELB 会自动对后端 ECS 做健康检查,某台实例连续几次健康检查失败就会被摘除,流量自动落到其他健康实例上,实现故障隔离。配合 AS 的期望实例数机制:一台实例挂了被释放,伸缩组检测到实际数低于期望值会自动补齐一台新的。我测试时手动停掉一台 ECS,约一两分钟后 AS 自动创建并纳管了新实例,ELB 后端组随之更新,业务基本无感。
六、踩过的几个坑
- 伸缩组没启用:新建的伸缩组默认暂停,一定要点启用。
- 安全组没放通 ELB 健康检查来源:如果只放通业务端口而没放通 ELB 探测,实例会一直不健康,流量进不来。
- 扩容速度受限:扩容受资源配额和镜像库存限制,某规格在可用区售罄时扩容会失败或变慢,建议配置多可用区或多套伸缩配置兜底。
- 冷却时间太短导致震荡:CPU 指标本身有抖动,冷却太短会把正常波动误判成反复伸缩,一开始设 1 分钟后来加到 5~10 分钟就稳了。
- 期望实例数和最小/最大数要配合:期望值小于最小值时实际以最小值为准,扩缩容不能突破最小和最大边界。
七、成本与容量的小技巧
用 AS 最大的收益是成本弹性。之前按固定 5 台 ECS 跑,月费固定;改成 AS 后平时 2 台、高峰最多 8 台,按量付费 ECS 加上 ELB 少量费用,整体成本明显下降,还扛住了几次流量小高峰。
- 把不频繁访问的静态资源放 OBS + CDN,减轻后端压力,减少需要伸缩的量级。
- 用竞价实例 + 按需(固定价格)实例混合的伸缩配置,进一步压低高峰期单价。
- 定期看云监控里伸缩动作的记录,复盘策略,冷却时间和阈值需根据实际负载持续调优。
结语
AS + ELB 这套组合,本质上是把容量管理从人工操作变成自动化闭环:负载升高自动扩容、负载回落自动缩容、实例故障自动摘除补齐。配置上不难,难的是把伸缩策略、冷却时间、健康检查、配额这些细节调到和自己的业务节奏匹配。跑一段时间后,看着云监控里那条伸缩曲线跟着业务峰谷平稳起伏,是这套架构给到的最实在的安心感。
- 点赞
- 收藏
- 关注作者
评论(0)