更新时间:2024-11-07 GMT+08:00

配置弹性伸缩规则

功能介绍

对弹性伸缩规则进行编辑。

在创建集群并执行作业接口中也可以创建弹性伸缩规则。

接口约束

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

  • URI格式

    POST /v1.1/{project_id}/autoscaling-policy/{cluster_id}

  • 参数说明
    表1 URI参数说明

    名称

    是否必选

    参数类型

    说明

    project_id

    String

    参数解释:

    项目编号。获取方法,请参见获取项目ID

    约束限制:

    不涉及

    取值范围:

    只能由英文字母和数字组成,且长度为[1-64]个字符。

    默认取值:

    不涉及

    cluster_id

    String

    参数解释:

    集群编号。获取方法,请参见获取MRS集群信息

    约束限制:

    不涉及

    取值范围:

    只能由英文字母、数字以及“_”和“-”组成,且长度为[1-64]个字符。

    默认取值:

    不涉及

请求参数

表2 请求Body参数

参数名

是否必选

参数类型

说明

node_group

String

参数解释:

弹性伸缩规则适用的节点类型,当前只支持Task节点。

约束限制:

不涉及

取值范围:

  • task_node_default_group:弹性伸缩规则适用Task节点。

默认取值:

不涉及

auto_scaling_policy

AutoScalingPolicy object

参数解释:

弹性伸缩规则。详细参数说明请参考表3

约束限制:

不涉及

表3 AutoScalingPolicy

参数名

是否必选

参数类型

说明

auto_scaling_enable

Boolean

参数解释:

当前自动伸缩规则是否开启。

约束限制:

不涉及

取值范围:

  • true:开启自动伸缩规则。
  • false:不开启自动伸缩规则。

默认取值:

不涉及

min_capacity

Integer

参数解释:

指定该节点组的最小保留节点数。

约束限制:

不涉及

取值范围:

0-500

默认取值:

不涉及

max_capacity

Integer

参数解释:

指定该节点组的最大节点数。

约束限制:

不涉及

取值范围:

0-500

默认取值:

不涉及

resources_plans

List

参数解释:

资源计划列表,详细说明请参见表4。若该参数为空表示不启用资源计划。

约束限制:

当启用弹性伸缩时,资源计划与自动伸缩规则需至少配置其中一种。

exec_scripts

List

参数解释:

弹性伸缩自定义自动化脚本列表。详细说明请参见表5。若该参数为空表示不启用钩子脚本。

约束限制:

不能超过10条。

rules

List

参数解释:

自动伸缩的规则列表,详细说明请参见表6

约束限制:

当启用弹性伸缩时,资源计划与自动伸缩规则需至少配置其中一种。不能超过10条。

表4 ResourcesPlan

参数名

是否必选

参数类型

说明

period_type

String

参数解释:

资源计划的周期类型,当前只允许以下类型:daily。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

start_time

String

参数解释:

资源计划的起始时间。格式为“hour:minute”,表示时间在0:00-23:59之间。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

end_time

String

参数解释:

资源计划的结束时间,格式与“start_time”相同。

约束限制:

不早于start_time表示的时间,且与start_time间隔不小于30min。

取值范围:

不涉及

默认取值:

不涉及

min_capacity

Integer

参数解释:

资源计划内该节点组的最小保留节点数。

约束限制:

不涉及

取值范围:

0-500

默认取值:

不涉及

max_capacity

Integer

参数解释:

资源计划内该节点组的最大保留节点数。

约束限制:

不涉及

取值范围:

0-500

默认取值:

不涉及

表5 ScaleScript

参数名

是否必选

参数类型

说明

name

String

参数解释:

弹性伸缩自定义自动化脚本的名称。

约束限制:

不涉及

取值范围:

同一个集群的自定义自动化脚本名称不允许相同。

只能由数字、英文字符、空格、中划线和下划线组成,且不能以空格开头。

可输入的字符串长度为1~64个字符。

默认取值:

不涉及

uri

String

参数解释:

自定义自动化脚本的路径。设置为OBS桶的路径或虚拟机本地的路径。

  • OBS桶的路径:直接手动输入脚本路径。示例:s3a://XXX/scale.sh
  • 虚拟机本地的路径:用户需要输入正确的脚本路径。脚本所在的路径必须以‘/’开头,以.sh结尾。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

parameters

String

参数解释:

自定义自动化脚本参数。

  • 多个参数间用空格隔开。
  • 可以传入以下系统预定义参数:
    • ${mrs_scale_node_num}:扩缩容节点数
    • ${mrs_scale_type}:扩缩容类型,扩容为scale_out,缩容为scale_in
    • ${mrs_scale_node_hostnames}:扩缩容的节点主机名称
    • ${mrs_scale_node_ips}:扩缩容的节点IP
    • ${mrs_scale_rule_name}:触发扩缩容的规则名
  • 其他用户自定义参数使用方式与普通shell脚本相同,多个参数中间用空格隔开。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

nodes

Array of strings

参数解释:

自定义自动化脚本所执行的节点类型,包含Master、Core和Task三种类型。

约束限制:

不涉及

active_master

Boolean

参数解释:

自定义自动化脚本是否只运行在主Master节点上。

约束限制:

不涉及

取值范围:

  • true:自定义自动化脚本只运行在主Master节点上。
  • false:自定义自动化脚本可运行在所有Master节点上。

默认取值:

false

action_stage

String

参数解释:

脚本执行时机。

约束限制:

不涉及

取值范围:

  • before_scale_out:扩容前
  • before_scale_in:缩容前
  • after_scale_out:扩容后
  • after_scale_in:缩容后

默认取值:

不涉及

fail_action

String

参数解释:

自定义自动化脚本执行失败后,是否继续执行后续脚本和创建集群。

约束限制:

不涉及

取值范围:

  • continue:继续执行后续脚本。
  • errorout:终止操作。

默认取值:

不涉及

说明:
  • 建议您在调试阶段设置为“continue”,无论此自定义自动化脚本是否执行成功,则集群都能继续安装和启动。
  • 由于缩容成功无法回滚,因此缩容后执行的脚本“fail_action”必须设置为“continue”
表6 Rule

参数名

是否必选

参数类型

说明

name

String

参数解释:

弹性伸缩规则的名称。

约束限制:

不涉及

取值范围:

只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。

在一个节点组范围内,不允许重名。

默认取值:

不涉及

description

String

参数解释:

弹性伸缩规则的说明。

约束限制:

不涉及

取值范围:

长度小于等于1024个字符。

默认取值:

不涉及

adjustment_type

String

参数解释:

弹性伸缩规则的调整类型。

约束限制:

不涉及

取值范围:

  • scale_out:扩容
  • scale_in:缩容

默认取值:

不涉及

cool_down_minutes

Integer

参数解释:

触发弹性伸缩规则后,该集群处于冷却状态(不再执行弹性伸缩操作)的时长,单位为分钟。

约束限制:

不涉及

取值范围:

0~10080,10080为一周的分钟数。

默认取值:

不涉及

scaling_adjustment

Integer

参数解释:

单次调整集群节点的个数。

约束限制:

不涉及

取值范围:

1-100

默认取值:

不涉及

trigger

Trigger object

参数解释:

描述该规则触发条件,详细说明请参见表7

约束限制:

不涉及

表7 Trigger

参数名

是否必选

参数类型

说明

metric_name

String

参数解释:

指标名称。

该触发条件会依据该名称对应指标的值来进行判断。

详细指标名称内容请参见配置MRS集群弹性伸缩

约束限制:

不涉及

取值范围:

长度最大为64个字符。

默认取值:

不涉及

metric_value

String

参数解释:

指标阈值。

触发该条件的指标阈值,只允许输入整数或者带两位小数的数。

约束限制:

不涉及

取值范围:

只允许输入整数或者带两位小数的数。

默认取值:

不涉及

comparison_operator

String

参数解释:

指标判断逻辑运算符.

约束限制:

不涉及

取值范围:

  • LT:小于
  • GT:大于
  • LTOE:小于等于
  • GTOE:大于等于

默认取值:

不涉及

evaluation_periods

Integer

参数解释:

判断连续满足指标阈值的周期数(一个周期为5分钟)。

约束限制:

不涉及

取值范围:

1-200

默认取值:

不涉及

响应参数

状态码: 200

表8 响应Body参数

参数

参数类型

描述

result

String

参数解释:

操作结果。

取值范围:

  • succeeded:操作成功。
  • 操作失败时返回的错误码信息如错误码所示。

请求示例

配置MRS集群弹性伸缩规则

POST https://{endpoint}/v1.1/{project_id}/autoscaling-policy/{cluster_id}

{
  "node_group" : "task_node_analysis_group",
  "auto_scaling_policy" : {
    "auto_scaling_enable" : "true",
    "min_capacity" : "1",
    "max_capacity" : "3",
    "resources_plans" : [ {
      "period_type" : "daily",
      "start_time" : "9:50",
      "end_time" : "10:20",
      "min_capacity" : "2",
      "max_capacity" : "3"
    }, {
      "period_type" : "daily",
      "start_time" : "10:20",
      "end_time" : "12:30",
      "min_capacity" : "0",
      "max_capacity" : "2"
    } ],
    "exec_scripts" : [ {
      "name" : "before_scale_out",
      "uri" : "s3a://XXX/zeppelin_install.sh",
      "parameters" : "${mrs_scale_node_num} ${mrs_scale_type} xxx",
      "nodes" : [ "master_node_default_group", "core_node_analysis_group", "task_node_analysis_group" ],
      "active_master" : "true",
      "action_stage" : "before_scale_out",
      "fail_action" : "continue"
    }, {
      "name" : "after_scale_out",
      "uri" : "s3a://XXX/storm_rebalance.sh",
      "parameters" : "${mrs_scale_node_hostnames} ${mrs_scale_node_ips}",
      "nodes" : [ "master_node_default_group", "core_node_analysis_group", "task_node_analysis_group" ],
      "active_master" : "true",
      "action_stage" : "after_scale_out",
      "fail_action" : "continue"
    } ],
    "rules" : [ {
      "name" : "default-expand-1",
      "adjustment_type" : "scale_out",
      "cool_down_minutes" : "5",
      "scaling_adjustment" : "1",
      "trigger" : {
        "metric_name" : "YARNMemoryAvailablePercentage",
        "metric_value" : "25",
        "comparison_operator" : "LT",
        "evaluation_periods" : "10"
      }
    }, {
      "name" : "default-shrink-1",
      "adjustment_type" : "scale_in",
      "cool_down_minutes" : "5",
      "scaling_adjustment" : "1",
      "trigger" : {
        "metric_name" : "YARNMemoryAvailablePercentage",
        "metric_value" : "70",
        "comparison_operator" : "GT",
        "evaluation_periods" : "10"
      }
    } ]
  }
}

新的弹性伸缩规则将会覆盖原数据库中保存的弹性伸缩规则。如果想对原规则进行修改,可以参考查询集群详情,先查询出原规则,在原规则基础上进行修改后再提交修改。

响应示例

状态码:200

操作成功。

{
  "result" : "succeeded"
}

状态码

状态码如表9所示。

表9 状态码

状态码

描述

200

创建集群成功。

异常状态码请参见状态码

错误码

请参见错误码