节点管理
更新时间:2026-07-23
接口总览
| 接口名称 | 说明 | 方法 | 路径 |
|---|---|---|---|
| UpdateInstanceGroup | 节点组变配(新增/扩容/缩容/变更规格/磁盘变配) | POST | /v2/bcc/instanceGroup/update |
| DeleteInstanceGroup | 删除节点组 | POST | /v2/bcc/instanceGroup/delete |
| ListClusterNodes | 查询集群节点列表 | POST | /v2/bcc/instanceGroup/detail |
| DecommissionNodes | 缩容集群节点(下线服务) | POST | /v2/bcc/instanceGroup/decommission |
| ChangeNodePassword | 修改节点登录密码 | POST | /v2/bcc/instance/changePass |
UpdateNodeGroup 节点组变配
接口描述
节点组变配接口。当前支持新增节点组、扩容、缩容/释放、变更节点规格、磁盘变配等操作,通过 items[].config.type 区分:
| 操作 | type | instanceGroups 每项关键字段 |
|---|---|---|
| 新增节点组 | newInstanceGroup |
name/ type / instanceType / instanceCount / rootDiskSizeInGB / rootDiskMediumType / cds |
| 扩容节点 | scaleOut |
id / instanceCount |
| 释放节点 | scaleOut |
id / instanceCount/ shrinkInstanceIds |
| 变更节点规格 | scaleUp |
id / instanceType |
| 磁盘变配 | diskScaleUp |
id / cds(cds[].sizeInGB 须严格大于原容量) |
请求结构
Plain Text
1POST /v2/bcc/instanceGroup/update HTTP/1.1
2Content-Type: application/json
3
4{
5 "items": [
6 {
7 "config": {
8 "clusterId": "clusterId",
9 "type": "type",
10 "instanceGroups": [
11 {
12 "id": "id",
13 "name": "name",
14 "type": "type",
15 "instanceType": "instanceType",
16 "instanceCount": "instanceCount",
17 "shrinkInstanceIds": ["shrinkInstanceIds"],
18 "rootDiskSizeInGB": "rootDiskSizeInGB",
19 "rootDiskMediumType": "rootDiskMediumType",
20 "cds": [
21 {
22 "sizeInGB": "sizeInGB",
23 "mediumType": "mediumType"
24 }
25 ],
26 "selectService": {"selectService": ["selectService"]}
27 }
28 ]
29 }
30 }
31 ]
32}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| items | List | 是 | RequestBody | 订单项列表,不可为空,仅取第一项 |
| items[].config | InstanceGroupItem | 是 | RequestBody | 订单配置 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| result.bmrOrderId | String | BMR 订单 ID |
| result.clusterId | String | 集群 ID |
请求示例(新增节点组)
JSON
1{
2 "items": [
3 {
4 "config": {
5 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
6 "type": "newInstanceGroup",
7 "instanceGroups": [
8 {
9 "name": "bmr-master-extend",
10 "type": "MASTER_EXTEND",
11 "instanceType": "bmr.g4.c8m32",
12 "instanceCount": 1,
13 "rootDiskSizeInGB": 100,
14 "rootDiskMediumType": "ssd",
15 "cds": [{"sizeInGB": 500, "mediumType": "ssd"}],
16 "selectService": {
17 "SPARK": [
18 "spark3-history-server"
19 ]
20 }
21 }
22 ]
23 }
24 }
25 ]
26}
请求示例(节点组扩容)
JSON
1{
2 "items": [
3 {
4 "config": {
5 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
6 "type": "scaleOut",
7 "instanceGroups": [
8 {"id": "ig-xxxx", "instanceCount": 5}
9 ]
10 }
11 }
12 ]
13}
请求示例(节点组缩容)
JSON
1{
2 "items": [
3 {
4 "config": {
5 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
6 "type": "scaleOut",
7 "instanceGroups": [
8 {
9 "id": "ig-xxxx",
10 "type": "Task",
11 "instanceCount": 2,
12 "shrinkInstanceIds": ["i-xxxx"]
13 }
14 ]
15 }
16 }
17 ]
18}
请求示例(变更节点规格)
JSON
1{
2 "items": [
3 {
4 "config": {
5 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
6 "type": "scaleUp",
7 "instanceGroups": [
8 {"id": "ig-xxxx", "instanceType": "bmr.g4.c8m32"}
9 ]
10 }
11 }
12 ]
13}
请求示例(磁盘变配)
JSON
1{
2 "items": [
3 {
4 "config": {
5 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
6 "type": "diskScaleUp",
7 "instanceGroups": [
8 {"id": "ig-xxxx", "cds": [{"sizeInGB": 500, "mediumType": "ssd"}]}
9 ]
10 }
11 }
12 ]
13}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": {
5 "bmrOrderId": "order-xxxx",
6 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48"
7 }
8}
DeleteNodeGroup 删除节点组
接口描述
删除集群中的(空)节点组。
请求结构
Plain Text
1POST /v2/bcc/instanceGroup/delete HTTP/1.1
2Content-Type: application/json
3
4{
5 "instanceGroupId": "instanceGroupId"
6}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| instanceGroupId | String | 是 | RequestBody | 待删除的节点组 ID |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| result | Null | 成功时为空 |
请求示例
JSON
1{
2 "instanceGroupId": "ig-xxxx"
3}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": null
5}
ListClusterNodes 查询集群节点列表
接口描述
查询集群下的节点组及节点详情。
请求结构
Plain Text
1POST /v2/bcc/instanceGroup/detail HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": "clusterId"
6}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| result.maxCount | Int | 节点组最大可扩容数 |
| result.nodeGroups | List |
节点组列表 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "filterEmptyInstanceGroup": true,
4 "filterLocalDiskInstanceGroup": false
5}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": {
5 "maxCount": 50,
6 "nodeGroups": [
7 {
8 "id": "ig-xxxx",
9 "name": "MASTER",
10 "type": "Master",
11 "spec": "bmr.g1.xlarge",
12 "cpu": 4,
13 "memory": 16,
14 "isSpot": false,
15 "cds": [{"sizeInGB": 200, "mediumType": "ssd", "attributes": []}],
16 "diskType": "cds",
17 "rootDiskSizeInGB": 50,
18 "rootDiskMediumType": "ssd",
19 "requestedInstanceCount": 1,
20 "totalInstanceCount": 1,
21 "runningInstanceCount": 1,
22 "maxCount": 1,
23 "minCount": 1,
24 "state": "Running",
25 "payType": "Prepaid",
26 "instanceType": {"name": "bmr.g1.xlarge", "cpu": 4, "memory": 16, "disk": 200, "diskType": "ssd"},
27 "instances": [
28 {
29 "id": "i-xxxx",
30 "instanceName": "bmr-master-1.bmr.local",
31 "status": {"state": "Running", "creationDateTime": "2026-06-01T10:00:00Z"},
32 "privateIpAddress": "10.0.0.10",
33 "sshPort": 22,
34 "volumes": {"/data1": [{"size": 200, "mediumType": "ssd"}]}
35 }
36 ]
37 }
38 ]
39 }
40}
DecommissionNodes 缩容集群节点(下线服务)
接口描述
对集群节点执行下线(退役)操作,平滑下线节点上的服务,不释放节点
请求结构
Plain Text
1POST /v2/bcc/instanceGroup/decommission HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": "clusterId",
6 "instanceIds": ["instanceIds"],
7 "shardNum": "shardNum",
8 "options": {
9 "yarnGraceful": "yarnGraceful",
10 "gracefulTimeout": "gracefulTimeout"
11 }
12}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| instanceIds | List |
是 | RequestBody | 待下线的实例 ID 列表。与 shardNum 互斥(两者不能同时 >0) |
| shardNum | Int | 否 | RequestBody | 分片数(ClickHouse 等按分片下线场景)。与 instanceIds 互斥 |
| options | Map<String,String> | 否 | RequestBody | 附加选项; yarnGraceful: 是否优雅退场,默认为 false gracefulTimeout:优雅退场等待时间,默认为 3600 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| result | Null | 成功时为空 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "instanceIds": ["i-xxxx"],
4 "options": {
5 "yarnGraceful": "true",
6 "gracefulTimeout": "60"
7 }
8}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": null
5}
ChangeNodePassword 修改节点登录密码
接口描述
修改特定节点登录密码
请求结构
Plain Text
1POST /v2/bcc/instance/changePass HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": "clusterId",
6 "instanceId": "instanceId",
7 "adminInstancePass": "adminPassword"
8}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| instanceId | String | 是 | RequestBody | 修改密码的示例 instanceId i-xxx |
| adminInstancePass | String | 是 | RequestBody | 修改后的密码,加密传输 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| result | Null | 成功时为空 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "instanceIds": "i-xxxx",
4 "adminInstancePass": "<encryptedPassword>"
5}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": null
5}
错误返回码
| 接口 | HTTP Status | Code | Message | 说明 |
|---|---|---|---|---|
| UpdateNodeGroup | 400 | InvalidParameter | Invalid request parameter, resize order items should not be empty | items 为空 |
| UpdateNodeGroup | 400 | InvalidArguments | Invalid arguments | instanceGroups 为空、未发生有效变更,或 type/规格/磁盘容量等取值非法 |
| UpdateNodeGroup | 400 | UnsupportedClusterStatus | The clusterStatus not support | 集群非 Active 或正处于伸缩中,不允许下单 |
| UpdateNodeGroup | 403 | OperateForbid | The requested operation is forbidden for this resource | 当前集群类型/用户不允许执行该变更 |
| UpdateNodeGroup | 404 | ClusterNotFound | The cluster not found | 集群不存在 |
| UpdateNodeGroup | 404 | GroupNotFound | The instance group not found | instanceGroups 中引用的节点组不存在 |
| UpdateNodeGroup | 404 | InstanceNotFound | The instance not found | shrinkInstanceIds 中的实例不存在 |
| DeleteNodeGroup | 400 | InvalidParameter | Invalid request parameter | instanceGroupId 缺失或非法 |
| DeleteNodeGroup | 404 | GroupNotFound | The instance group not found | 节点组不存在 |
| DeleteNodeGroup | 403 | OperateForbid | The requested operation is forbidden for this resource | 节点组不允许删除(当前实现未强校验是否为空) |
| ListClusterNodes | 400 | InvalidParameter | Invalid request parameter | clusterId 缺失 |
| ListClusterNodes | 404 | ClusterNotFound | The cluster not found | 集群不存在 |
| DecommissionNodes | 400 | InvalidParameter | Invalid request parameter | 参数绑定失败或 instanceIds 与 shardNum 同时大于 0 |
| DecommissionNodes | 400 | InvalidArguments | Invalid arguments | shardNum 仅 ClickHouse 集群支持,其他镜像类型传入会报错 |
| DecommissionNodes | 400 | UnsupportedClusterStatus | The clusterStatus not support | 集群状态不允许下线(如已在调整中) |
| DecommissionNodes | 404 | ClusterNotFound | The cluster not found | 集群不存在 |
| DecommissionNodes | 404 | InstanceNotFound | The instance not found | instanceIds 中的实例不属于该集群或不存在 |
| DecommissionNodes | 403 | OperateForbid | The requested operation is forbidden for this resource | 当前集群/用户不允许执行下线 |
评价此篇文章
