You need to enable JavaScript to run this app.
导航
OpenAPI快速部署云服务器ECS
最近更新时间:2024.04.10 16:05:49首次发布时间:2022.11.03 08:26:22

本文通过调用火山引擎OpenAPI,实现快速部署大量ECS实例,满足用户对高弹性算力的需求。对于社交媒体,在线教育等存在线上热点活动的用户,该方案可以显著提高客户的使用体验。

应用范围

适用于在短时间内快速交付大量ECS实例的应用场景,例如互娱类、社交媒体类或在线教育类客户,由于热点事件的发生或组织的热点活动,往往需要在极短的时间内获取并使用大量的ECS资源。

前提条件

在进行本文操作前,您需要完成以下准备工作:

  • 注册火山引擎账号,并完成 实名认证。您可以登录 火山引擎控制台,在顶部导航栏右侧,单击“账号管理 > 实名认证”,前往 实名认证 页面查看是否已经完成实名认证。
  • 本方案仅作为实践演示,具体环境以用户实际需求为准。

软件版本

  • 本地计算机操作系统:Windows 10

  • Postman 版本:v9.31.0

实践规划

本实践通过调用火山引擎 OpenAPI 实现快速部署大量 ECS 实例。在调用 OpenAPI 前,需要对 VPC 网段子网网段安全组网卡路由表 进行预规划,同时选择需要创建的 ECS 实例规格镜像。 其中 安全组网卡路由表 在本次实践中为火山引擎默认创建,具体环境以客户实际需求为准。

VPC网段

您可以使用以下网段或其子集作为 VPC 的网段:

  • 192.168.0.0/16 ~ 24(默认)
  • 10.0.0.0/8 ~ 24
  • 172.16.0.0/12 ~ 24

本次选择 192.168.0.0/16 作为VPC网段。

子网网段

子网网段要求如下:

  • 子网网段的掩码长度范围为 16 ~ 29 位。
  • 子网网段必须从属于所在 VPC 的网段。
  • 子网网段不能与所在 VPC 的路由条目的目标网段相同,但可以是目标网段的子集。
  • 每个子网的第一个和最后三个 IP 地址为系统保留地址。例如子网的网段为 192.168.0.0/24,则192.168.0.0、192.168.0.253、192.168.0.254 和 192.168.0.255 4 个地址是系统保留地址。

本次选择 192.168.0.0/24 作为子网网段。

ECS 实例规格

  1. 登录 火山引擎控制台

  2. 在左侧导航树中,单击“产品与服务 > 云服务器” ,进入 云服务器控制台

  3. 在左侧导航栏选择“实例” ,进入实例列表页面。

  4. 单击“创建实例”, 并按下方表格进行配置,即可得到所有可创建的 ECS 实例规格。

    类别
    说明
    计费类型按量计费
    地域及可用区华北2(北京)可用区A

    alt

  5. 本实践选择 通用型g2i ,实例规格: ecs.g2i.large,查看实例规格信息后单击右下角“取消” 。

ECS 镜像

  1. 在左侧导航栏选择“镜像” ,进入镜像列表页面。

  2. 在镜像列表页面,即可查看火山引擎 公共镜像,或者可根据需要 导入自定义镜像

  3. 本实践选择 CentOS 7.6 64位 ,镜像ID:image-ebgzajl1peeh8jc6****。

Postman 调用 OpenAPI

本实践使用 Postman 构建 OpenAPI 请求。相较于其它方式,Postman 具有简单易用的图形用户界面,可以保存接口请求的历史记录,测试集 Collections 可以更有效的管理组织接口,便于在团队之间同步接口数据。

用户需参照 火山引擎官网文档中心 完成 OpenAPI 参数的构建,包括 私有网络云服务器 两部分。本实践涉及的接口请参见 参考文档

安装 Postman

下载安装包

Download Postman 页面,单击 “Download the App”,根据本地电脑配置,下载对应安装包。

安装 Postman

  1. 双击下载好的安装包,软件将自动安装到本地电脑中。

  2. 启动 Postman,出现如下图所示界面,说明安装成功。
    image.png

创建集合

  1. 在 Postman 中,单击 “Collections > +” 创建集合,并重命名为 “Create ECS by OpenAPI”。
    alt

  2. 在集合中单击 “... > Add request”,依次添加 “CreateVpc”、“CreateSubnet”、“DescribeSecurityGroups”、“RunInstances”、“DescribeInstances” 五个请求。
    alt

  3. 请求添加完毕后界面如下。
    alt

创建环境变量

单击 “Environments > +” 创建环境变量,并重命名为“火山引擎OpenAPI”,简化参数请求操作。
alt

参数
示例值
备注
URLopen.volcengineapi.comOpenAPI的服务地址。
AccessKey<AccessKey>请填写您的AccessKey,获取方式如下:
1. 登录 火山引擎控制台
2. 将光标移动到右上角账号名称处,单击“密钥管理”。
3. 在密钥管理界面,复制 AccessKeySecretKey
SecretKey<SecretKey>请填写您的SecretKey,获取方式如上所述。

创建请求

说明

创建请求时,在设置对应请求参数后,需在请求参数配置栏手动输入{{URL}}并保存配置。

创建 CreateVpc 请求

  1. 选中 “CreateVpc” 请求,完成请求参数部分,并调用环境变量 “火山引擎OpenAPI”。
    alt

    参数
    示例值
    备注
    ActionCreateVpc-
    Version2020-04-01-
    X-Expires300-
    CidrBlock192.168.0.0/16-
    VpcNamevpc-test-
    Description通过OpenAPI批量创建ECS-
  2. 单击 “Headers”, 在对应页签下完成请求头部分。
    alt

    参数
    示例值
    备注
    AccessKey{{AccessKey}}调用环境变量,固定填写{{AccessKey}}
    SecretKey{{SecretKey}}调用环境变量,固定填写 {{SecretKey}}
    Regioncn-beijing-
    Servicevpc-
  3. 单击 “Pre-request Script”,在对应页签下完成签名机制的脚本编写,具体脚本用户可根据实际需求参考 签名机制 编写。
    alt

  4. 单击 “Tests”,在对应页签下输入以下命令,提取接口返回值中的VpcId,并将其设置为环境变量,供后续请求调用使用。

    var json = JSON.parse(responseBody); 
    let foobar = json.Result.VpcId; 
    console.log(foobar) 
    pm.environment.set("vpcid",foobar);
    

    alt

创建 CreateSubnet 请求

  1. 选中 “CreateSubnet” 请求,完成请求参数部分,并调用环境变量“火山引擎OpenAPI”。
    alt

    参数
    示例值
    备注
    ActionCreateSubnet-
    Version2020-04-01-
    X-Expires300-
    CidrBlock192.168.0.0/24-
    VpcId{{vpcid}}调用环境变量,固定填写{{vpcid}}
    ZoneIdcn-beijing-a-
    SubnetNamesub-test-
    Description通过OpenAPI批量创建ECS-
  2. 单击 “Headers”, 在对应页签下完成请求头部分。
    alt

    参数
    示例值
    备注
    AccessKey{{AccessKey}}调用环境变量,固定填写{{AccessKey}}
    SecretKey{{SecretKey}}调用环境变量,固定填写{{SecretKey}}
    Regioncn-beijing-
    Servicevpc-
  3. 单击 “Pre-request Script”,在对应页签下完成签名机制的脚本编写,具体脚本用户可根据实际需求参考 签名机制 编写。
    alt

  4. 单击 “Tests”,在对应页签下输入以下命令,提取接口返回值中的SubnetId,并将其设置为环境变量,供后续请求调用使用。

    var json = JSON.parse(responseBody);
    let foobar = json.Result.SubnetId;
    console.log(foobar)
    pm.environment.set("subnetid",foobar);
    

    alt

创建 DescribeSecurityGroups 请求

  1. 选中 “DescribeSecurityGroups” 请求,完成请求参数部分,并调用环境变量“火山引擎OpenAPI”。
    alt

    参数
    示例值
    备注
    ActionDescribeSecurityGroups-
    Version2020-04-01-
    X-Expires300-
    VpcId{{vpcid}}调用环境变量,固定填写{{vpcid}}
  2. 单击 “Headers”, 在对应页签下完成请求头部分。
    alt

    参数
    示例值
    备注
    AccessKey{{AccessKey}}调用环境变量,固定填写{{AccessKey}}
    SecretKey{{SecretKey}}调用环境变量,固定填写{{SecretKey}}
    Regioncn-beijing-
    Servicevpc-
  3. 单击 “Pre-request Script”,在对应页签下完成签名机制的脚本编写,具体脚本用户可根据实际需求参考 签名机制 编写。
    alt

  4. 单击 “Tests”,在对应页签下输入以下命令,提取接口返回值中的SecurityGroupId,并将其设置为环境变量,供后续请求调用使用。

    var json = JSON.parse(responseBody);
    let foobar = json.Result.SecurityGroups[0].SecurityGroupId;
    console.log(foobar)
    pm.environment.set("securitygroupid",foobar);
    

    alt

创建 RunInstances 请求

  1. 选中 “RunInstances” 请求,完成请求参数部分,并调用环境变量“火山引擎OpenAPI”。
    alt

    参数
    示例值
    备注
    ActionRunInstances-
    Version2020-04-01-
    X-Expires300-
    ZoneIdcn-beijing-a-
    ImageIdimage-ebgzajl1peeh8jc6****CentOS 7.6 64位
    InstanceTypeecs.g2i.large通用型g2i(2vCPU/8GiB)
    InstanceNameinstance-test-
    Count10创建数量
    Passwordpassword@123-

    KeyPairName

    keypair

    • Windows实例不支持密钥对KeyPairName
    • 如果同时设置了密钥对KeyPairName和密码Password,则仅生效密钥对KeyPairName
    Volumes.1.VolumeTypeESSD-
    Volumes.1.Size40-
    Volumes.2.VolumeTypeESSD-
    Volumes.2.Size40-
    NetworkInterfaces.1.SubnetId{{subnetid}}调用环境变量,固定填写{{subnetid}}
    NetworkInterfaces.1.SecurityGroupIds.1{{securitygroupid}}调用环境变量,固定填写{{securitygroupid}}
    InstanceChargeTypePostPaid-
    UniqueSuffixtrue-
    SuffixIndex1-
    SecurityEnhancementStrategyActive
    HpcClusterIdhpcCluster-1当创建高性能计算 GPU 型实例时,请指定高性能计算集群 ID,本实践不选择
  2. 单击 “Headers”, 在对应页签下完成请求头部分。
    alt

    参数
    示例值
    备注
    AccessKey{{AccessKey}}调用环境变量,固定填写{{AccessKey}}
    SecretKey{{SecretKey}}调用环境变量,固定填写{{SecretKey}}
    Regioncn-beijing-
    Serviceecs-
  3. 单击 “Pre-request Script”,在对应页签下完成签名机制的脚本编写,具体脚本用户可根据实际需求参考 签名机制 编写。
    alt

创建 DescribeInstances 请求

  1. 选中 “DescribeInstances” 请求,完成请求参数部分,并调用环境变量“火山引擎OpenAPI”。
    alt

    参数
    示例值
    备注
    ActionDescribeInstances-
    Version2020-04-01-
    X-Expires300-
    ZoneIdcn-beijing-a-
    VpcId{{vpcid}}调用环境变量,固定填写{{vpcid}}
  2. 单击 “Headers”, 在对应页签下完成请求头部分。
    alt

    参数
    示例值
    备注
    AccessKey{{AccessKey}}调用环境变量,固定填写{{AccessKey}}
    SecretKey{{SecretKey}}调用环境变量,固定填写{{SecretKey}}
    Regioncn-beijing-
    Serviceecs-
  3. 单击 “Pre-request Script”,在对应页签下完成签名机制的脚本编写,具体脚本用户可根据实际需求参考 签名机制 编写。
    alt

运行集合

  1. 按照下图操作步骤运行集合。
    alt

  2. 查看运行结果可见,10 台 ECS 服务器已经创建成功。
    alt

  3. 在首次运行集合后,环境变量中已自动添加了本次实践的{{vpcid}}{{subnetid}}{{securitygroupid}},如需在相同的 VPC 和子网下再次批量创建云主机,仅需执行 RunInstances 和 DescribeInstances 两步即可。

控制台验证

  1. 登录 火山引擎控制台

  2. 在左侧导航树中,单击“产品与服务 > 云服务器”,进入 云服务器控制台

  3. 在左侧导航栏单击“实例” ,进入实例列表页面,在顶部导航栏,选择创建实例的所属地域,可以看到 10 台云服务器 ECS 正在运行中,云服务器 ECS 创建成功。

参考文档