Updated on 2022-11-18 GMT+08:00

Resizing a Cluster

Function

This API is used to manually scale out or scale in Core or Task nodes in a cluster that has been created. After an MRS cluster is created, the number of Master nodes cannot be adjusted. That is, Master nodes cannot be scaled in or out. This API is incompatible with Sahara.

Only clusters in the Running state can be scaled out or in.

The APIs described in this section support only streaming, analysis, and hybrid clusters.

Constraints

None

Debugging

You can debug this API through automatic authentication in API Explorer. API Explorer can automatically generate sample SDK code and provide the sample SDK code debugging.

URI

  • Format

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}

  • Parameter description
    Table 1 URI parameters

    Parameter

    Mandatory

    Type

    Description

    project_id

    Yes

    String

    Project ID. For details about how to obtain the project ID, see Obtaining a Project ID.

    cluster_id

    Yes

    String

    Cluster ID For details about how to obtain the cluster ID, see Obtaining the MRS Cluster Information.

Request Parameters

Table 2 Request parameters

Parameter

Mandatory

Type

Description

service_id

No

String

Service ID. This parameter is reserved for extension. You do not need to set this parameter.

plan_id

No

String

Plan ID. This parameter is reserved for extension. You do not need to set this parameter.

parameters

Yes

Object

Core parameters. For details, see Table 3.

previous_values

No

Map<String,String>

This parameter is an extended API and needs to be reserved. You do not need to set this parameter.

Table 3 parameters description

Parameter

Mandatory

Type

Description

order_id

No

String

Order ID obtained by the system during scale-out or scale-in. You do not need to set the parameter.

scale_type

Yes

String

  • scale_in: cluster scale-in
  • scale_out: cluster scale-out

node_id

Yes

String

ID of the newly added or removed node. The parameter value is fixed to node_orderadd.

node_group

No

String

Node group to be scaled out or in
  • If the value of node_group is core_node_default_group, the node group is a Core node group.
  • If the value of node_group is task_node_default_group, the node group is a Task node group.

If it is left blank, the default value core_node_default_group is used.

task_node_info

No

Object

Task node specifications. For more parameter description, see Table 4.

  • When the number of Task nodes is 0, this parameter is used to specify Task node specifications.
  • When the number of Task nodes is greater than 0, this parameter is unavailable.

instances

Yes

Integer

Number of nodes to be added or removed

  • The maximum number of nodes to be added is 500 minus the number of Core and Task nodes. For example, the current number of Core nodes is 3, the number of nodes to be added must be less than or equal to 497.

    A maximum of 500 Core and Task nodes are supported by default. If more than 500 Core and Task nodes are required, contact technical support engineers or call a background API to modify the database.

  • Nodes can be deleted for cluster scale-out when the number of Core nodes is greater than 3 or the number of Task nodes is greater than 0. For example, if there are 5 Core nodes and 5 Task nodes in a cluster, only 2 (5 minus 3) Core nodes are available for deletion and 5 or fewer than 5 Task nodes can be deleted.

skip_bootstrap_scripts

No

String

This parameter is valid only when a bootstrap action is configured during cluster creation and takes effect during scale-out. It indicates whether the bootstrap action specified during cluster creation is performed on nodes added during scale-out. The default value is false, indicating that the bootstrap action is performed.

scale_without_start

No

Boolean

Whether to start components on the added nodes after cluster scale-out

  • true: Do not start components after scale-out.
  • false: Start components after scale-out.

server_ids

No

Array of strings

ID list of Task nodes to be deleted during task node scale-in.

  • This parameter does not take effect when scale_type is set to scale-out.
  • If scale_type is set to scale-in and cannot be left blank, the system deletes the specified Task nodes.
  • When scale_type is set to scale-in and server_ids is left blank, the system automatically deletes the Task nodes based on the system rules.
Table 4 task_node_info parameters

Parameter

Mandatory

Type

Description

node_size

Yes

String

Instance specifications of a Task node, Example:

data_volume_type

Yes

String

Data disk storage type of the Task node, supporting SATA, SAS, and SSD currently.

  • SATA: common I/O
  • SAS: high I/O
  • SSD: ultra-high I/O
  • GPSSD: general-purpose SSD

data_volume_count

Yes

Integer

Number of data disks of a Task node

Value range: 0 to 10

data_volume_size

Yes

Integer

Data disk storage space of a Task node

Value range: 100 GB to 32,000 GB. When assigning a value to this parameter, you only need to pass a number, without the unit.

Response Parameters

Response parameters

Table 5 describes the response parameter.
Table 5 Response parameter

Parameter

Type

Description

result

String

Operation result

  • succeeded: The operation is successful.
  • Error Codes describes the error codes returned upon operation failures.

Example

  • Example request

    Example of adding core nodes

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_out",  
            "node_id": "node_orderadd",  
            "node_group": "core_node_default_group",
            "instances": "1",
           "skip_bootstrap_scripts":false,
           "scale_without_start":false
        },  
        "previous_values": { }
    }

    Example of adding task nodes when the number of existing task nodes is greater than zero

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_out",  
            "node_id": "node_orderadd",  
            "node_group": "task_node_default_group",
            "instances": "1",
            "skip_bootstrap_scripts":false,  
            "scale_without_start":false
        },  
        "previous_values": { }
    }

    Example of adding task nodes when the number of existing task nodes is zero

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_out",  
            "node_id": "node_orderadd",  
            "node_group": "task_node_default_group",
            "task_node_info": {
                      "node_size": "",
                      "data_volume_type":"SATA",
                      "data_volume_count":2,
                      "data_volume_size":600
                      },
            "instances": "1",  
            "scale_without_start":false
    
    
        },  
        "previous_values": { }
    }

    Example of adding core nodes

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_in",  
            "node_id": "node_orderadd",  
            "node_group": "core_node_default_group",
            "instances": "1"  
    
    
        },  
        "previous_values": { }
    }

    Example of removing task nodes

    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_in",  
            "node_id": "node_orderadd",  
            "node_group": "task_node_default_group",
            "instances": "1"  
    
        },  
        "previous_values": { }
    }
    Example of removing specified task nodes
    PUT /v1.1/{project_id}/cluster_infos/{cluster_id}
    
    { 
        "service_id": "",  
        "plan_id": "",  
        "parameters": { 
            "order_id": "",  
            "scale_type": "scale_in",  
            "node_id": "node_orderadd",  
            "node_group": "task_node_default_group",
            "instances": "2",
            "server_ids": ["c9573435-7814-4b2c-9131-ad78b814414c", "a4951009-6a0f-4e7b-9c81-9d4bd1f8c537"]  
        },  
        "previous_values": { }
    }
  • Example response
    {
        "result": "succeeded"
    }

Status Codes

  • Table 6 describes the status code.
    Table 6 Status code

    Status Code

    Description

    200

    The core or task nodes have been added or removed.

Error Codes

See Error Codes.