ALIYUN::EHPC::AutoScaleConfig类型用于设置指定集群的自动伸缩配置信息。

语法

{
  "Type": "ALIYUN::EHPC::AutoScaleConfig",
  "Properties": {
    "ExtraNodesGrowRatio": Integer,
    "EnableAutoGrow": Boolean,
    "ClusterId": String,
    "ShrinkIdleTimes": Integer,
    "MaxNodesInCluster": Integer,
    "EnableAutoShrink": Boolean,
    "GrowRatio": Integer,
    "GrowIntervalInMinutes": Integer,
    "GrowTimeoutInMinutes": Integer,
    "ImageId": String,
    "ShrinkIntervalInMinutes": Integer,
    "SpotPriceLimit": Number,
    "Queues": List,
    "ExcludeNodes": String,
    "SpotStrategy": String
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
ExtraNodesGrowRatio Integer 额外节点百分比。 如果作业负载需要新增100个计算节点,当ExtraNodesGrowRatio取值为2时,那么最终新增的计算节点为102个。

取值范围:0~100。

默认值:0。

EnableAutoGrow Boolean 是否开启自动扩容。 取值:
  • true:开启自动扩容。
  • false(默认值):关闭自动扩容。
ClusterId String 集群ID。
ShrinkIdleTimes Integer 节点连续空闲(未运行作业)次数。 当节点收缩检查时,一个节点连续处于空闲状态的次数。

取值范围:2~5。

默认值:3。

如果设置节点连续空闲次数为3,表示一个计算节点连续空闲超过3次就会被释放。因为ShrinkIntervalInMinutes默认值是2分钟,所以在默认配置下,一个计算节点连续空闲时间超过6分钟,就会被释放。
MaxNodesInCluster Integer 集群最多可以扩容的计算节点数量。 取值范围:0~500。

默认值:100。

EnableAutoShrink Boolean 是否开启自动缩容。 取值:
  • true:开启自动缩容。
  • false(默认值):关闭自动缩容。
GrowRatio Integer 扩容比例。 如果作业负载需要新增10个计算节点,GrowRatio配置为50,那么会进行多轮扩容,每轮扩容当前所需的50%节点。

取值范围:1~100。

默认值:100。

GrowIntervalInMinutes Integer 每轮计算节点扩容的时间间隔。 单位:分钟。

取值范围:2~10。

默认值:2。

说明 一次扩容任务可能会分几次完成,或者连续触发扩容时的时间间隔。
GrowTimeoutInMinutes Integer 扩容超时时间。 单位:分钟。

取值范围:10~60。

默认值:20。

当扩容时间大于扩容超时时间时,节点依然未达到运行状态,该节点将被释放。
ImageId String 镜像ID。
说明
  • 如果同时设置了QueueImageId和ImageId时,默认使用QueueImageId。
  • 如果设置了QueueImageId或ImageId,以设置的参数为准。
  • 如果QueueImageId和ImageId都为空,则默认使用集群上次扩容的镜像,若之前没有进行过扩容,则默认使用创建集群时的镜像。
ShrinkIntervalInMinutes Integer 每轮计算节点收缩的时间间隔。 单位:分钟。

取值范围:2~10。

默认值:2。

SpotPriceLimit Number 设置节点的每小时最高价格。 最多支持3位小数。

当参数SpotStrategy取值为SpotWithPriceLimit时,本参数生效。

Queues List 扩容队列配置列表。 更多信息,请参见Queues属性
ExcludeNodes String 例外节点列表,不参与自动伸缩的节点列表。 节点之间用半角逗号(,)隔开。
说明 如果您希望一直保留某个节点,可以设置为例外节点,空闲时不被释放。
SpotStrategy String 计算节点抢占策略。 取值:
  • NoSpot(默认值):正常按量付费节点。
  • SpotWithPriceLimit:设置上限价格的抢占式节点。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格的抢占式节点。

Queues语法

"Queues": [
  {
    "HostNameSuffix": String,
    "MinNodesInQueue": Integer,
    "MaxNodesInQueue": Integer,
    "EnableAutoGrow": Boolean,
    "DataDisks": List,
    "SystemDiskSize": Integer,
    "SystemDiskLevel": String,
    "QueueImageId": String,
    "MinNodesPerCycle": Integer,
    "MaxNodesPerCycle": Integer,
    "EnableAutoShrink": Boolean,
    "SystemDiskCategory": String,
    "HostNamePrefix": String,
    "SpotPriceLimit": Number,
    "InstanceTypes": List,
    "InstanceType": String,
    "QueueName": String,
    "SpotStrategy": String
  }
]

Queues属性

属性名称 类型 必须 允许更新 描述 约束
HostNameSuffix String 队列中扩容的主机名后缀。
MinNodesInQueue Integer 队列允许收缩的最小节点数。 取值范围:0~50。

默认值:0。

MaxNodesInQueue Integer 队列允许扩容的最大节点数。 取值范围:0~500。

默认值:100。

EnableAutoGrow Boolean 队列是否允许自动扩容。 取值:
  • true:允许自动扩容。
  • false(默认值):不允许自动扩容。
DataDisks List 数据盘配置列表。 更多信息,请参见DataDisks属性
SystemDiskSize Integer 队列中扩容的节点系统盘大小。 单位:GB。

取值范围:40~500。

默认值:40。

SystemDiskLevel String 队列中扩容的计算节点系统盘性能等级。 取值:
  • PL0:单盘最高随机读写IOPS 1万。
  • PL1(默认值):单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。
QueueImageId String 扩容队列的镜像ID。
说明
  • 如果同时设置了QueueImageId和ImageId,默认使用QueueImageId。
  • 如果设置了QueueImageId或ImageId,以设置的参数为准。
  • 如果QueueImageId和ImageId都为空,则默认使用集群上次扩容的镜像,若之前没有进行过扩容,则默认使用创建集群时的镜像。
MinNodesPerCycle Integer 自动伸缩每轮扩容的最小计算节点数。 取值范围:1~99。

默认值:1。

如果某一轮次需扩容节点数量小于所设置的最小计算节点数,自动伸缩为保证资源的正常交付,会将该轮次的最小计算节点数自动调整为当前轮次需要扩容节点数量。
说明 该调整仅对当前轮次的最小计算节点数生效。
MaxNodesPerCycle Integer 自动伸缩每轮扩容的最大计算节点数。 取值范围:0~99。

默认值:0。

EnableAutoShrink Boolean 队列是否允许自动缩容。 取值:
  • true:允许自动缩容。
  • false(默认值):不允许自动缩容。
SystemDiskCategory String 队列中扩容的计算节点系统盘类型。 取值:
  • cloud_efficiency(默认值):高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
  • cloud:普通云盘,已售罄。
HostNamePrefix String 队列中扩容的主机名前缀。
SpotPriceLimit Number 队列中自动扩容的计算节点的每小时最高价格。 最多支持3位小数。

当参数Queues.N.SpotStrategy取值为SpotWithPriceLimit时,本参数生效。

InstanceTypes List 队列中自动扩容的节点配置列表。 更多信息,请参见InstanceTypes属性
InstanceType String 队列中自动扩容的节点规格。
QueueName String 队列名称。 支持同时设置N个队列的名称。
SpotStrategy String 队列中自动扩容的计算节点的抢占策略。 取值:
  • NoSpot(默认值):正常按量付费节点。
  • SpotWithPriceLimit:设置上限价格的抢占式节点。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格的抢占式节点。

DataDisks语法

"DataDisks": [
  {
    "DataDiskKMSKeyId": String,
    "DataDiskPerformanceLevel": String,
    "DataDiskEncrypted": Boolean,
    "DataDiskDeleteWithInstance": Boolean,
    "DataDiskSize": Integer,
    "DataDiskCategory": String
  }
]

DataDisks属性

属性名称 类型 必须 允许更新 描述 约束
DataDiskKMSKeyId String 第N个随节点创建的数据盘使用的KMS密钥ID。
DataDiskPerformanceLevel String 第N个随节点创建的数据盘类型为ESSD云盘时,区分性能等级。 当DataDiskCategory取值为cloud_essd时,本参数有效。

取值:

  • PL0:单盘最高随机读写IOPS 1万。
  • PL1(默认值):单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。
DataDiskEncrypted Boolean 第N个随节点创建的数据盘是否加密。 取值:
  • true:第N个随节点创建的数据盘加密。
  • false(默认值):第N个随节点创建的数据盘不加密。
DataDiskDeleteWithInstance Boolean 第N个随节点创建的数据盘是否随实例释放。 取值:
  • true(默认值):第N个随节点创建的数据盘随实例释放。
  • false:第N个随节点创建的数据盘不随实例释放。
DataDiskSize Integer 第N个随节点创建的数据盘容量大小。 单位:GB。

取值范围:40~500。

默认值:40。
DataDiskCategory String 第N个随节点创建的数据盘类型。 取值:
  • cloud_efficiency(默认值):高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
  • cloud:普通云盘。

InstanceTypes语法

"InstanceTypes": [
  {
    "ZoneId": String,
    "VSwitchId": String,
    "SpotPriceLimit": Number,
    "InstanceType": String,
    "SpotStrategy": String
  }
]

InstanceTypes属性

属性名称 类型 必须 允许更新 描述 约束
ZoneId String 队列中自动扩容的节点所在可用区ID。 支持同时设置N个队列的名称和同时为队列中N个节点设置可用区ID。

当队列自动扩容时,相关配置生效。

N的取值范围:0~500。

VSwitchId String 队列中自动扩容的节点绑定的交换机ID。 支持同时设置N个队列的名称和同时为队列中N个节点设置交换机ID。

当队列自动扩容时,相关配置生效。

N的取值范围:0~500。

SpotPriceLimit Number 队列中自动扩容的节点每小时最高价格。 最多支持3位小数。

当参数SpotStrategy取值为SpotWithPriceLimit时,本参数生效。

支持同时设置N个队列的名称和同时为队列中N个节点设置每小时最高价格。

当队列自动扩容时,相关配置生效。

N的取值范围:0~500。

InstanceType String 队列中自动扩容的节点规格。 支持同时设置N个队列的名称和同时为队列中N个节点设置规格参数。

当队列自动扩容时,相关配置生效。

N的取值范围:0~500。

SpotStrategy String 队列中自动扩容的计算节点竞价策略。 取值:
  • NoSpot(默认值):正常按量付费节点。
  • SpotWithPriceLimit:设置上限价格的抢占式节点。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格的抢占式节点。

支持同时为队列中N个节点设置计算节点竞价策略。

当队列自动扩容时,相关配置生效。

N的取值范围:0~500。

返回值

Fn::GetAtt

ClusterId:集群ID。

示例

  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "ClusterId": {
          "Type": "String",
          "Description": "Cluster ID."
        },
        "Queues": {
          "Type": "Json",
          "Description": "",
          "MaxLength": 8
        }
      },
      "Resources": {
        "AutoScaleConfig": {
          "Type": "ALIYUN::EHPC::AutoScaleConfig",
          "Properties": {
            "ClusterId": {
              "Ref": "ClusterId"
            },
            "Queues": {
              "Ref": "Queues"
            }
          }
        }
      },
      "Outputs": {
        "ClusterId": {
          "Description": "Cluster Id.",
          "Value": {
            "Fn::GetAtt": [
              "AutoScaleConfig",
              "ClusterId"
            ]
          }
        }
      }
    }
  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      ClusterId:
        Type: String
        Description: Cluster ID.
      Queues:
        Type: Json
        Description: ''
        MaxLength: 8
    Resources:
      AutoScaleConfig:
        Type: ALIYUN::EHPC::AutoScaleConfig
        Properties:
          ClusterId:
            Ref: ClusterId
          Queues:
            Ref: Queues
    Outputs:
      ClusterId:
        Description: Cluster Id.
        Value:
          Fn::GetAtt:
            - AutoScaleConfig
            - ClusterId