Change the specifications of a specified node type.
Function
If the workloads on a cluster's data plane change, you can scale the cluster vertically by changing its node specifications or node storage type.
-
Cluster types that support node specifications change: Elasticsearch, OpenSearch, and Logstash.
-
Cluster types that support node storage type (disk type) change: Elasticsearch and OpenSearch. All mission-critical data must be backed up before a node storage type (disk type) change. This helps to prevent data loss.
You can specify the following node types when calling this API:
-
ess: data node (only for Elasticsearch and OpenSearch).
-
ess-cold: cold data node (only for Elasticsearch and OpenSearch).
-
ess-client: client node (only for Elasticsearch and OpenSearch).
-
ess-master: master node (only for Elasticsearch and OpenSearch).
-
lgs: Logstash node (only for Logstash).
Constraints
-
Make sure the cluster status is Available and there are no ongoing tasks.
-
The node specifications and storage type cannot be changed for nodes that use local disks.
-
The node specifications and storage type cannot be changed at the same time.
-
The node storage type can be changed only for data nodes and cold data nodes.
-
When you change the node storage type, data needs to be migrated between different nodes. The timeout for data migration per node is 48 hours. Upgrade will fail if this timeout expires. When the cluster has large quantities of data, you are advised to manually adjust the data migration rate and avoid performing the migration during peak hours.
-
For a cluster without master nodes, the node storage type can be changed only if the number of data nodes plus cold data nodes is at least three.
-
For a cluster with master nodes, this operation is allowed only if the cluster has at least two data nodes.
-
During a node storage type change, there is always one node that is unavailable. To ensure service continuity, there has to be at least two nodes of each type for the cluster in each of its AZs, and the total number of data nodes and cold data nodes is greater than the maximum number of index replicas plus 1.
-
During a node specifications changes, nodes are brought offline in order to make the changes. To ensure service continuity, make sure all shards have replicas.
-
Make sure the disk usage is always less than 80/ %during the change.
Calling Method
For details, see Calling APIs.
URI
POST /v1.0/{project_id}/clusters/{cluster_id}/{types}/flavor
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Definition: Project ID. For details about how to obtain the project ID and name, see Obtaining the Project ID and Name. Constraints: N/A Value range: Project ID of the account. Default value: N/A |
cluster_id |
Yes |
String |
Definition: ID of the cluster whose specifications you want to change. For details about how to obtain the cluster ID, see Obtaining the Cluster ID. Constraints: N/A Value range: Cluster ID. Default value: N/A |
types |
Yes |
String |
Definition: Type of the cluster node you want to modify. Constraints: N/A Value range:
Default value: N/A |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
new_flavor_id |
Yes |
String |
Definition: ID of the new node flavor or node storage type (disk type). It is determined by operation_type. Constraints: The value range depends on operation_type. Value range:
Default value: N/A |
operation_type |
No |
String |
Definition: Operation type. Constraints: N/A Value range:
Default value: vm |
need_check_replica |
No |
Boolean |
Definition: Whether to verify replicas. Constraints: N/A Value range:
Default value: true |
is_auto_pay |
No |
Integer |
Definition: Whether to enable automatic payment from your Huawei Cloud account. Constraints: This parameter takes effect only for yearly/monthly clusters. Value range:
Default value: 0 |
need_check_cluster_status |
No |
Boolean |
Definition: Whether to check the cluster status. The value can be true or false. The default value is true. Constraints: N/A Value range:
Default value: true |
cluster_load_check |
No |
Boolean |
Definition: Whether to check the cluster load. The value can be true or false. The default value is true. Constraints: N/A Value range:
Default value: true |
Response Parameters
Status code: 200
Request succeeded.
None
Example Requests
Change the disk type of data nodes for a yearly/monthly Elasticsearch cluster. Before the change, disable index replica verification, and enable cluster status and cluster load check. The change in fees will apply automatically.
POST https://{Endpoint}/v1.0/{project_id}/clusters/4f3deec3-efa8-4598-bf91-560aad1377a3/ess/flavor { "need_check_replica" : false, "new_flavor_id" : "HIGH", "is_auto_pay" : 1, "need_check_cluster_status" : true, "operation_type" : "volume", "cluster_load_check" : true }
Example Responses
None
SDK Sample Code
The SDK sample code is as follows.
Java
Change the disk type of data nodes for a yearly/monthly Elasticsearch cluster. Before the change, disable index replica verification, and enable cluster status and cluster load check. The change in fees will apply automatically.
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.css.v1.region.CssRegion; import com.huaweicloud.sdk.css.v1.*; import com.huaweicloud.sdk.css.v1.model.*; public class UpdateFlavorByTypeSolution { 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); CssClient client = CssClient.newBuilder() .withCredential(auth) .withRegion(CssRegion.valueOf("<YOUR REGION>")) .build(); UpdateFlavorByTypeRequest request = new UpdateFlavorByTypeRequest(); request.withClusterId("{cluster_id}"); request.withTypes("{types}"); UpdateFlavorByTypeReq body = new UpdateFlavorByTypeReq(); body.withIsAutoPay(1); body.withNewFlavorId("HIGH"); body.withNeedCheckReplica(false); request.withBody(body); try { UpdateFlavorByTypeResponse response = client.updateFlavorByType(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()); } } } |
Python
Change the disk type of data nodes for a yearly/monthly Elasticsearch cluster. Before the change, disable index replica verification, and enable cluster status and cluster load check. The change in fees will apply automatically.
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 huaweicloudsdkcss.v1.region.css_region import CssRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcss.v1 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 = CssClient.new_builder() \ .with_credentials(credentials) \ .with_region(CssRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateFlavorByTypeRequest() request.cluster_id = "{cluster_id}" request.types = "{types}" request.body = UpdateFlavorByTypeReq( is_auto_pay=1, new_flavor_id="HIGH", need_check_replica=False ) response = client.update_flavor_by_type(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Change the disk type of data nodes for a yearly/monthly Elasticsearch cluster. Before the change, disable index replica verification, and enable cluster status and cluster load check. The change in fees will apply automatically.
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" css "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/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 := css.NewCssClient( css.CssClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateFlavorByTypeRequest{} request.ClusterId = "{cluster_id}" request.Types = "{types}" isAutoPayUpdateFlavorByTypeReq:= int32(1) needCheckReplicaUpdateFlavorByTypeReq:= false request.Body = &model.UpdateFlavorByTypeReq{ IsAutoPay: &isAutoPayUpdateFlavorByTypeReq, NewFlavorId: "HIGH", NeedCheckReplica: &needCheckReplicaUpdateFlavorByTypeReq, } response, err := client.UpdateFlavorByType(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
More
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 succeeded. |
400 |
Invalid request. Modify the request before retry. |
409 |
The request could not be completed due to a conflict with the current state of the resource. The resource that the client attempts to create already exists, or the update request fails to be processed because of a conflict. |
412 |
The server did not meet one of the preconditions contained in the request. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot