使用彈性供應(yīng)組API批量創(chuàng)建ECS實(shí)例
在需要大量創(chuàng)建按量付費(fèi)實(shí)例的情況下,您可以通過調(diào)用API接口完成創(chuàng)建操作更為高效。本文主要介紹如何通過編寫調(diào)用CreateAutoProvisioningGroup API接口的Java代碼批量創(chuàng)建ECS按量付費(fèi)實(shí)例,以及對比RunInstances和CreateAutoProvisioningGroup接口的功能、優(yōu)劣勢。
背景信息
在業(yè)務(wù)需要使用按量付費(fèi)ECS實(shí)例的場景下,RunInstances
是使用最頻繁的API。RunInstances
擁有一次調(diào)用能夠最多創(chuàng)建100臺ECS實(shí)例的能力,但是在實(shí)際的生產(chǎn)環(huán)境中,如果需要超過100臺的大批量創(chuàng)建ECS實(shí)例場景,直接使用RunInstances
會(huì)存在一定的技術(shù)瓶頸。更多信息,請參見RunInstances創(chuàng)建實(shí)例時(shí)存在的問題。
如果您已了解RunInstances
批量創(chuàng)建實(shí)例過程中存在的技術(shù)瓶頸,可以跳過該章節(jié)。
為了解決大批量創(chuàng)建ECS實(shí)例的需求場景,阿里云提供了彈性供應(yīng)組,您可以通過CreateAutoProvisioningGroup
創(chuàng)建彈性供應(yīng)組,一鍵式地部署跨計(jì)費(fèi)方式、跨可用區(qū)、跨實(shí)例規(guī)格族的實(shí)例集群。相較于RunInstances
,CreateAutoProvisioningGroup
更適合大批量創(chuàng)建ECS實(shí)例的業(yè)務(wù)場景。兩者的功能對比與優(yōu)勢分析,請參見RunInstances與CreateAutoProvisioningGroup功能對比以及彈性供應(yīng)組的優(yōu)勢。
RunInstances與CreateAutoProvisioningGroup功能對比
本章節(jié)對比RunInstances與CreateAutoProvisioningGroup兩接口的部分功能,使您可以快速了解兩者的差異,選擇合適的創(chuàng)建實(shí)例方式。
對比項(xiàng) | RunInstances | CreateAutoProvisioningGroup |
單次批量創(chuàng)建實(shí)例的數(shù)量上限 | 100臺 | 1000臺(vCPU上限為10000) |
容量交付方式 | 實(shí)例數(shù)量 | 實(shí)例數(shù)量、vCPU核數(shù)、實(shí)例規(guī)格的權(quán)重等 |
是否支持多可用區(qū) | 否 | 是 |
是否支持多個(gè)實(shí)例規(guī)格 | 否 | 是 |
是否支持多種磁盤規(guī)格 | 否 | 是 |
是否提供了創(chuàng)建實(shí)例的策略 | 否 | 是。提供了如下策略:
|
交付穩(wěn)定性 | 受資源庫存影響較大 | 多可用區(qū)、多實(shí)例規(guī)格的配置組合有效降低了資源庫存造成的影響 |
API響應(yīng)格式 | 同步返回創(chuàng)建結(jié)果 | 同步返回創(chuàng)建結(jié)果 |
創(chuàng)建實(shí)例的方式由RunInstances
更換為CreateAutoProvisioningGroup
的部分示例場景:
如果您之前使用
RunInstances
在單可用區(qū)、單實(shí)例規(guī)格的配置下批量創(chuàng)建實(shí)例,更換為CreateAutoProvisioningGroup
后,您只需配置一組實(shí)例規(guī)格與可用區(qū)的組合,即可實(shí)現(xiàn)批量創(chuàng)建實(shí)例。如果您之前使用
RunInstances
時(shí)手動(dòng)設(shè)置了業(yè)務(wù)部署方案,更換為CreateAutoProvisioningGroup
后,將由系統(tǒng)為您提供一鍵式的多可用區(qū)、多實(shí)例規(guī)格、多磁盤配置的部署能力,并且系統(tǒng)提供了多種創(chuàng)建實(shí)例的策略供您選擇。例如:您之前手動(dòng)設(shè)置了遍歷多個(gè)實(shí)例規(guī)格及可用區(qū)的方案進(jìn)行
RunInstances
調(diào)用,以提高實(shí)例創(chuàng)建的成功率。更換為CreateAutoProvisioningGroup
后,您只需要通過參數(shù)配置多個(gè)實(shí)例規(guī)格及可用區(qū)的組合,選擇合適的創(chuàng)建策略,系統(tǒng)將自動(dòng)完成批量創(chuàng)建實(shí)例的操作。
彈性供應(yīng)組的創(chuàng)建策略存在使用限制,單次最大可創(chuàng)建1000臺實(shí)例,如果指定了實(shí)例規(guī)格的權(quán)重(WeightedCapacity
),則單次創(chuàng)建的最大加權(quán)容量為10000。
RunInstances創(chuàng)建實(shí)例時(shí)存在的問題
基于RunInstances
功能的限制,您在大批量創(chuàng)建實(shí)例時(shí),可能遇到下表所示的問題。
問題 | 說明 | 解決方案 |
批量創(chuàng)建的能力有限 | 調(diào)用一次RunInstances最多可以創(chuàng)建100臺ECS實(shí)例。 | 當(dāng)您需要?jiǎng)?chuàng)建大于100臺ECS實(shí)例時(shí),需要通過循環(huán)或并發(fā)的方式多次調(diào)用該接口,以完成業(yè)務(wù)需求。 |
批量創(chuàng)建的穩(wěn)定性不足 | 調(diào)用RunInstances只支持設(shè)置單可用區(qū)、單實(shí)例規(guī)格。因此,在批量創(chuàng)建ECS實(shí)例的過程中,可能會(huì)出現(xiàn)實(shí)例規(guī)格的庫存不足、停止售賣或使用限制等問題。引發(fā)以下情況:
|
|
創(chuàng)建策略過于單一 | RunInstances僅支持設(shè)置單可用區(qū)、單實(shí)例規(guī)格。如果您的業(yè)務(wù)需要多可用區(qū)部署實(shí)現(xiàn)異地容災(zāi),或者需要按照最低成本創(chuàng)建ECS實(shí)例,則需要您自行構(gòu)建業(yè)務(wù)部署方案,以保障實(shí)例的成功部署。自行構(gòu)建的業(yè)務(wù)部署方案存在以下問題:
| 自行解決或聯(lián)系阿里云提供幫助。 |
彈性供應(yīng)組的優(yōu)勢
針對RunInstances
批量創(chuàng)建ECS實(shí)例存在的問題,阿里云提供了彈性供應(yīng)組,解決了大批量創(chuàng)建ECS實(shí)例的場景下存在的問題。彈性供應(yīng)組支持一鍵部署跨計(jì)費(fèi)方式、跨可用區(qū)、跨實(shí)例規(guī)格族的實(shí)例集群。您可以通過彈性供應(yīng)組穩(wěn)定提供計(jì)算力,緩解搶占式實(shí)例的回收機(jī)制帶來的不穩(wěn)定因素,免去重復(fù)手動(dòng)創(chuàng)建實(shí)例的繁瑣操作。本章節(jié)主要介紹彈性供應(yīng)組的優(yōu)勢。
優(yōu)勢 | 說明 |
批量創(chuàng)建ECS實(shí)例的數(shù)量上限更高 | 彈性供應(yīng)組支持單次創(chuàng)建最多1000臺ECS實(shí)例。 |
支持設(shè)置多可用區(qū)、多實(shí)例規(guī)格、多種磁盤類型 | 彈性供應(yīng)組支持您配置最多10種實(shí)例規(guī)格或可用區(qū)的組合、最多5種磁盤類型的選擇,幫助您實(shí)現(xiàn)高可用的批量創(chuàng)建ECS實(shí)例。 示例場景: 當(dāng)您通過彈性供應(yīng)組提供的均衡可用區(qū)分布策略創(chuàng)建ECS實(shí)例時(shí),可以配置多個(gè)可用區(qū)和多個(gè)實(shí)例規(guī)格。按照策略的要求,多個(gè)可用區(qū)下,創(chuàng)建實(shí)例的數(shù)量應(yīng)相對平均,但如果其中某個(gè)可用區(qū)無法完成創(chuàng)建,彈性供應(yīng)組會(huì)嘗試將該可用區(qū)待創(chuàng)建的實(shí)例數(shù)量,轉(zhuǎn)移到其他可用區(qū)進(jìn)行創(chuàng)建。 如果您指定了多種磁盤規(guī)格,彈性供應(yīng)組將按照指定順序作為各磁盤類型的優(yōu)先級順序,當(dāng)某一種磁盤不可用時(shí),自動(dòng)更換磁盤類型。 說明 當(dāng)所有磁盤類型都不可用時(shí),系統(tǒng)將會(huì)自動(dòng)更換其它創(chuàng)建方式,不再嘗試該種創(chuàng)建方式。 |
支持多種創(chuàng)建實(shí)例的策略 | 針對按量付費(fèi)實(shí)例和搶占式實(shí)例,分別提供了以下創(chuàng)建策略:
|
可提高搶占式實(shí)例的可用性 | 搶占式實(shí)例因其價(jià)格優(yōu)勢使用量越來越高,但是其價(jià)格的不穩(wěn)定性與系統(tǒng)回收的特性,造成管理搶占式實(shí)例存在一定的難度。您可以通過彈性供應(yīng)組,實(shí)現(xiàn)在低成本的前提下,提高搶占式實(shí)例的可用性。具體方式如下:
|
CreateAutoProvisioningGroup最佳實(shí)踐
本章節(jié)提供CreateAutoProvisioningGroup接口對應(yīng)的Java代碼示例,使您快速了解該接口的使用方式。
安裝ECS Java SDK以及阿里云核心庫。
具體操作,請參見安裝Java SDK。
編寫調(diào)用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"); // 設(shè)置搶占式實(shí)例的創(chuàng)建策略 request.setSpotAllocationStrategy("lowest-price"); request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount); // 設(shè)置按量付費(fèi)實(shí)例的創(chuàng)建策略 request.setPayAsYouGoAllocationStrategy("prioritized"); request.setMaxSpotPrice(maxSpotPrice); // 多實(shí)例規(guī)格,多可用區(qū)配置信息,最大支持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創(chuàng)建彈性供應(yīng)組時(shí),您只需要設(shè)置批量創(chuàng)建實(shí)例的相關(guān)配置項(xiàng),無需關(guān)心創(chuàng)建過程,彈性供應(yīng)組將以盡力交付的方式,完成創(chuàng)建。
說明盡力交付的方式是指,當(dāng)您配置的某些資源組合無法創(chuàng)建實(shí)例時(shí),將自動(dòng)切換到其他可用的資源組合繼續(xù)進(jìn)行創(chuàng)建。該方式創(chuàng)建實(shí)例需要一定的時(shí)間,并且可能導(dǎo)致實(shí)際創(chuàng)建結(jié)果與創(chuàng)建策略存在一定的偏差。