• 沒有找到結果。

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 操作成功。

错误码

请参见错误码。