6.3 弹性伸缩接口
6.3.1 配置弹性伸缩规则
功能介绍
对弹性伸缩规则进行编辑。
在创建集群并执行作业接口中也可以创建弹性伸缩规则。
接口约束
无
调试
您可以在API Explorer中调试该接口。
URI
POST /v1.1/{project_id}/autoscaling-policy/{cluster_id}
表6-49 路径参数
参数 是否必选 参数类型 描述
project_id 是 String 项目编号。获取方法,请参见获 取项目ID。
cluster_id 是 String 集群ID。获取方法,请参见获取 集群ID。
请求参数
表6-50 请求 Body 参数
参数 是否必选 参数类型 描述
node_group 是 String 弹性伸缩规则适用的节点类型,
当前只支持task节点。
auto_scaling_
policy 是 auto_scaling_
policy object 弹性伸缩规则。
表6-51 auto_scaling_policy
参数 是否必选 参数类型 描述
auto_scaling_
enable 是 Boolean 当前自动伸缩规则是否开启。
min_capacity 是 Integer 指定该节点组的最小保留节点 数。
取值范围:[0~500]
max_capacity 是 Integer 指定该节点组的最大节点数。
取值范围:[0~500]
resources_pla
ns 否 Array of
resources_pla n objects
资源计划列表。若该参数为空表 示不启用资源计划。
当启用弹性伸缩时,资源计划与 自动伸缩规则需至少配置其中一 种。
rules 否 Array of rules
objects 自动伸缩的规则列表。
当启用弹性伸缩时,资源计划与 自动伸缩规则需至少配置其中一 种。
exec_scripts 否 Array of scale_script objects
弹性伸缩自定义自动化脚本列 表。若该参数为空表示不启用自 动化脚本。
表6-52 resources_plan
参数 是否必选 参数类型 描述
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]
表6-53 rules
参数 是否必选 参数类型 描述
name 是 String 弹性伸缩规则的名称。
只能由字母、数字、中划线和下 划线组成,并且长度为1~64个 字符。
在一个节点组范围内,不允许重 名。
description 否 String 弹性伸缩规则的说明。
最大长度为1024字符。
adjustment_ty
pe 是 String 弹性伸缩规则的调整类型,只允
许以下类型:
枚举值:
● scale_out:扩容
● scale_in:缩容 cool_down_mi
nutes 是 Integer 触发弹性伸缩规则后,该集群处
于冷却状态(不再执行弹性伸缩 操作)的时长,单位为分钟。
取值范围[0~10080],10080为 一周的分钟数。
参数 是否必选 参数类型 描述 scaling_adjust
ment 是 Integer 单次调整集群节点的个数。
取值范围[1~100]
trigger 是 trigger object 描述该规则触发条件。
表6-54 trigger
参数 是否必选 参数类型 描述
metric_name 是 String 指标名称。
该触发条件会依据该名称对应指 标的值来进行判断。
最大长度为64个字符。
metric_value 是 String 指标阈值。
触发该条件的指标阈值,只允许 输入整数或者带两位小数的数。
comparison_o
perator 否 String 指标判断逻辑运算符,包括:
● LT:小于
● GT:大于
● LTOE:小于等于
● GTOE:大于等于 evaluation_pe
riods 是 Integer 判断连续满足指标阈值的周期数
(一个周期为5分钟)。
取值范围[1~288]
表6-55 scale_script
参数 是否必选 参数类型 描述
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_hostname s}:扩缩容的节点主机名称
● ${mrs_scale_node_ips}:扩 缩容的节点IP
● ${mrs_scale_rule_name}:
触发扩缩容的规则名
其他用户自定义参数使用方式与 普通shell脚本相同,多个参数中 间用空格隔开。
nodes 是 Array of
strings 自定义自动化脚本所执行的节点 类型,包含Master、Core和 Task三种类型。
active_master 否 Boolean 自定义自动化脚本是否只运行在 主Master节点上。
缺省值为false,表示自定义自 动化脚本可运行在所有Master 节点上。
参数 是否必选 参数类型 描述
fail_action 是 String 自自定义自动化脚本执行失败 后,是否继续执行后续脚本和创 建集群。
说明:
● 建议您在调试阶段设置为
“continue”,无论此自定 义自动化脚本是否执行成 功,则集群都能继续安装和 启动。
● 由于缩容成功无法回滚,因 此缩容后执行的脚本
“fail_action”必须设置为
“continue”。
枚举值:
● continue:继续执行后续脚 本。
● errorout:终止操作。
action_stage 是 String 脚本执行时机。
枚举值:
● before_scale_out:扩容前
● before_scale_in:缩容前
● after_scale_out:扩容后
● after_scale_in:缩容后
响应参数
无
请求示例
配置弹性伸缩规则请求示例
POST https://{endpoint}/v1.1/{project_id}/autoscaling-policy/{cluster_id}
{ "node_group" : "task_node_default_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", "core", "task" ],
"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", "core", "task" ],
"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", "adjustment_type" : "scale_in", "cool_down_minutes" : "5", "scaling_adjustment" : "1", "trigger" : {
"metric_name" : "YARNMemoryAvailablePercentage", "metric_value" : "70",
{ "result" : "succeeded"
}
状态码
状态码 描述
200 操作成功。
错误码
请参见错误码。