全部产品
Search
文档中心

弹性伸缩:伸缩活动概述

更新时间:Nov 08, 2023

执行伸缩规则、手动添加或移出已有ECS实例或ECI实例时,均会触发伸缩活动实现扩张或收缩。触发伸缩活动后,所有扩张和收缩动作都交由系统自动完成,本文以ECS类型的伸缩组为例,介绍系统完成伸缩活动时的流程、伸缩活动的状态和实例回滚。

伸缩活动流程

系统自动触发伸缩活动流程

  • 执行伸缩规则后自动创建ECS实例时的伸缩活动流程

    1. 判断伸缩组的健康状态和边界条件(例如最大实例数或最小实例数)。

    2. 分配伸缩活动ID并执行伸缩活动。

    3. 创建ECS实例。

    4. 修改伸缩组内的实例数。

    5. 为ECS实例分配IP。

    6. (可选)将ECS实例添加至RDS实例白名单。

    7. 启动ECS实例,等待启动完成。

    8. (可选)将ECS实例添加至CLB实例(原SLB)后端服务器组,权重设为创建伸缩配置时指定的权重。

    9. 伸缩活动完成,启动冷却。

  • 执行伸缩规则后自动移出ECS实例时的伸缩活动流程

    1. 判断伸缩组的健康状态和边界条件(例如最大实例数或最小实例数)。

    2. 分配伸缩活动ID并执行伸缩活动。

    3. (可选)从CLB实例(原SLB)后端服务器组移出ECS实例。

    4. 停止ECS实例,等待停止完成。

    5. (可选)从RDS实例白名单移出ECS实例。

    6. 释放ECS实例。

    7. 修改伸缩组内的实例数。

    8. 伸缩活动完成,启动冷却。

手动触发伸缩活动流程

  • 手动添加已有ECS实例时的伸缩活动流程

    1. 判断伸缩组的健康状态、边界条件(例如最大实例数或最小实例数)、ECS实例的状态及类型。

    2. 分配伸缩活动ID并执行伸缩活动。

    3. 将ECS实例加入伸缩组。

    4. 修改伸缩组内的实例数。

    5. (可选)将ECS实例添加至RDS实例白名单。

    6. (可选)将ECS实例添加至CLB实例(原SLB)后端服务器组,权重设为当前伸缩组中已激活的伸缩配置中指定的权重。

    7. 伸缩活动完成,启动冷却。

  • 手动移出已有ECS实例时的伸缩活动流程

    1. 判断伸缩组的健康状态和边界条件(例如最大实例数或最小实例数)。

    2. 分配伸缩活动ID并执行伸缩活动。

    3. (可选)CLB实例(原SLB)停止向该ECS实例转发流量,60秒后ECS实例从CLB实例(原SLB)后端服务器组移出。

    4. (可选)从RDS实例白名单移出ECS实例。

    5. 修改伸缩组实例数。

    6. 从伸缩组移出ECS实例。

    7. 伸缩活动完成,启动冷却。

伸缩活动状态

一个伸缩活动可能的状态如下表所示。

伸缩活动状态

说明

示例

拒绝

伸缩活动在请求阶段被拒绝,未执行扩张或收缩动作。

说明

您可以单击拒绝状态后的查看拒绝原因,了解伸缩活动的拒绝详情。

场景

  • 伸缩组的最大实例数为100台

  • 伸缩组内已有100台ECS实例

  • 伸缩规则要求自动创建10台ECS实例

结果:伸缩活动未通过条件检验,被拒绝执行,无后续流程。伸缩活动结束后,伸缩组内实例数仍然为100台。

执行中

伸缩活动通过条件检验,正在执行中。

弹性伸缩会根据伸缩最大实例数和伸缩最小实例数,自动调整需要扩张或收缩的ECS实例数量。

场景

  • 伸缩组的伸缩最大实例数为100台

  • 伸缩组内已有95台ECS实例

  • 伸缩规则要求自动创建10台ECS实例

结果:伸缩活动通过条件检验,可以执行,但自动创建的ECS实例数量会调整为5台。伸缩活动结束后,伸缩组内实例数变为100台。

成功

伸缩活动执行完成,所有目标ECS实例加入或移出了伸缩组。

场景

  • 伸缩组的最大实例数为100台

  • 伸缩组内已有90台ECS实例

  • 伸缩规则要求自动创建10台ECS实例

结果:伸缩活动通过条件检验,可以执行。伸缩活动结束后,伸缩组内实例数变为100台。

警告

伸缩活动执行完成,至少有一台目标ECS实例加入或移出了伸缩组,且至少有一台目标ECS实例未能加入或移出伸缩组。

成功加入伸缩组表明ECS实例的创建、加入CLB实例(原SLB)后端服务器组、加入RDS访问白名单三个步骤都成功,任一步骤失败即认为该ECS实例加入伸缩组失败。

说明

ECS实例加入伸缩组失败时会触发回滚,更多信息,请参见ECS实例回滚

场景

  • 伸缩组已关联CLB实例(原SLB),创建成功的ECS实例会自动加入后端服务器组

  • CLB实例(原SLB)的后端服务器配额为200

    说明

    更多信息,请参见使用限制

  • 伸缩组的最大实例数为300台

  • 伸缩组内已有199台ECS实例,且已加入CLB实例(原SLB)后端服务器组

  • 伸缩规则要求自动创建5台ECS实例

结果:伸缩活动通过条件检验,可以执行,创建5台ECS实例。但由于CLB实例(原SLB)后端服务器的配额为200,4台ECS实例加入后端服务器组失败,导致加入伸缩组失败。伸缩活动结束后,伸缩组内实例数变为200。

失败

伸缩活动执行完成,所有目标ECS实例未能加入或移出伸缩组。

场景

  • 伸缩组所在地域中,伸缩配置中的实例规格已无库存

  • 伸缩组的最大实例数为100台

  • 伸缩组内已有95台ECS实例

  • 伸缩规则要求自动创建5台ECS实例

结果:伸缩活动通过条件检验,可以执行,但因库存不足创建失败。伸缩活动结束后,伸缩组内实例数仍然为95台。

ECS实例回滚

伸缩活动中ECS实例未能全部加入伸缩组时,弹性伸缩会保持ECS实例级事务的完整性,而非伸缩活动级事务的完整性,即只进行ECS实例级回滚,而不是伸缩活动级回滚。

重要

当伸缩组内发生ECS实例回滚时,ECS实例的数量未达到预期值,可能导致无法满足提供算力、维持监控指标值等要求。此时,您可以采取其他方式补齐ECS实例的数量,确保伸缩组满足您的业务诉求。例如,手动执行伸缩规则、手动添加已有ECS实例、配置定时任务或报警任务再次触发伸缩活动。

  • 自动添加ECS实例

    通过OpenAPI弹性创建ECS实例时,由于弹性伸缩借助阿里云RAM(Resource Access Management)服务,被回滚的ECS实例在创建成功后至自动释放前这段时间仍然会被扣费。

    例如,伸缩组需要增加5台ECS实例,且5台ECS实例需要加入负载均衡实例的后端服务器组。创建成功后,2台成功加入,3台加入失败,则加入失败的3台ECS实例自动释放。伸缩活动完成,但是状态显示为警告伸缩活动

  • 手动添加ECS实例

    通过手动方式添加已有实例,被回滚的ECS实例会被自动移出伸缩组,但该ECS实例不会被释放。