# huaweicloud-v2createcluster-java **Repository Path**: HuaweiCloudDeveloper/huaweicloud-v2createcluster-java ## Basic Information - **Project Name**: huaweicloud-v2createcluster-java - **Description**: 通过该示例可指导用户使用OpenAPI V2接口创建GaussDB(DWS)集群 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-09 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1. 介绍 ### DWS概述 数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。详细信息请参见[产品介绍](https://support.huaweicloud.com/productdesc-dws/dws_01_0002.html)。 ### 您将学到什么 通过该示例可指导用户使用V2创建集群接口创建GaussDB(DWS)集群。该接口为异步接口,创建集群需要10~15分钟。V2创建集群接口提供更多操作,如使用优化后的规格、支持创建加密集群和支持3AZ创建集群等,更多信息请参见接口详情[API说明](https://support.huaweicloud.com/api-dws/dws_02_0719.html)。 使用V1创建集群接口创建 GaussDB(DWS) 集群请参考[创建集群](https://codelabs.developer.huaweicloud.com/codelabs/samples/88898fac84de469c8601c79f924d034b)。 ## 2. 前置条件 - 已注册华为云,并完成实名认证。 - 已获取服务对应区域终端节点地址,具体请参考 [地区和终端节点](https://developer.huaweicloud.com/endpoint?DWS) 。 - 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 [访问密钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html) 。 - 已获取对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见 [API凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0002.html) 。 - 已创建VPC并获取子网ID,具体参考[虚拟私有云VPC](https://support.huaweicloud.com/productdesc-vpc/zh-cn_topic_0013748729.html)。 - 已具备开发环境 ,支持Java JDK 1.8及其以上版本。 ## 3. 安装SDK 您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。 使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-dws”,具体的SDK版本号请参见 [SDK开发中心](https://sdkcenter.developer.huaweicloud.com?language=java),推荐使用最新SDK 。 ```xml com.huaweicloud.sdk huaweicloud-sdk-core 3.1.19 com.huaweicloud.sdk huaweicloud-sdk-dws 3.1.42 ``` ## 4. 关键代码片段 以下代码展示如何使用SDK的V2接口创建GuassDB(DWS)集群和查询集群创建结果 ### 4.1 导入依赖模块 ```java // 用户身份认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; // 导入dws的客户端 import com.huaweicloud.sdk.dws.v2.DwsClient; // 导入配置集群参数和创建集群的请求响应类 import com.huaweicloud.sdk.dws.v2.model.CreateClusterV2Request; import com.huaweicloud.sdk.dws.v2.model.ListClusterDetailsRequest; import com.huaweicloud.sdk.dws.v2.model.ListClusterDetailsResponse; import com.huaweicloud.sdk.dws.v2.model.PublicIp; import com.huaweicloud.sdk.dws.v2.model.V2CreateCluster; import com.huaweicloud.sdk.dws.v2.model.Volume; import com.huaweicloud.sdk.dws.v2.model.V2CreateClusterReq; import com.huaweicloud.sdk.dws.v2.model.CreateClusterV2Response; import com.huaweicloud.sdk.dws.v2.region.DwsRegion; // 日志打印 import org.slf4j.Logger; import org.slf4j.LoggerFactory; // 基础集合类 import java.util.ArrayList; import java.util.List; ``` ### 4.2 初始化认证 ```java BasicCredentials credentials = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId); ``` ### 4.3 初始化DwsClient ```java DwsClient client = DwsClient.newBuilder() .withCredential(credentials) .withRegion(DwsRegion.valueOf(regionId)) .build(); ``` ### 4.4 配置创建集群相关参数,构建请求体 ```java /* * V2创建集群相关参数说明如下所示: * - name:集群名称,要求唯一性,必须以字母开头并只包含字母、数字、中划线或下划线,长度为4~64个字符。 * - flavor:集群规格名称。节点规格详情请参见数据仓库规格。 * - num_cn:集群CN数量,取值范围为2~集群节点数,最大值为20,默认值为3。 * - num_node:集群节点数量,集群模式取值范围为3~256,实时数仓(单机模式)取值为1。 * - db_name:管理员用户名称。用户命名要求如下: * 只能由小写字母、数字或下划线组成。 * 必须由小写字母或下划线开头。 * 长度为6~64个字符。 * 用户名不能为DWS数据库的关键字。 * - db_password:管理员用户密码。 * 8~32个字符 * 至少包含以下字符中的3种:大写字母、小写字母、数字和特殊字符(~!?,.:;-_(){}[]/<>@#%^&*+|\=)。 * 不能与用户名或倒序的用户名相同。 * - db_port:集群数据库端口,取值范围为8000~30000,默认值:8000。 * - availability_zones:可用区列表。集群可用区选择详情请参见地区和终端节点 * - vpc_id:指定虚拟私有云ID,用于集群网络配置。 * - subnet_id:指定子网ID,用于集群网络配置。 * - security_group_id: 指定安全组ID,用于集群网络配置。非必选。 * - publicBindType:弹性IP绑定类型,取值如下:auto_assign:自动绑定 not_use:暂未使用 bind_existing :使用已有。 * - eipId:弹性IP的id。非必选。 * - datastore_version:集群版本。 * - volume:磁盘名称,取值范围为 :SSD(超高IO) 高IO(SAS) 普通IO(SATA)。非必选。 * - capacity: 磁盘容量。非必选。 * - enterpriseProjectId:企业项目ID,对集群指定企业项目,如果未指定,则使用默认企业项目“default”的ID,即0,非必选。 */ String name = ""; String flavor = ""; Integer numCn = 3; Integer numNode = 3; String dbName = ""; String dbPassword = ""; Integer dbPort = 8000; List availabilityZones = new ArrayList<>(); availabilityZones.add(""); String vpcId = ""; String subNetId = ""; String securityGroupId = ""; String publicBindType = ""; String eipId = ""; String datastoreVersion = ""; String volume = ""; Integer capacity = 100; String enterpriseProjectId = "0"; CreateClusterV2Request request = new CreateClusterV2Request(); // 配置创建集群相关参数 V2CreateCluster v2ClusterInfo = new V2CreateCluster() .withName(name) .withFlavor(flavor) .withNumCn(numCn) .withNumNode(numNode) .withDbName(dbName) .withDbPassword(dbPassword) .withDbPort(dbPort) .withAvailabilityZones(availabilityZones) .withVpcId(vpcId) .withSubnetId(subNetId) .withSecurityGroupId(securityGroupId) .withPublicIp(new PublicIp().withPublicBindType(publicBindType).withEipId(eipId)) .withDatastoreVersion(datastoreVersion) .withVolume(new Volume().withVolume(volume).withCapacity(capacity)) .withEnterpriseProjectId(enterpriseProjectId); // 构建请求体 V2CreateClusterReq requestBody = new V2CreateClusterReq().withCluster(v2ClusterInfo); request.setBody(requestBody); ``` ### 4.5 接收创建集群响应参数 ```java CreateClusterV2Response response = client.createClusterV2(request); logger.info(response.toString()); ``` ### 4.6 查询集群详情 ```java // 查询集群创建结果。创建集群需要10~15分钟,可等待查询创建结果 String clusterId = response.getCluster().getId(); ListClusterDetailsRequest detailsRequest = new ListClusterDetailsRequest().withClusterId(clusterId); ListClusterDetailsResponse detailsResponse = client.listClusterDetails(detailsRequest); logger.info(detailsResponse.toString()); ``` ## 5. 运行结果 创建集群成功返回集群ID ```json { "cluster" : { "id" : "bfb25264-ca99-4cda-bf89-258052383ae7" } } ``` 根据集群ID查询集群详情,接口详情参见[API说明](https://support.huaweicloud.com/api-dws/dws_02_0019.html)。 ```json { "cluster":{ "id":"bfb25264-ca99-4cda-bf89-258052383ae7", "name":"dws1", "status":"AVAILABLE", "version":"9.0.0", "updated":"2023-06-08T02:33:16Z", "created":"2023-06-08T02:33:16Z", "port":8000, "endpoints":[ { "connect_info":"dws1.dws.myhuaweicloud.com", "jdbc_url":"jdbc:postgresql://dws1.dws.myhuaweicloud.com:8000/gaussdb" } ], "nodes":[ { "id":"0bacfe03-47c5-4a63-b5df-7a29792514e2", "name":"dws1-dws-cn-cn-3-1", "status":"200" }, { "id":"4cf7c610-8b14-49ea-a4fb-dd708a90abbc", "name":"dws1-dws-cn-cn-2-1", "status":"200" }, { "id":"80d578b6-00f4-42b4-98a8-bf350ddf617b", "name":"dws1-dws-cn-cn-1-1", "status":"200" } ], "elb":null, "tags":null, "user_name":"dbadmin", "number_of_node":3, "number_of_free_node":0, "cluster_description_info":null, "recent_event":6, "availability_zone":"cn-north-7c", "enterprise_project_id":"0", "node_type":"dwsx3.4U16G.4DPU", "vpc_id":"050e154d-9954-4929-b6d3-12af7c9213ac", "subnet_id":"8329139c-6a7a-4812-8c61-59ee3cfe41f5", "public_ip":{ "status":"FAIL", "public_bind_type":"bind_existing", "eip_id":"cb1e0084-88c0-49b5-a579-c1db64bcafda", "eip_address":"xxxxxx", "error_message":"弹性IP已经绑定其他虚拟机" }, "public_endpoints":[ { "public_connect_info":"xxxxxx:8000", "jdbc_url":"jdbc:postgresql://xxxxxx:8000/gaussdb" } ], "action_progress":{ }, "sub_status":"NORMAL", "task_status":null, "logical_cluster_mode":true, "use_logical_cluster":true, "logical_cluster_initialed":true, "guest_agent_version":"8.2.1.1", "spec_version":"v3.0", "datastore_type":"dws3.0", "plugins":[ { "id":"9c078a19-5b93-4820-a157-090e195a74ce", "type":"inspect", "version":"8.2.1.1", "aarchType":"all", "autoInstall":"install|upgrade", "datastoreVersion":"9.0.0", "datastoreType":"dws3.0", "packageName":"8.2.1.1-inspect-8f06a22-20230516123248.tar.gz", "status":"0", "updateTime":1684324244000 }, { "id":"c814d1d3-dac0-4fae-a68d-b6c609931f49", "type":"dmsAgent", "version":"8.2.1.10", "aarchType":"all", "autoInstall":"install|upgrade", "datastoreVersion":"9.0.0", "datastoreType":"dws3.0", "packageName":"8.2.1.1-dmsAgent-20230516123314.tar.gz", "status":"0", "updateTime":1685429654000 }, { "id":"8e5d71fa-1e34-4018-9e71-de961c167c3d", "type":"aggregation", "version":"8.2.1.1", "aarchType":"all", "autoInstall":"install|upgrade", "datastoreVersion":"9.0.0", "datastoreType":"dws3.0", "packageName":"8.2.1.1-aggregation-20230516123248.tar.gz", "status":"0", "updateTime":1684324244000 }, { "id":"8a448030-25ca-42dd-8512-719381962c1b", "type":"vmtools", "version":"8.2.1.1", "aarchType":"all", "autoInstall":"install", "datastoreVersion":"9.0.0", "datastoreType":"dws3.0", "packageName":"8.2.1.1-vmtools-20230513103322.tar.gz", "status":"0", "updateTime":1683970334000 } ], "obs_tbs_used":"0 GB", "package_info":"{\"guestAgent\":\"8.2.1.1-guestAgent-0ff1ee8c-3d064e9f-20230519203128.tar.gz\",\"kernel\":\"9.0.0-dws3.0-x86_64-95806-f95b6bd1-2da3d5a5-20230602102307.tar.gz\"}", "order_id":null, "is_frozen":0, "frozen_time":"2023-06-08T02:16:47Z", "manage_ip":null, "network_type":null, "parameter_group":{ "id":"cb81796f-d6e0-43a0-96a8-447bbb07c638", "name":"parameterGroupFor_bf* Connection #1 to host 127.0.0.1 left intact b25264-ca99-4cda-bf89-258052383ae7", "status":"In-Sync" }, "node_type_id":"cdc2182e-4610-4e93-be02-3a951ef42280", "security_group_id":"9fe9ab77-efab-4236-a773-77445238f3c0", "private_ip":[ "192.168.1.185", "192.168.1.36", "192.168.1.64" ], "maintain_window":{ "day":"Thu", "start_time":"22:00", "end_time":"02:00" }, "has_logical_cluster_action":false } } ``` ## 6. 参考 更多信息请参考 [数据仓库服务文档](https://support.huaweicloud.com/dws/index.html) ## 7. 修订记录 | 发布日期 | 文档版本 | 修订说明 | | :--------: | :------: | :----------: | | 2023-6-30 | 1.0 | 文档首次发布 |