当前位置: 首页 > news >正文

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

基础概念

1、地域可用区概念

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

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

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

资源定位步骤

1、步骤概览

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

2、步骤注释

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

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

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

AvailableResourcesType 中的详细信息组合

名称类型描述
IoOptimizedString是否 IO 优化
NetworkTypesString支持的网络类型
InstanceGenerationsArray支持的实例系列
InstanceTypeFamiliesArray支持的实例规格族
SystemDiskCategoriesArray支持创建的系统盘类型组成的数组
DataDiskCategoriesArray支持创建的数据盘类型组成的数组
InstanceTypesArray支持创建的实例规格组成的数组

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的效率,希望大家多多使用,多多支持。

相关文章:

  • 事与人
  • 校园网配置Vmware的网络模式,便于Xshell和notepad的连接
  • 2015年云计算或将成为企业主流应用
  • MagicDraw UML 16.8 安装教程(2)-破解补丁
  • 使用Docker镜像构建RPM包
  • oracle存储过程例子及其他语句[1]
  • 把问题描述清楚是解决问题的起点
  • jquery:利用jsonp跨域访问--转载
  • async await
  • 《C#本质论》读书笔记(十)异常处理 @ Lennon
  • xml 转义特殊字符
  • openldap+php-ldap操作
  • 人生的二和三
  • Springmvc----注解和非注解开发
  • js 获取URL参数的值
  • 230. Kth Smallest Element in a BST
  • CSS实用技巧
  • js 实现textarea输入字数提示
  • Koa2 之文件上传下载
  • mongodb--安装和初步使用教程
  • mysql innodb 索引使用指南
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 构建工具 - 收藏集 - 掘金
  • 以太坊客户端Geth命令参数详解
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Panda3d 碰撞检测系统介绍
  • ###C语言程序设计-----C语言学习(3)#
  • #13 yum、编译安装与sed命令的使用
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (a /b)*c的值
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (强烈推荐)移动端音视频从零到上手(上)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)Controller接口控制器详解(三)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • [ C++ ] STL---string类的使用指南
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [Android Pro] Notification的使用
  • [Django 0-1] Core.Handlers 模块
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [EWS]查找 文件夹
  • [iOS开发]iOS中TabBar中间按钮凸起的实现
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [LeetBook]【学习日记】获取子字符串 + 颠倒子字符串顺序
  • [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路