水平自动扩缩容功能

在业务负载出现显著的波峰波谷时,您可以开启水平自动扩缩容功能。这样,EAS服务能够自动调整实例数量,实现动态管理线上服务的计算资源,从而保障业务平稳运行并提高资源利用率。本文介绍如何开启、关闭和更新水平自动扩缩容功能,以及自动扩缩容过程中的目标实例个数的计算公式。

背景信息

管理水平自动扩缩容功能支持两种方式(方式一:通过控制台管理水平自动扩缩容功能方式二:通过本地客户端管理水平自动扩缩容功能)。开启水平自动扩缩容功能后,服务如何自动计算目标实例数请参见扩缩容功能的伸缩策略说明

方式一:通过控制台管理水平自动扩缩容功能

开启水平自动扩缩容功能

  1. 登录PAI控制台

  2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

  3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入模型在线服务(EAS)页面。

  4. 您可以使用以下任意一种方式,打开自动弹性扩缩容设置对话框。

    • 方式一:

      1. 在服务列表中,单击目标服务名称,进入服务详情页面。

      2. 切换到自动伸缩页签,在弹性伸缩区域,单击开启弹性伸缩

    • 方式二:在服务列表中,单击目标服务操作列下的image>弹性伸缩,打开自动弹性扩缩容设置对话框。

  5. 自动弹性扩缩容设置对话框,配置以下参数。

    • 基础配置

      参数

      描述

      最小实例数

      自动弹性扩缩容的下界,支持设置的下限为0。

      最大实例数

      自动弹性扩缩容的上界,支持设置的上限为3000。

      常规扩缩容指标

      在下拉列表中选择常规扩缩容指标并配置伸缩阈值:

      • 单实例QPS伸缩阈值:当单实例的平均QPS大于伸缩阈值时会触发扩容。

      • CPU利用率阈值:当单实例的平均CPU使用率大于伸缩阈值时会触发扩容。

      • 异步队列长度:仅异步服务支持配置。当队列里面的服务请求数大于伸缩阈值时会触发扩容。

      • GPU利用率:当单个实例的平均GPU使用率大于伸缩阈值时会触发扩容。

      自定义扩缩容指标

      自定义配置扩缩容指标和伸缩阈值。

    • 高级配置

      参数

      描述

      扩容生效时长

      指定从扩容指令下达开始到扩容实际生效所需的时长,如果在此期间系统检测到请求量恢复了,将会取消扩容指令。单位为秒,默认值为1秒。

      缩容生效时长

      指定从缩容指令下达开始到缩容实际生效所需的时长,如果在此期间系统检测到请求量增加了,将会取消缩容指令。单位为秒,默认值为300秒。

      缩容到0的生效时长

      指定从缩容指令下达开始到服务实例缩容到0所需的时长。

      0扩容的实例数

      服务从实例数为0开始扩容时,直接扩容到达的指定实例数量。

  6. 单击开启

更新水平自动扩缩容配置信息

  1. 您可以使用以下任意一种方式,打开自动弹性扩缩容设置对话框。

    • 方式一:在自动伸缩页签的弹性伸缩区域,单击更新

    • 方式二:在服务列表中,单击目标服务操作列下的image>弹性伸缩,打开自动弹性扩缩容设置对话框。

  2. 自动弹性扩缩容设置对话框,修改相关配置信息。

  3. 单击更新

关闭水平自动扩缩容功能

  1. 自动伸缩页签的弹性伸缩区域,单击关闭弹性伸缩

  2. 确定关闭弹性伸缩对话框,单击确定

方式二:通过本地客户端管理水平自动扩缩容功能

开启或更新水平自动扩缩容功能

创建服务之后,默认不开启Autoscaling(水平自动扩缩容)功能。您可以登录eascmd客户端后使用autoscale子命令开启Autoscaling功能。如何登录eascmd客户端,请参见下载并认证客户端。开启和更新Autoscaling功能策略方式相同,均支持使用以下两种方式:

  • 参数形式(推荐)

    • 命令格式

      eascmd autoscale [region]/[service_name] -D[attr_name]=[attr_value]
    • 使用示例

      eascmd autoscale cn-shanghai/test_autoscaler -Dmin=2 -Dmax=5 -Dstrategies.qps=10
  • 配置形式

    • 命令格式

      eascmd autoscale [region]/[service_name] -s [desc_json]

      Autoscaling功能通过配置desc_json来控制伸缩策略,desc_json参数配置示例如下。

      {
          "min": 2,
          "max": 5,
          "strategies": {
              "qps": 10
          }
      }

      参数

      描述

      min

      最小实例个数,min需要大于0。

      说明

      即使按伸缩指标计算后所需的实例数小于min,服务实例也不会小于min值。

      max

      最大实例个数,max最大值为300。

      说明

      即便按伸缩指标计算后所需的实例数多于max,服务实例也不会多于max值。

      strategies

      根据业务使用场景,您可以选择qpscpu定义伸缩策略:

      • qps:单实例的QPS伸缩阈值,当单实例的平均QPS大于该值时会触发扩容。

      • cpu:单实例的CPU使用率阈值,取值范围(0,100),当单实例的平均CPU使用率大于该值时会触发扩容。

    • 使用示例

      eascmd autoscale cn-shanghai/test_autoscaler -s scaler.json

关闭水平自动扩缩容功能

  • 命令格式

    eascmd autoscale rm [region]/[service_name]
  • 使用示例

    eascmd autoscale rm cn-shanghai/test_autoscaler

扩缩容功能的伸缩策略说明

  • 自动伸缩过程中目标实例个数的计算公式

    desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
  • 参数说明

    • desiredReplicas:目标实例个数。

    • currentReplicas:当前实例个数。

    • currentMetricValue:当前的伸缩指标均值。

    • desiredMetricValue:期望的伸缩指标的均值。

  • 使用示例

    QPS伸缩为例,您部署服务时压测或预估单实例能够承载的QPS量为10,将单实例的QPS伸缩阈值(strategies.qps)设置为10。当每个实例平均QPS量增加至23时,实例个数为2。根据公式计算目标实例个数为5:ceil[2 * (23/10)] = 5

    若单实例承载的QPS量下降至10,即每个实例平均QPS量为2。根据公式计算目标实例个数为1:ceil[5 * (2/10)] =1。此时实例个数会逐步缩容至1,缩容过程相对平滑一些,避免因请求波动引起异常缩容。

相关文档