全部產品
Search
文件中心

Elastic Compute Service:使用彈性供應組API大量建立ECS執行個體

更新時間:Jun 19, 2024

在需要大量建立隨用隨付執行個體的情況下,您可以通過調用API介面完成建立操作更為高效。本文主要介紹如何通過編寫調用CreateAutoProvisioningGroup API介面的Java代碼大量建立ECS隨用隨付執行個體,以及對比RunInstances和CreateAutoProvisioningGroup介面的功能、優劣勢。

背景資訊

在業務需要使用隨用隨付ECS執行個體的情境下,RunInstances是使用最頻繁的API。RunInstances擁有一次調用能夠最多建立100台ECS執行個體的能力,但是在實際的生產環境中,如果需要超過100台的大大量建立ECS執行個體情境,直接使用RunInstances會存在一定的技術瓶頸。更多資訊,請參見RunInstances建立執行個體時存在的問題

說明

如果您已瞭解RunInstances大量建立執行個體過程中存在的技術瓶頸,可以跳過該章節。

為瞭解決大大量建立ECS執行個體的需求情境,阿里雲提供了彈性供應組,您可以通過CreateAutoProvisioningGroup建立彈性供應組,一鍵式的部署跨計費方式、跨可用性區域、跨執行個體規格類型系列的執行個體叢集。相較於RunInstancesCreateAutoProvisioningGroup更適合大大量建立ECS執行個體的業務情境。兩者的功能對比與優勢分析,請參見RunInstances與CreateAutoProvisioningGroup功能對比以及彈性供應組的優勢

RunInstances與CreateAutoProvisioningGroup功能對比

本章節對比RunInstancesCreateAutoProvisioningGroup兩介面的部分功能,使您可以快速瞭解兩者的差異,選擇合適的建立執行個體方式。

對比項

RunInstances

CreateAutoProvisioningGroup

單次大量建立執行個體的數量上限

100台

1000台(vCPU上限為10000)

容量交付方式

執行個體數量

執行個體數量、vCPU核心數、執行個體規格的權重等

是否支援多可用性區域

是否支援多個執行個體規格

是否支援多種磁碟規格

是否提供了建立執行個體的策略

是。提供了如下策略:

  • 隨用隨付執行個體

    • 成本最佳化策略:從備選執行個體規格中選取成本最低的執行個體規格,建立執行個體。

    • 優先順序策略:按照備選執行個體規格設定的優先順序,依次嘗試建立執行個體。

  • 搶佔式執行個體

    • 成本最佳化策略:從備選執行個體規格中選取成本最低的執行個體規格,建立執行個體。

    • 可用性區域均衡分布策略:在備選的可用性區域之間,數量均勻地建立執行個體。

    • 容量最佳化分布策略:根據搶佔式執行個體的庫存情況,選擇最優的執行個體規格及可用性區域進行建立執行個體。

交付穩定性

受資產庫存影響較大

多可用性區域、多執行個體規格的配置組合有效降低了資產庫存造成的影響

API響應格式

同步返回建立結果

同步返回建立結果

建立執行個體的方式由RunInstances更換為CreateAutoProvisioningGroup的部分樣本情境:

  • 如果您之前使用RunInstances在單可用性區域、單一實例規格的配置下大量建立執行個體,更換為CreateAutoProvisioningGroup後,您只需配置一組執行個體規格與可用性區域的組合,即可實現大量建立執行個體。

  • 如果您之前使用RunInstances時手動設定了業務部署方案,更換為CreateAutoProvisioningGroup後,將由系統為您提供一鍵式的多可用性區域、多執行個體規格、多磁碟配置的部署能力,並且系統提供了多種建立執行個體的策略供您選擇。

    例如:您之前手動設定了遍曆多個執行個體規格及可用性區域的方案進行RunInstances調用,以提高執行個體建立的成功率。更換為CreateAutoProvisioningGroup後,您只需要通過參數配置多個執行個體規格及可用性區域的組合,選擇合適的建立策略,系統將自動完成大量建立執行個體的操作。

重要

彈性供應組的建立策略存在使用限制,單次最大可建立1000台執行個體,如果指定了執行個體規格的權重(WeightedCapacity),則單次建立的最大加權容量為10000。

RunInstances建立執行個體時存在的問題

基於RunInstances功能的限制,您在大大量建立執行個體時,可能遇到下表所示的問題。

問題

說明

解決方案

大量建立的能力有限

調用一次RunInstances最多可以建立100台ECS執行個體。

當您需要建立大於100台ECS執行個體時,需要通過迴圈或並發的方式多次調用該介面,以完成業務需求。

大量建立的穩定性不足

調用RunInstances只支援設定單可用性區域、單一實例規格。因此,在大量建立ECS執行個體的過程中,可能會出現執行個體規格的庫存不足、停止售賣或使用限制等問題。引發以下情況:

  • 在某一時間段,執行個體規格的庫存不足導致大量建立失敗。

  • 在某一時間段,執行個體規格停止售賣導致無法再建立指定的執行個體規格。

  • 指定的執行個體規格只在部分可用性區域售賣。

  • 指定的執行個體規格只能搭配指定的磁碟類型。

  • 庫存問題是導致大量建立ECS執行個體失敗的主要原因。因此阿里雲會推薦您在大量建立ECS執行個體之前,先調用DescribeAvailableResource查詢執行個體規格與可用性區域下資源的庫存情況,手動確認多個庫存充足的可用性區域與執行個體規格的組合後,再大量建立ECS執行個體。通過複雜的建立方式,換來了較高的業務交付穩定性。

    樣本情境:當您確認多個庫存充足的可用性區域與執行個體規格的組合後,您還需要構建合適的建立ECS執行個體的策略。例如,您可以根據手動確認的多個組合順序,依次建立100台ECS執行個體,如果第一個組合的資產庫存只支援建立50台ECS執行個體,那麼您需要使用第二個組合嘗試建立其餘50台ECS執行個體。

  • 執行個體規格存在使用限制。您可以通過DescribeAvailableResource查詢限制,並自行建立容錯方案,避免因使用限制變更帶來的影響。

    說明

    您也可以根據文檔提供的執行個體規格特點確定相關限制。更多資訊,請參見執行個體規格類型系列

    樣本情境:ecs.g6e.large執行個體規格只支援ESSD雲端硬碟類型、cn-beijing-x可用性區域下不支援選擇ESSD雲端硬碟類型等。

建立策略過於單一

RunInstances僅支援設定單可用性區域、單一實例規格。如果您的業務需要多可用性區域部署實現異地容災、需要按照最低成本建立ECS執行個體等,則需要您自行構建業務部署方案,以保障執行個體的成功部署。自行構建的業務部署方案存在以下問題:

  • 開發成本高。自行構建的業務部署方案需要處理一系列的問題。例如,庫存不足時如何順利的建立ECS執行個體、擴容伺服器時如何在擷取搶佔式執行個體最低成本的同時保證計算能力等

  • 穩定性與專業性不足。對於阿里雲提供的資源,您難以用專業的方式自行構建業務部署方案,並無法對方案進行測試,進而將對生產環境造成一定的風險。

自行解決或聯絡阿里雲提供協助。

彈性供應組的優勢

針對RunInstances大量建立ECS執行個體存在的問題,阿里雲提供了彈性供應組,解決了大大量建立ECS執行個體的情境下存在的問題。彈性供應組支援一鍵部署跨計費方式、跨可用性區域、跨執行個體規格類型系列的執行個體叢集。您可以通過彈性供應組穩定提供計算力,緩解搶佔式執行個體的回收機制帶來的不穩定因素,免去重複手動建立執行個體的繁瑣操作。本章節主要介紹彈性供應組的優勢。

優勢

說明

大量建立ECS執行個體的數量上限更高

彈性供應組支援單次建立最多1000台ECS執行個體。

支援設定多可用性區域、多執行個體規格、多種磁碟類型

彈性供應組支援您配置最多10種執行個體規格或可用性區域的組合、最多5種磁碟類型的選擇,協助您實現高可用的大量建立ECS執行個體。

樣本情境:

當您通過彈性供應組提供的均衡可用性區域分布策略建立ECS執行個體時,可以配置多個可用性區域和多個執行個體規格。按照策略的要求,多個可用性區域下,建立執行個體的數量應相對平均,但如果其中某個可用性區域無法完成建立,彈性供應組會嘗試將該可用性區域待建立的執行個體數量,轉移到其他可用性區域進行建立。

如果您指定了多種磁碟規格,彈性供應組將按照指定順序作為各磁碟類型的優先順序順序,當某一種磁碟不可用時,自動更換磁碟類型。

說明

當所有磁碟類型都不可用時,系統將會自動更換其它建立方式,不再嘗試該種建立方式。

支援多種建立執行個體的策略

針對隨用隨付執行個體和搶佔式執行個體,分別提供了以下建立策略:

  • 隨用隨付執行個體

    • 成本最佳化策略:從備選執行個體規格中選取成本最低的執行個體規格,建立執行個體。

    • 優先順序策略:按照備選執行個體規格設定的優先順序,依次嘗試建立執行個體。

  • 搶佔式執行個體

    • 成本最佳化策略:從備選執行個體規格中選取成本最低的執行個體規格,建立執行個體。

    • 可用性區域均衡分布策略:在備選的可用性區域之間,數量均勻的建立執行個體。

    • 容量最佳化分布策略:根據搶佔式執行個體的庫存情況,選擇最優的執行個體規格及可用性區域進行建立執行個體。

可提高搶佔式執行個體的可用性

搶佔式執行個體因其價格優勢使用量越來越高,但是其價格的不穩定性與系統回收的特性,造成管理搶佔式執行個體存在一定的難度。您可以通過彈性供應組,實現在低成本的前提下,提高搶佔式執行個體的可用性。具體方式如下:

  • 建立策略選擇預設的成本最佳化策略,每次的擴容策略將按照執行個體規格價格從低到高的順序嘗試建立。

  • 搶佔式執行個體對應的不同執行個體規格與可用性區域的資產庫存情況互相隔離。多個執行個體規格與多個可用性區域的配置組合,可以有效降低所有組合都無庫存的機率。

  • 建立彈性供應組時,配置多種備選的磁碟類型,保證建立執行個體的過程中,系統能夠自動選取合適的磁碟類型。

  • 配置SpotInstancePoolsToUseCount參數,指定搶佔式執行個體在多個最低價格的執行個體規格及可用性區域的組合中建立。避免某一種執行個體規格對應的執行個體回收,造成計算能力產生雪崩效應。

CreateAutoProvisioningGroup最佳實務

本章節提供CreateAutoProvisioningGroup介面對應的Java程式碼範例,使您快速瞭解該介面的使用方式。

  1. 安裝ECS Java SDK以及阿里雲核心庫。

    具體操作,請參見安裝Java SDK

  2. 編寫調用CreateAutoProvisioningGroup介面的Java代碼。

    程式碼範例如下:

    CreateAutoProvisioningGroupRequest request = new CreateAutoProvisioningGroupRequest();
    request.setRegionId(regionId);
    request.setLaunchConfigurationImageId(RequestHelper.IMAGE_ID);
    request.setLaunchConfigurationSecurityGroupId(securityGroupId);
    
    request.setTotalTargetCapacity(totalTargetCapacity);
    request.setPayAsYouGoTargetCapacity(payAsYouGoTargetCapacity);
    request.setSpotTargetCapacity(spotTargetCapacity);
    request.setLaunchConfigurationSystemDiskCategory("cloud_ssd");
    request.setLaunchConfigurationSystemDiskSize(40);
    request.setAutoProvisioningGroupType("instant");
    // 設定搶佔式執行個體的建立策略
    request.setSpotAllocationStrategy("lowest-price");
    request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount);
    // 設定隨用隨付執行個體的建立策略
    request.setPayAsYouGoAllocationStrategy("prioritized");
    request.setMaxSpotPrice(maxSpotPrice);
    // 多執行個體規格,多可用性區域配置資訊,最大支援10種
    request.setLaunchTemplateConfigs(launchTemplateConfigs);
    request.setClientToken(clientToken);
    CreateAutoProvisioningGroupResponse response = client.getAcsResponse(request);

    JSON傳回值樣本如下:

    {
        "autoProvisioningGroupId":"apg-****",
        "launchResults":[
            {
                "instanceIds":[
                    "i-****"
                ],
                "instanceType":"ecs.c5.large",
                "spotStrategy":"NoSpot",
                "zoneId":"cn-shanghai-b"
            },
           {
                "instanceIds":[],
                "instanceType":"ecs.c5.large",
                "spotStrategy":"NoSpot",
                "zoneId":"cn-shanghai-b",
                "errorCode" : "Invalid.Parameter",
                "errorMsg" : "Specific Parameter 'imageId' is not valid"
            }
        ],
        "requestId":"20DA1E9F-BF7F-4BE7-8204-E4DE58E4FC7B"
    }

    通過CreateAutoProvisioningGroup建立彈性供應組時,您只需要設定大量建立執行個體的相關配置項,無需關心建立過程,彈性供應組將以儘力交付的方式,完成建立。

    說明

    儘力交付的方式是指,當您配置的某些資源群組合無法建立執行個體時,將自動切換到其他可用的資源群組合繼續進行建立。該方式建立執行個體需要一定的時間,並且可能導致實際建立結果與建立策略存在一定的偏差。