Changing AZs for a Cluster Instance
Function
An availability zone (AZ) is a physical region where resources use independent power supplies and networks. AZs in the same region can communicate with each other through internal networks but are physically isolated.
Multi-AZ deployment is a high-availability solution provided by CSS. You can deploy a cluster across two or three AZs in the same region. This helps prevent data loss and lower the risk of downtime.
This API is used to change AZs by specifying node types.
Constraints
-
To ensure service continuity, the total number of data nodes and cold data nodes in the cluster must be greater than or equal to 3.
-
To ensure that all index shards in the cluster can be allocated to the remaining data nodes or cold data nodes, and to prevent replicas from becoming unassignable when nodes go offline during switchover, the total number of data nodes and cold data nodes must be greater than the maximum number of index replicas plus 1.
-
In AZ high-availability reconstruction scenarios, when converting from a single-AZ deployment to a dual-AZ deployment, the final number of data nodes or cold data nodes in each AZ must be no fewer than 2.
-
During the switchover process, nodes are taken offline and rebuilt one by one. You must ensure that after any single node goes offline, the remaining nodes have enough disk capacity to accommodate all data from that node, and that disk usage remains below 80%.
-
While the cluster is switching AZs, the AZ attribute of some nodes may already have changed. In this case, the displayed AZ of the nodes may show an intermediate state. After the task is complete, the cluster AZ display returns to normal.
Calling Method
For details, see Calling APIs.
Authorization Information
Each account has all the permissions required to call all APIs, but IAM users must be assigned the required permissions.
- If you are using role/policy-based authorization, see Permissions Policies and Supported Actions for details on the required permissions.
- If you are using identity policy-based authorization, the following identity policy-based permissions are required.
Action
Access Level
Resource Type (*: required)
Condition Key
Alias
Dependencies
css:cluster:azmigrate
Write
cluster *
-
- ecs:cloudServerFlavors:get
- evs:types:get
- kms:cmk:get
- iam:agencies:listAgencies
- iam:permissions:listRolesForAgency
- iam:permissions:listRolesForAgencyOnProject
- iam:agencies:pass
URI
POST /v1.0/{project_id}/clusters/{cluster_id}/inst-type/{inst_type}/azmigrate
| 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 AZs are to be changed. 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 |
| inst_type | Yes | String | Definition: Types of nodes whose AZs are to be changed. Constraints: All mission-critical data has been backed up before an AZ switchover. This is to prevent data loss. Value range: Default value: N/A |
Request Parameters
Response Parameters
Status code: 200
Request succeeded.
None
Example Requests
Change AZs for the current cluster.
POST https://{Endpoint}/v1.0/{project_id}/clusters/ea244205-d641-45d9-9dcb-ab2236bcd07e/inst-type/all/azmigrate
{
"source_az" : "cn-north-4c",
"target_az" : "cn-north-4a",
"migrate_type" : "az_migrate",
"agency" : "css-test-agency"
} Example Responses
None
SDK Sample Code
The SDK sample code is as follows.
Java
Change AZs for the current 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 54 55 | 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 UpdateAzByInstanceTypeSolution { 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(); UpdateAzByInstanceTypeRequest request = new UpdateAzByInstanceTypeRequest(); request.withClusterId("{cluster_id}"); request.withInstType(UpdateAzByInstanceTypeRequest.InstTypeEnum.fromValue("{inst_type}")); UpdateAzByInstanceTypeReq body = new UpdateAzByInstanceTypeReq(); body.withAgency("css-test-agency"); body.withMigrateType("az_migrate"); body.withTargetAz("cn-north-4a"); body.withSourceAz("cn-north-4c"); request.withBody(body); try { UpdateAzByInstanceTypeResponse response = client.updateAzByInstanceType(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 AZs for the current 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 | # 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 = UpdateAzByInstanceTypeRequest() request.cluster_id = "{cluster_id}" request.inst_type = "{inst_type}" request.body = UpdateAzByInstanceTypeReq( agency="css-test-agency", migrate_type="az_migrate", target_az="cn-north-4a", source_az="cn-north-4c" ) response = client.update_az_by_instance_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 AZs for the current 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 | 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.UpdateAzByInstanceTypeRequest{} request.ClusterId = "{cluster_id}" request.InstType = model.GetUpdateAzByInstanceTypeRequestInstTypeEnum().INST_TYPE request.Body = &model.UpdateAzByInstanceTypeReq{ Agency: "css-test-agency", MigrateType: "az_migrate", TargetAz: "cn-north-4a", SourceAz: "cn-north-4c", } response, err := client.UpdateAzByInstanceType(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. The client should not repeat the request without modifications. |
| 403 | The request is rejected. The server has received the request and understood it, but the server is refusing to respond to it. The client should not repeat the request without modifications. |
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