背景資訊
在業務需要使用按量付費ECS執行個體的場景下,RunInstances是使用最頻繁的API。RunInstances擁有一次調用能夠最多建立100台ECS執行個體的能力,但是在實際的生産環境中,如果需要超過100台的大批量建立ECS執行個體場景,直接使用RunInstances會存在一定的技術瓶頸。更多資訊,請參見本文RunInstances建立執行個體時存在的問題章節。
說明 如果您已了解RunInstances批量建立執行個體過程中存在的技術瓶頸,可以跳過該章節。
為了解決大批量建立ECS執行個體的需求場景,阿裡雲提供了彈性供應組,您可以通過CreateAutoProvisioningGroup建立彈性供應組,一鍵式的部署跨計費方式、跨可用區、跨執行個體規格族的執行個體叢集。相較于RunInstances,CreateAutoProvisioningGroup更适合大批量建立ECS執行個體的業務場景。兩者的功能對比與優勢分析,請參見RunInstances與CreateAutoProvisioningGroup功能對比以及彈性供應組的優勢。
RunInstances與CreateAutoProvisioningGroup功能對比
本章節對比
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執行個體的過程中,可能因為執行個體規格的庫存不足、停止售賣或使用限制等問題。引發以下情況:
|
|
建立政策過于單一 | RunInstances僅支援設定單可用區、單執行個體規格。如果您的業務需要多可用區部署實作異地容災、需要按照最低成本建立ECS執行個體等,則需要您自行建構業務部署方案,以保障執行個體的成功部署。自行建構的業務部署方案存在以下問題:
| 自行解決或聯系阿裡雲提供幫助。 |
彈性供應組的優勢
針對RunInstances批量建立ECS執行個體存在的問題,阿裡雲提供了彈性供應組,解決了大批量建立ECS執行個體的場景下存在的問題。彈性供應組支援一鍵部署跨計費方式、跨可用區、跨執行個體規格族的執行個體叢集。您可以通過彈性供應組穩定提供計算力,緩解搶占式執行個體的回收機制帶來的不穩定因素,免去重複手動建立執行個體的繁瑣操作。本章節主要介紹彈性供應組的優勢。
優勢 | |
批量建立ECS執行個體的數量上限更高 | 彈性供應組支援單次建立最多1000台ECS執行個體。 |
支援設定多可用區、多執行個體規格、多種磁盤類型 | 彈性供應組支援您配置最多10種執行個體規格或可用區的組合、最多5種磁盤類型的選擇,幫助您實作高可用的批量建立ECS執行個體。 當您通過彈性供應組提供的均衡可用區分布政策建立ECS執行個體時,可以配置多個可用區和多個執行個體規格。按照政策的要求,多個可用區下,建立執行個體的數量應相對平均,但如果其中某個可用區無法完成建立,彈性供應組會嘗試将該可用區待建立的執行個體數量,轉移到其他可用區進行建立。 如果您指定了多種磁盤規格,彈性供應組将按照指定順序作為各磁盤類型的優先級順序,當某一種磁盤不可用時,自動更換磁盤類型。 說明 當所有磁盤類型都不可用時,系統将會自動更換其它建立方式,不再嘗試該種建立方式。 |
支援多種建立執行個體的政策 | 針對按量付費執行個體和搶占式執行個體,分别提供了以下建立政策: |
可提高搶占式執行個體的可用性 | 搶占式執行個體因其價格優勢使用量越來越高,但是其價格的不穩定性與系統回收的特性,造成管理搶占式執行個體存在一定的難度。您可以通過彈性供應組,實作在低成本的前提下,提高搶占式執行個體的可用性。具體方式如下:
|
CreateAutoProvisioningGroup最佳實踐
本章節提供CreateAutoProvisioningGroup接口對應的Java代碼示例,使您快速了解該接口的使用方式。
- 安裝ECS Java SDK以及阿裡雲核心庫。具體操作,請參見 安裝Java SDK
- 編寫調用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建立彈性供應組時,您隻需要設定批量建立執行個體的相關配置項,無需關心建立過程,彈性供應組将以盡力傳遞的方式,完成建立。
說明 盡力傳遞的方式是指,當您配置的某些資源組合無法建立執行個體時,将自動切換到其他可用的資源組合繼續進行建立。該方式建立執行個體需要一定的時間,并且可能導緻實際建立結果與建立政策存在一定的偏差。