弹性资源池

为保证服务扩容时,不受专属资源组机器资源的限制,EAS提供了弹性资源池的能力。即部署在专属资源组中的服务,在扩容时遇到机器资源不足时,新扩出来的实例会自动启动在按量付费的公共资源上,并以公共资源组的方式来进行计费;在缩容时会优先缩掉公共资源组中的服务实例。

前提条件

已创建专属资源组,详情请参见使用专属资源组

背景信息

EAS的专属资源组中,您可以通过预付费包年包月后付费按量付费的方式来购买机器节点。一方面可以保证持久持有一定量的保底资源,避免业务临时扩容资源时因库存不足(特别是GPU资源)导致业务受损;另一方面,在专属资源组中可以用更低的价格购买预付费的资源,您可以用更低的成本来持有保底资源。

而在实际应用中,用户通常希望服务资源能更弹性。即在业务高峰时段,能够更方便的使用更多的后付费资源;而在业务低峰时段,又能自动进行缩容。配合EAS提供的水平自动扩缩容的能力,服务可做到实例维度的自动伸缩。但在专属资源组中,机器节点资源有限的情况下,实例的伸缩会受到资源组中机器资源的限制,而动态扩缩资源组中的机器节点数量效率太低且使用不便。因此,EAS提供了专属资源组服务资源自动伸缩的功能。

功能优势

该功能非常适合配合水平自动扩缩容功能来使用,服务开启根据QPSCPU等指标的波动自动伸缩的功能后,开启服务资源自动伸缩功能可保证资源不受专属资源组的限制。相当于更方便地在一个服务中组合使用按量付费和预付费资源,可以大幅降低服务的整体资源成本。

配置方法

服务部署时开启资源自动伸缩

通过控制台

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 自定义部署页面的资源部署区域,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台

    参数

    描述

    资源类型

    选择EAS资源组

    资源组

    选择已创建的专属资源组。

    弹性资源池

    打开弹性资源池开关,并选择公共资源组资源规格,为部署在专属资源组中的服务开启弹性资源池能力。

    完成弹性资源池配置后,服务扩容时遇到机器资源不足,新扩出的实例会自动启动在已配置的按量付费公共资源上,并以公共资源组的方式进行计费。在缩容时,优先缩减公共资源组中的服务实例。

    image

  4. 单击部署

通过本地客户端

使用eascmd客户端部署服务时,开启资源自动伸缩功能。以Windows 64版本为例,具体操作步骤如下:

  1. 配置JSON文件。

    重要

    公共资源组和专属资源组中的服务,在资源配置和网络配置上有稍许不同。在公共资源组中可以通过配置实例类型来为服务申请资源(即通过cloud.computing字段配置);公共资源组的网络直连是配置在服务中的(即通过cloud.networking字段配置),而专属资源组的网络直连是配置在资源组级别的。因此,如果要保证网络直连功能在资源自动伸缩过程中同样可用,则在部署服务时,需要增加相关的网络配置项。

    JSON文件配置示例如下。

    {
      "model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
      "name": "test_burstable_service",
      "processor": "pmml",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "resource": "eas-r-xxx",
        "resource_burstable": true
      },
       "cloud": {
            "computing": {
                "instance_type": "ecs.r7.2xlarge"
            },
            "networking": {
                "security_group_id": "sg-uf68iou5an8j7sxd****",
                "vswitch_id": "vsw-uf6nji7pzztuoe9i7****"
            }
        }
    }

    其中:

    • resource_burstable:配置为true时,表示开启资源自动伸缩功能。

    • cloud.networking:在专属资源组中部署服务时,该参数不生效。为保证网络直连功能在资源伸缩过程中同样可用,需要配置该参数。

    • cloud.computing:可选,如果您希望扩容到公共资源的实例使用机器实例资源,则需要在JSON文件中配置该参数,详情请参见使用公共资源组

    其他参数配置说明,详情请参见服务模型所有相关参数说明

  2. 使用eascmd客户端部署模型服务,详情请参见服务部署:EASCMDDSW

    该服务部署在专属资源组中,当服务扩容时,如果专属资源组中机器资源不足,会自动将实例扩容到公共资源组中。

服务部署后,开启或关闭资源自动伸缩

通过控制台

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 单击已部署服务操作列下的更新

  3. 更新服务页面的资源部署区域开启或关闭资源自动伸缩功能。

    • 开启资源自动伸缩

      资源部署区域,打开弹性资源池开关,并配置公共资源组资源规格。

    • 关闭资源自动伸缩

      资源部署区域,关闭弹性资源池开关。

  4. 单击更新

通过本地客户端

您可以使用以下命令,为已部署的服务快速打开或关闭自动伸缩功能。以Windows 64版本为例:

重要

如果在专属资源组中部署服务时未配置cloud.networking参数,则开启自动伸缩功能后,扩容到公共资源组的实例不支持网络直连功能。

# 开启服务资源自动弹性伸缩。
eascmdwin64.exe modify <service_name> -Dmetadata.resource_burstable=true

# 关闭服务资源自动弹性伸缩。
eascmdwin64.exe modify <service_name> -Dmetadata.resource_burstable=false

其中:<service_name>:需要替换为已部署的服务名称。

重要

服务资源自动伸缩功能的开启和关闭只会影响新创建的服务实例,老实例不会自动做迁移。例如:一个服务扩容完成后有2个实例为pending(等待中)状态,在开启了资源自动伸缩功能后,这2pending(等待中)的实例不会自动迁移至公共资源组上。您可以在控制台上重启该实例,实例重启后会调度到公共资源中。同理,已经开启了自动伸缩的服务,调度到公共资源中的服务实例,在关闭了资源自动伸缩功能后,也不会自动调度回专属资源中。

相关文档