云服务器ECS资源查询的正确姿势

基础概念

1、地域可用区概念

  • 地域是指物理的数据中心.
  • 可用区是指在同一地域内,电力和网络互相独立的物理区域。官网详解

2、产品概念:产品基本形态由四部分组成,<计费方式, 规格与IO优化,网络类型, 磁盘类型>

  • (1) 计费方式:目前主要有 包年/包月/包周、按量付费竞价实例 三种。
  • (2) 规格与IO优化:ECS 实例规格定义了实例的 CPU 和内存的配置(包括 CPU 型号、主频等)这两个基本属性,目前新售卖的规格,都是默认IO优化
  • (3) 网络类型: 目前主要分为经典网路与专有网络,网络详解
  • (4) 磁盘类型: 磁盘主要分为云盘与本地盘。云盘详解

资源定位步骤

1、步骤概览

步骤 对应接口 对应参数 目标数据
1、查询地域 DescribeRegions N/A 地域名称(RegionId)
2、查询可用区 DescribeZones 地域名称 可用区名称(ZoneId)
3、确定付费类型 DescribeZones 付费类型/竞价策略 可用区资源组合
4、查询资源组合 DescribeZones 地域名称/付费类型 可用区资源组合

2、步骤注释

注1、实例的付费方式。取值范围:
  • PrePaid:预付费,即包年包月
  • PostPaid:后付费,即按量付费。
  • 默认值:PostPaid
注2、竞价策略。后付费实例的竞价策略。

当 InstanceChargeType 为PostPaid 时为生效,
取值范围:

  • NoSpot:正常按量付费实例;
  • SpotWithPriceLimit:设置上限价格的竞价实例;
  • SpotAsPriceGo:系统自动出价,最高按量付费价格。
  • 默认值:NoSpot
注3、可用区资源组合

AvailableResourcesType 中的详细信息组合

名称 类型 描述
IoOptimized String 是否 IO 优化
NetworkTypes String 支持的网络类型
InstanceGenerations Array 支持的实例系列
InstanceTypeFamilies Array 支持的实例规格族
SystemDiskCategories Array 支持创建的系统盘类型组成的数组
DataDiskCategories Array 支持创建的数据盘类型组成的数组
InstanceTypes Array 支持创建的实例规格组成的数组

3、案例与步骤

背景 : 开发小王,需要调用openAPI购买2台阿里云服务器ECS。具体需求是:杭州地域、双可用区容灾,包年包月,专有网络,企业级独享实例ecs.sn1.medium(2核心4G内存)实例。
问题 1、是否可以购买?
问题 2、哪个可用区满足要求?

1、确定地域的regionId;

首先,调用步骤1的DescribeRegions 接口,拿到杭州的regionID:

请求示例

https://ecs.aliyuncs.com/?Action=DescribeRegions
&<公共请求参数>

返回示例

<DescribeRegionsResponse>
    <RequestId>611CB80C-B6A9-43DB-9E38-0B0AC3D9B58F</RequestId>
    <Regions>
        <Region>
            <RegionId>cn-hangzhou </RegionId>
        </Region>
        <Region>
            <RegionId>cn-qingdao</RegionId>
        </Region>
    </Regions>
</DescribeRegionsResponse>
2、确定付费类型;

根据注释及DescribeZones参数,确定包年包月参数

InstanceChargeType = PrePaid
3、查询可见可用区;

根据步骤1、2 确定了reigonId 及InstanceChargeType,调用DescribeZones查询可用区

请求示例

https://ecs.aliyuncs.com/?Action=DescribeZones
&RegionId=cn-hangzhou
&InstanceChargeType=PrePaid
&<公共请求参数>

返回示例

{
    "RequestId":"ED962F8E-BAAE-4569-857C-F7B8932F1CF3",
    "Zones":{
        "Zone":[
            {
                "AvailableResourceCreation":Object{...},
                "AvailableResources":Object{...},
                "AvailableInstanceTypes":Object{...},
                "ZoneId":"cn-hangzhou-f",
                "AvailableVolumeCategories":Object{...},
                "LocalName":"华东 1 可用区 F",
                "AvailableDiskCategories":Object{...}
            },
            Object{...},
            Object{...},
            Object{...},
            Object{...}
        ]
    }
}

拿到zoneId列表 cn-hangzhou-b/cn-hangzhou-c/cn-hangzhou-e/cn-hangzhou-f

4、查询产品;

根据步骤3的返回实例,细致化分析可用区f内资源情况

1、可创建产品类别

AvailableResourceCreation 中代表可用区内可以创建的

  • 虚拟交换机:VSwitch
  • 实例:Instance
  • 独立云盘:Disk
    以上三种资源

返回示例

{
                "AvailableResourceCreation":{
                    "ResourceTypes":[
                        "VSwitch",
                        "Instance",
                        "Disk"
                    ]
                },
2、可创建资源组合

确定了可用区可以创建实例,接下来分析可用区实例资源组合

返回示例

          "AvailableResources":{
                    "ResourcesInfo":[
                        {
                            "IoOptimized":true,
                            "SystemDiskCategories":{
                                "supportedSystemDiskCategory":[
                                    "cloud_ssd",
                                    "cloud_efficiency"
                                ]
                            },
                            "InstanceTypes":{
                                "supportedInstanceType":[
                                    "ecs.sn1.medium",
                                    "...",
                                ]
                            },
                            "InstanceTypeFamilies":{
                                "supportedInstanceTypeFamily":[
                                    "ecs.sn1",
                                    "..."
                                ]
                            },
                            "DataDiskCategories":{
                                "supportedDataDiskCategory":[
                                    "cloud_ssd",
                                    "cloud_efficiency"
                                ]
                            },
                            "InstanceGenerations":{
                                "supportedInstanceGeneration":[
                                    "ecs-3",
                                    "..."
                                ]
                            },
                            "NetworkTypes":{
                                "supportedNetworkCategory":[
                                    "vpc"
                                ]
                            }
                        },
                        Object{...}
                    ]
                }

AvailableResources 中代表可用区内可以创建的资源组合

  • 规格:InstanceTypes,寻找 ecs.sn1.medium
  • IO优化:"IoOptimized", 寻找 true,
  • 磁盘类型:SystemDiskCategories/DataDiskCategories, 寻找cloud_efficiency
  • 网络类型:NetworkTypes, 寻找vpc

确定资源可用区f AvailableResources组合中,有且满足小王要求的产品。
按照同样的步骤,寻找到第二个可用区 b

3、创建实例;
  • 1、创建虚拟交换机:确定了可用区后,就可以在对应对应可用区创建虚拟交换机。
  • 2、创建对应产品:确定传入对应的产品组合:
  • 地域:RegionId =cn-hangzhou
  • 可用区:ZoneId =cn-hangzhou-f
  • 虚拟交换机:VSwitchId =id1/id2
  • io优化:IoOptimized =optimized
  • 规格:InstanceType =ecs.sn1.medium
  • 磁盘:SystemDisk.Category=cloud_efficiency

总结

工欲善其事必先利其器,理解并使用云服务器ECS资源查询的正确姿势,可以大大提升OpenAPI用户创建ECS的效率,希望大家多多使用,多多支持。

上一篇:【用户体验优化课题(二)】你若义无反顾,我必全力以赴


下一篇:区块链教程Fabric1.0源代码分析ledgerID数据库-兄弟连区块链教程