使用API创建ECS集群

本文介绍如何使用EDAS提供的Java SDK调用API创建ECS集群。

前提条件

在创建ECS集群前,您必须提前完成以下准备工作:

  • 安装EDAS的Java SDK。更多信息,请参见Java SDK接入指南
  • 确定创建ECS集群的地域,假设为cn-hangzhou

  • 创建微服务空间。具体操作,请参见创建命名空间

    如果已经存在命名空间,您可以调用ListUserDefineRegion接口查询用户自定义命名空间列表,获取目标命名空间的RegionId

  • 如果您要在专有网络VPC中创建ECS集群,请先创建VPC。具体操作,请参见搭建IPv4专有网络

    如果您已经创建了专有网络VPC,则可以调用ListVpc接口查询VPC列表,获取VPC实例ID(VpcId),假设为vpc-bp1hcg467ekqsv****

背景信息

EDAS提供两类ECS集群:阿里云ECS集群和非阿里云ECS集群(混合云ECS集群)。
  • 阿里云ECS集群:由阿里云的ECS组成的集群。本文介绍如何创建阿里云ECS集群。
  • 非阿里云ECS集群:即混合云ECS集群,可以包含阿里云的ECS、本地IDC内的服务器以及其他云服务提供商的服务器。这些服务器通过专线连通,并添加到EDAS的非阿里云ECS集群中进行管理。关于非阿里云ECS集群的更多信息,请参见创建混合云ECS集群

创建ECS集群

以下代码用于创建ECS集群。

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.edas.model.v20170801.InsertClusterRequest;
import com.aliyuncs.edas.model.v20170801.InsertClusterResponse;

public class InsertCluster {

    public static void main(String[] args)  {
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        // 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您可以根据业务需要,保存到配置文件里。
        // 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险。
        String aliyun_user_ak = System.getenv("ACCESS_KEY_ID");
        String aliyun_user_sk = System.getenv("ACCESS_KEY_SECRET");
        //要创建ECS集群的目标地域ID。
        String region_id = "cn-hangzhou";

        DefaultProfile defaultProfile = DefaultProfile.getProfile(region_id, aliyun_user_ak, aliyun_user_sk);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);

        //创建API请求,并设置参数。
        InsertClusterRequest request = new InsertClusterRequest();
        //需要创建ECS集群的目标微服务空间的RegionId,例如:cn-hangzhou:doc。
        request.setLogicalRegionId("cn-hangzhou:doc");
        //自定义ECS集群名称,例如:ECSClueter_doc。
        request.setClusterName("ECSClueter_doc");
        //设置集群类型,设置为2,即代表ECS集群。
        request.setClusterType(2);
        //设置集群网络类型,2代表专有网络VPC,1代表经典网络。
        request.setNetworkMode(2);
        //VPC实例ID,当选择专有网络VPC时,此参数必填。
        request.setVpcId("vpc-bp1hcg467ekqsv****");


        try {
            InsertClusterResponse response = client.getAcsResponse(request);
            System.out.println("Message=" + response.getMessage() + "\nClusterName=" + response.getCluster().getClusterName()+ "\nClusterId=" + response.getCluster().getClusterId());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

运行程序,返回的执行结果如下:

Message=success
ClusterName=ECSClueter_doc
ClusterId=369d06d7-450b-4f3d-bf75-9536fcd9****

结果验证

在创建ECS集群后,您可以调用ListCluster接口查询集群列表,根据返回结果中的集群名称(ClusterName)参数值判断您是否操作成功。

调用ListCluster接口返回的结果如下:

{
  "ClusterList": {
    "Cluster": [
      {
        "OversoldFactor": 1,
        "NodeNum": 0,
        "ResourceGroupId": "rg-acfm3umruf2****",
        "ClusterId": "369d06d7-450b-4f3d-bf75-9536fcd9****",
        "CreateTime": 1618558401855,
        ......
        "VpcId": "vpc-bp1hcg467ekqsv0zr****",
        "UpdateTime": 1618558401855,
        "ClusterName": "ECSClueter_doc",
        "RegionId": "cn-hangzhou:doc",
        "IaasProvider": "ALIYUN",
        "CpuUsed": 0
      }
    ]
  },
  "Message": "success",
  "RequestId": "65C65D19-36BF-40C1-A3D0-23902D2AF49C",
  "Code": 200
}