Updated on 2026-06-22 GMT+08:00

Scaling Out a Cluster

Function

This API is used to scale out a cluster or add idle nodes. By default, scale-out is performed.

You can configure create_node_only to determine whether the current operation is to scale out a cluster or add idle nodes.

  • true: Add idle nodes.

  • false: Scale out a cluster.

Calling Method

For details, see Calling APIs.

URI

POST /v1.0/{project_id}/clusters/{cluster_id}/resize

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

cluster_id

Yes

String

Definition

Cluster ID. For details about how to obtain the value, see Obtaining the Cluster ID.

Constraints

N/A

Range

N/A

Default Value

N/A

project_id

Yes

String

Definition

Project ID. To obtain the value, see Obtaining a Project ID.

Constraints

N/A

Range

N/A

Default Value

N/A

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

scale_out

Yes

ScaleOut object

Definition

Request body for adding an idle node or scaling out a cluster.

Constraints

N/A

Range

N/A

Default Value

N/A

create_node_only

No

Boolean

Definition

Whether only idle nodes are added.

Constraints

N/A

Range

true: Only nodes are added. If scale-out is required, perform it separately.

false: Nodes are added and the cluster is scaled out.

Default Value

false

waiting_for_killing

No

Integer

Definition

Time before blocked job termination.

Constraints

This parameter is available only for GuestAgent 8.2.1 or later.

Range

30 to 1200

Default Value

0 (not limited)

auto_redistribute

No

Boolean

Definition

Whether to automatically start redistribution after scale-out. The default value is true. If this parameter is set to false, redistribution is not performed after scale-out. In this case, the cluster task information displays To be redistributed and other operations cannot be performed.

Constraints

N/A

Range

true: Redistribution is performed immediately after scale-out.

false: Redistribution is not performed after scale-out. In this case, the cluster task information displays To be redistributed.

Default Value

true

Table 3 ScaleOut

Parameter

Mandatory

Type

Description

count

Yes

Integer

Definition

Number of nodes to be added.

Range

Greater than or equal to 3

subnet_id

No

String

Definition

Subnet ID.

Range

The value is a valid subnet ID in the same VPC.

Response Parameters

Status code: 200

Request for scaling out a cluster is submitted.

None

Example Requests

  • Add three nodes to a cluster.

    POST https://{Endpoint}/v1.0/89cd04f168b84af6be287f71730fdb4b/clusters/4ca46bf1-5c61-48ff-b4f3-0ad4e5e3ba90/resize
    
    {
      "scale_out" : {
        "count" : 3
      }
    }
  • Add three idle nodes to a cluster for the scale-out operation in example 3.

    POST https://{Endpoint}/v1.0/89cd04f168b84af6be287f71730fdb4b/clusters/4ca46bf1-5c61-48ff-b4f3-0ad4e5e3ba90/resize
    
    {
      "scale_out" : {
        "count" : 3
      },
      "create_node_only" : true
    }

Example Responses

Status code: 200

Request for scaling out a cluster is submitted.

{ }

SDK Sample Code

The SDK sample code is as follows.

  • Add three nodes to a cluster.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.dws.v2.region.DwsRegion;
    import com.huaweicloud.sdk.dws.v2.*;
    import com.huaweicloud.sdk.dws.v2.model.*;
    
    
    public class ResizeClusterSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            DwsClient client = DwsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(DwsRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeClusterRequest request = new ResizeClusterRequest();
            request.withClusterId("{cluster_id}");
            ResizeClusterRequestBody body = new ResizeClusterRequestBody();
            ScaleOut scaleOutbody = new ScaleOut();
            scaleOutbody.withCount(3);
            body.withScaleOut(scaleOutbody);
            request.withBody(body);
            try {
                ResizeClusterResponse response = client.resizeCluster(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Add three idle nodes to a cluster for the scale-out operation in example 3.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.dws.v2.region.DwsRegion;
    import com.huaweicloud.sdk.dws.v2.*;
    import com.huaweicloud.sdk.dws.v2.model.*;
    
    
    public class ResizeClusterSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            DwsClient client = DwsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(DwsRegion.valueOf("<YOUR REGION>"))
                    .build();
            ResizeClusterRequest request = new ResizeClusterRequest();
            request.withClusterId("{cluster_id}");
            ResizeClusterRequestBody body = new ResizeClusterRequestBody();
            ScaleOut scaleOutbody = new ScaleOut();
            scaleOutbody.withCount(3);
            body.withCreateNodeOnly(true);
            body.withScaleOut(scaleOutbody);
            request.withBody(body);
            try {
                ResizeClusterResponse response = client.resizeCluster(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Add three nodes to a cluster.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkdws.v2.region.dws_region import DwsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkdws.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = DwsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(DwsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeClusterRequest()
            request.cluster_id = "{cluster_id}"
            scaleOutbody = ScaleOut(
                count=3
            )
            request.body = ResizeClusterRequestBody(
                scale_out=scaleOutbody
            )
            response = client.resize_cluster(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Add three idle nodes to a cluster for the scale-out operation in example 3.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkdws.v2.region.dws_region import DwsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkdws.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = DwsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(DwsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ResizeClusterRequest()
            request.cluster_id = "{cluster_id}"
            scaleOutbody = ScaleOut(
                count=3
            )
            request.body = ResizeClusterRequestBody(
                create_node_only=True,
                scale_out=scaleOutbody
            )
            response = client.resize_cluster(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Add three nodes to a cluster.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        dws "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := dws.NewDwsClient(
            dws.DwsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeClusterRequest{}
    	request.ClusterId = "{cluster_id}"
    	scaleOutbody := &model.ScaleOut{
    		Count: int32(3),
    	}
    	request.Body = &model.ResizeClusterRequestBody{
    		ScaleOut: scaleOutbody,
    	}
    	response, err := client.ResizeCluster(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Add three idle nodes to a cluster for the scale-out operation in example 3.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        dws "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := dws.NewDwsClient(
            dws.DwsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ResizeClusterRequest{}
    	request.ClusterId = "{cluster_id}"
    	scaleOutbody := &model.ScaleOut{
    		Count: int32(3),
    	}
    	createNodeOnlyResizeClusterRequestBody:= true
    	request.Body = &model.ResizeClusterRequestBody{
    		CreateNodeOnly: &createNodeOnlyResizeClusterRequestBody,
    		ScaleOut: scaleOutbody,
    	}
    	response, err := client.ResizeCluster(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

Request for scaling out a cluster is submitted.

400

Request error.

401

Authentication failed.

403

You do not have required permissions.

404

No resources found.

500

Internal server error.

503

Service unavailable.