閱讀124 返回首頁    go 技術社區[雲棲]


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

最後更新:2017-09-10 22:03:47

  上一篇:go  會說話的PPT,從開發者角度十分鍾理解區塊鏈
  下一篇:go  “精靈學院”課堂筆記2——針對企業的DevOps改進和實踐(下)