更新时间:2024-06-13 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

    cluster_id

    String

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

请求参数

表2 请求Body参数

参数名

是否必选

参数类型

说明

node_group

String

弹性伸缩规则适用的节点类型,当前只支持task节点,即请求的值为:task_node_default_group

auto_scaling_policy

AutoScalingPolicy object

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

表3 AutoScalingPolicy

参数名

是否必选

参数类型

说明

auto_scaling_enable

Boolean

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

min_capacity

Integer

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

取值范围:[0~500]

max_capacity

Integer

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

取值范围:[0~500]

resources_plans

List

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

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

exec_scripts

List

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

rules

List

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

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

表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节点上。

默认值为false,表示自定义自动化脚本可运行在所有Master节点上。

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

指标名称。

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

最大长度为64个字符。

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

metric_value

String

指标阈值。

触发该条件的指标阈值,只允许输入整数或者带两位小数的数,metric_name对应的指标数值类型和有效取值范围。

comparison_operator

String

指标判断逻辑运算符,包括:

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

evaluation_periods

Integer

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

取值范围[1~288]

响应参数

请求示例

配置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"
}

状态码

状态码如表8所示。

表8 状态码

状态码

描述

200

创建集群成功。

异常状态码请参见状态码

错误码

请参见错误码