华为云 AS 弹性伸缩实战:自动扩缩容配置指南
华为云 AS 弹性伸缩实战:自动扩缩容配置指南
前言
弹性伸缩(AS)根据业务负载自动增减 ECS 实例数量,保障业务稳定性的同时优化成本。本文介绍 AS 的配置方法和最佳实践。
AS 核心概念
伸缩组
伸缩组是 AS 的核心资源,定义了伸缩的实例模板、网络配置和期望实例数范围。伸缩组内的实例由 AS 自动创建和删除。
伸缩配置
伸缩配置定义实例的规格、镜像、磁盘和登录方式。伸缩组创建实例时使用伸缩配置。一个伸缩组可以关联多个伸缩配置版本。
伸缩策略
伸缩策略定义触发伸缩的条件和动作:
告警策略:监控指标达到阈值时触发伸缩。
定时策略:在指定时间执行伸缩动作。
周期策略:按周期重复执行伸缩动作。
伸缩活动
伸缩活动是一次扩容或缩容操作。记录操作的触发原因、执行结果和涉及的实例。
配置伸缩组
实例模板
选择实例规格和镜像。规格根据应用需求选择,建议选择通用型规格平衡性能和成本。镜像使用预装了应用的自定义镜像,新实例启动即可提供服务。
网络配置
配置 VPC、子网和安全组。伸缩组实例部署在指定子网,使用指定安全组。多可用区配置提高可用性,AS 在多个可用区间均衡创建实例。
实例数范围
设置最小实例数和最大实例数:
最小实例数:始终保持的最少实例数,保障基础容量。
最大实例数:最多扩展到的实例数,防止无限扩容。
期望实例数:当前期望的实例数,AS 自动调整到这个数量。
健康检查
配置健康检查方式:
ELB 健康检查:通过 ELB 健康检查状态判断实例健康。
ECS 状态检查:通过 ECS 运行状态判断实例健康。
不健康实例自动移除并替换,保障伸缩组内所有实例可用。
生命周期钩子
配置实例启动和终止时的钩子:
扩容钩子:新实例启动后等待钩子完成再加入服务。用于执行初始化脚本、等待应用就绪。
缩容钩子:实例终止前等待钩子完成再删除。用于优雅停机、数据迁移。
伸缩策略
告警伸缩
基于监控指标触发伸缩:
CPU 利用率高于 70% 时扩容 1 个实例。
CPU 利用率低于 30% 时缩容 1 个实例。
配置要点:
选择合适的监控指标:CPU 利用率最常用,也可以用自定义指标。
设置合理的阈值:太高响应不及时,太低频繁伸缩。
冷却时间:两次伸缩操作间的等待时间,避免频繁伸缩抖动。
伸缩步长:每次伸缩的实例数,大步长快速响应小步长精确控制。
定时伸缩
在可预测的时间点执行伸缩:
工作日早上 9 点扩容到 10 个实例。
工作日晚上 10 点缩容到 2 个实例。
适合有规律的业务波动,如办公系统白天高峰夜间低谷。
周期伸缩
按周期重复执行伸缩:
每周一早上扩容,周五晚上缩容。
每月初扩容应对月度高峰。
适合周或月级别的规律性业务波动。
最佳实践
镜像准备
伸缩创建的实例需要快速就绪,使用自定义镜像预装应用和配置。新实例启动后只需启动应用服务即可,无需安装和配置。
数据无状态化
伸缩组实例应该无状态,状态数据存储在外部:
会话存储在 DCS Redis。
文件存储在 OBS 或 SFS。
数据库使用 RDS。
无状态实例可以随时创建和删除,不影响业务数据。
优雅伸缩
扩容时新实例就绪后才接收流量:
配置启动生命周期钩子等待应用就绪。
配合 ELB 健康检查,实例健康后才加入后端。
缩容时先移除流量再终止实例:
配置终止生命周期钩子优雅停机。
先从 ELB 后端移除实例,等待连接处理完再终止。
多层伸缩
复杂架构按层独立伸缩:
Web 层伸缩组:根据 HTTP 请求量伸缩。
应用层伸缩组:根据业务负载伸缩。
数据库层:使用 RDS 只读实例伸缩。
各层独立伸缩策略,按需扩缩容优化成本。
监控与调优
伸缩活动监控
查看伸缩活动历史,分析伸缩触发频率和效果。频繁伸缩说明阈值设置不合理,需要调整。
容量规划
分析业务流量规律,设置合理的最小和最大实例数。最小实例数保障基础容量,最大实例数控制成本上限。
成本分析
AS 自动伸缩按需使用资源,低峰自动缩容节省成本。分析伸缩前后的资源使用率和成本变化,持续优化策略。
常见问题
问:伸缩创建实例失败怎么办?
答:检查伸缩配置是否正确,检查资源配额是否充足,检查子网是否有足够 IP,查看伸缩活动错误日志。
问:缩容会删除正在处理请求的实例吗?
答:配置终止钩子和 ELB 健康检查,缩容时先移除流量等待连接处理完再终止,不会中断正在处理的请求。
总结
AS 弹性伸缩让应用自动适应负载变化。关键是实例无状态化、使用自定义镜像快速就绪、配置合理的伸缩策略和阈值。配合优雅伸缩和多层独立伸缩,在保障稳定性的同时优化成本。
- 点赞
- 收藏
- 关注作者
评论(0)