本文介绍弹性伸缩的工作流程、伸缩模式的配置和弹性伸缩示意图。

本文以伸缩组内的实例是ECS实例为例,介绍弹性伸缩的工作原理等。如果您选择伸缩组内的实例是ECI实例,除伸缩组不支持关联RDS数据库和不支持手动加入或删除已有ECI实例外,其他内容一致。

工作流程

工作原理

假设某WEB应用使用ECS实例处理请求,系统架构分为三层,如上图右侧虚线框所示。最上层负载均衡负责将客户端的请求转发给伸缩组内的ECS实例,中间层伸缩组内的ECS实例负责处理请求,最下层RDS数据库负责存储来自ECS实例的业务数据。

您可以通过弹性伸缩调整中间层ECS实例的数量,从而调整处理请求的能力。上图是弹性伸缩增加ECS实例的流程示意图,具体流程说明如下:

  1. 弹性伸缩在符合各伸缩模式的触发条件时自动触发伸缩活动,伸缩模式如下。伸缩模式的配置方式,请参见伸缩模式的配置
    • 固定数量模式:
      • 您在伸缩组设置了最小实例数,当伸缩组的ECS实例数量低于下限时,伸缩组会自动添加ECS实例,使得伸缩组内的ECS实例数量等于下限。
      • 您在伸缩组设置了最大实例数,当伸缩组的ECS实例数量超过上限时,伸缩组会自动移出ECS实例,使得伸缩组内的ECS实例数量等于上限。
      • 您可以在创建伸缩组时设置期望实例数,伸缩组会自动将ECS实例数量维持在期望实例数。
    • 健康模式:您可以在伸缩组开启健康检查功能,伸缩组会定期检查ECS实例的运行状态,如果发现一台ECS实例未处于运行中状态,则判定为不健康并移出该ECS实例。
    • 定时模式:您可以创建定时任务,在指定时间执行指定伸缩规则。
    • 自定义模式:您可以手动进行弹性伸缩,包括手动执行伸缩规则,或者手动添加、移出或者删除已有的ECS实例。
    • 动态模式:您可以基于云监控性能指标(如CPU利用率)创建报警任务,当伸缩组的指标数据满足您指定的报警条件(如伸缩组内所有实例的CPU平均值大于60%)时,触发报警并执行您指定的伸缩规则。
    说明 以上所有模式都可以组合配置,即多模式并行。例如,在每天中午12点开始,业务需求明显增加,您可以设置定时任务,在每天12点创建20台ECS实例以应对业务高峰。但创建的ECS实例台数不一定能满足需求, 则您可以选择其他伸缩模式,如动态模式、自定义模式等,与定时模式组合起来使用。
  2. 系统自动通过ExecuteScalingRule接口触发伸缩活动,并在该接口中指定需要执行的伸缩规则的阿里云资源唯一标识符(Ari)。

    如果动态模式使用的云监控指标是由您自有的监控系统上报给云监控的,您需要在自己的程序中调用ExecuteScalingRule接口。

  3. 根据步骤2传入的伸缩规则Ari(Rule Ari)获取伸缩规则、伸缩组、伸缩配置的相关信息,并创建伸缩活动。
    1. 通过伸缩规则Ari 查询伸缩规则以及相应的伸缩组信息,计算出需要增加的实例数量,并获得需要配置的负载均衡和RDS信息。
    2. 通过伸缩组查询到相应的伸缩配置信息,即获得了需要创建的实例的配置信息(CPU、内存、带宽等)。
    3. 根据需要增加的实例数量、实例配置信息、需要配置的负载均衡实例和RDS实例创建伸缩活动。
  4. 在伸缩活动中,自动创建实例并配置负载均衡和RDS。
    1. 按照实例配置信息创建指定数量的实例。
    2. 将创建好的实例的内网IP添加到指定的RDS实例的访问白名单当中,将创建好的实例添加到指定的负载均衡实例当中。
  5. 伸缩活动完成后,启动伸缩组的冷却功能。待冷却时间完成后,该伸缩组才能接收新的执行伸缩规则请求。

伸缩模式的配置

如果您想使弹性伸缩通过某个伸缩模式触发伸缩活动,您需要选择对应的配置方式,如下表所示。弹性伸缩会自动根据配置适时触发伸缩活动,增加或移出伸缩组的ECS实例。

伸缩模式 配置方式 说明
固定数量模式 伸缩组+实例配置来源 该模式的伸缩效果由伸缩组以下配置项决定:
  • 最小实例数
  • 最大实例数
  • 期望实例数(可选)
健康模式 伸缩组+实例配置来源 该模式需要开启伸缩组中实例的健康检查配置项。
定时模式 伸缩组+实例配置来源+伸缩规则+定时任务 该模式的伸缩效果由定时任务决定。
动态模式 伸缩组+实例配置来源+伸缩规则+报警任务 该模式的伸缩效果由报警任务决定。
自定义模式 任意伸缩模式的配置方式 在任意伸缩模式下,您可以手动添加、移出或者删除已有的ECS实例。如果您配置了伸缩规则,您还可以手动执行伸缩规则。
多模式并行 组合各伸缩模式的配置方式 根据选用的伸缩模式不同,生效的配置项不同。比如,您同时选用了定时模式和动态模式,您需要同时配置定时任务和报警任务。

① 伸缩组+实例配置来源:您需要先创建伸缩组,再为伸缩组配置实例配置来源,然后启用实例配置来源和伸缩组。完成以上操作后,弹性伸缩才可以自动进行弹性扩张和收缩。该配置方式是必选的基础配置方式,是最小的配置单元。

② 伸缩组+实例配置来源+伸缩规则+定时任务:在基础配置方式上(即①),您需要创建伸缩规则,再创建定时任务。弹性伸缩通过定时任务来自动执行伸缩规则。

③ 伸缩组+实例配置来源+伸缩规则+报警任务:在基础配置方式上(即①),您需要创建伸缩规则,再创建报警任务。弹性伸缩通过报警任务来自动执行伸缩规则。

弹性伸缩示意图

弹性伸缩支持为伸缩组关联负载均衡和RDS实例。当您从终端(如移动端或PC端)发起请求时,负载均衡负责将您的请求转发给伸缩组内的某台ECS实例,ECS实例接收并处理请求,并将应用数据保存在云数据库RDS实例。

弹性伸缩根据业务需求和配置方式自动调整伸缩组内的ECS实例数量,以下为您分别提供扩容、缩容和弹性自愈(即健康检查)场景下弹性伸缩的示意图。

图 1. 弹性扩张示意图
弹性扩张示意图
图 2. 弹性收缩示意图
弹性收缩示意图
图 3. 弹性自愈示意图
弹性自愈示意图