伸缩活动的生命周期覆盖了从判断伸缩组的健康状态和边界条件至启动冷却(cooldown)之间的所有步骤。这一过程根据触发方式(自动或手动)及操作类型(扩展或收缩)有所不同,具体活动流程如下:
自动扩展流程:
- 判断条件:系统首先检查伸缩组的健康状态与边界条件(如最大/最小实例数)。
- 分配Activity ID:为即将执行的伸缩活动分配一个唯一标识符(Activity ID)并开始执行。
- 创建ECS实例:按照伸缩配置创建新的ECS实例。
- 修改Total Capacity:更新伸缩组内的实例总数。
- 分配IP与RDS白名单:为新实例分配IP地址,并可选地将其添加到RDS实例的白名单中。
- 启动ECS实例:启动实例并等待直至其完全启动。
- 挂载负载均衡:将实例添加到CLB后端服务器组,权重依据创建伸缩配置时设定。
- 完成与Cooldown:伸缩活动完成后,启动冷却周期以防止频繁伸缩。
自动收缩流程:
- 判断条件:同样从检查伸缩组的健康状态与边界条件开始。
- 分配Activity ID:分配活动ID并执行收缩活动。
- 移除负载均衡:可选地,先从CLB后端移除ECS实例。
- 停止ECS实例:停止实例并等待停止完成。
- 移出RDS白名单:从RDS白名单中移除实例。
- 释放ECS实例:释放不再需要的ECS实例资源。
- 修改Total Capacity:更新伸缩组内实例数量。
- 完成与Cooldown:活动结束后,进入cooldown阶段。
手工加入ECS实例流程:
- 综合判断:确保伸缩组状态、边界条件以及ECS实例的状态和类型符合要求。
- 执行活动:分配Activity ID并执行加入活动。
- 调整配置:增加实例到伸缩组,更新总容量,处理RDS白名单和CLB挂载,使用当前激活伸缩配置指定的权重。
- Cooldown:活动完成后启动cooldown。
手工移出ECS实例流程:
- 条件检查:确认伸缩组状态和边界条件。
- 执行移出:分配Activity ID,准备移出实例,包括可选的流量停止与等待时间。
- 调整外部依赖:从RDS白名单移除,调整CLB配置(如果适用)。
- 修改Total Capacity:更新伸缩组实例计数。
- 从伸缩组移除:物理上从伸缩组中移出实例。
- Cooldown:最后,启动cooldown阶段。
这些步骤确保了无论是自动还是手动操作,伸缩活动都能有序且高效地进行,维护了系统的稳定性和响应性。