Appelez l'opération CreateAutoProvisioningGroup pour créer par lots des instances ECS en paiement à l'utilisation dans plusieurs zones, types d'instance et méthodes de facturation.
Contexte
L'opération API RunInstances est la plus couramment utilisée pour créer des instances ECS en paiement à l'utilisation. Un seul appel à RunInstances permet de créer jusqu'à 100 instances. Toutefois, l'utilisation de RunInstances pour créer plus de 100 instances dans un environnement de production peut engendrer des goulots d'étranglement. Consultez la section Problèmes liés à la création d'instances avec RunInstances.
Si vous connaissez déjà les limitations de RunInstances pour la création par lots, ignorez la section Problèmes liés à la création d'instances avec RunInstances.
Alibaba Cloud propose des groupes de provisionnement automatique pour la création d'instances à grande échelle. Appelez l'opération CreateAutoProvisioningGroup afin de déployer un cluster d'instances en une seule action, couvrant différentes méthodes de facturation, zones et types d'instance. Par rapport à RunInstances, CreateAutoProvisioningGroup est mieux adapté aux scénarios nécessitant un grand nombre d'instances ECS. Consultez les sections Comparaison entre RunInstances et CreateAutoProvisioningGroup et Avantages des groupes de provisionnement automatique.
Comparaison entre RunInstances et CreateAutoProvisioningGroup
Le tableau suivant compare les opérations API RunInstances et CreateAutoProvisioningGroup pour vous aider à choisir la méthode appropriée.
|
Élément |
RunInstances |
CreateAutoProvisioningGroup |
|
Nombre maximal d'instances par lot |
100 |
1 000 (jusqu'à 10 000 vCPU) |
|
Méthode de fourniture de capacité |
Nombre d'instances |
Nombre d'instances, cœurs vCPU, pondérations des types d'instance, etc. |
|
Prise en charge multi-zones |
Non |
Oui |
|
Prise en charge de plusieurs types d'instance |
Non |
Oui |
|
Prise en charge de plusieurs types de disque |
Non |
Oui |
|
Politiques de création d'instances |
Non |
Oui. Les politiques suivantes sont disponibles :
|
|
Stabilité de la fourniture |
Fortement affectée par l'inventaire des ressources |
L'utilisation de plusieurs zones et types d'instance réduit l'impact de l'inventaire |
|
Format de réponse de l'API |
Synchrone |
Synchrone |
Exemples de scénarios de migration de RunInstances vers CreateAutoProvisioningGroup :
Si vous utilisiez
RunInstancespour créer des instances d'un seul type dans une seule zone, passez àCreateAutoProvisioningGroupet configurez plusieurs combinaisons de types d'instance et de zones.-
Si vous utilisiez un plan de déploiement manuel avec
RunInstances, adoptezCreateAutoProvisioningGrouppour un déploiement en un clic across les zones, les types d'instance et les configurations de disque, grâce aux politiques de création intégrées.Par exemple, si vous parcouriez précédemment plusieurs types d'instance et zones avec
RunInstancespour améliorer les taux de réussite de création,CreateAutoProvisioningGroupgère cette opération automatiquement : configurez les combinaisons, sélectionnez une politique et le groupe crée les instances.
Les groupes de provisionnement automatique peuvent créer jusqu'à 1 000 instances à la fois. Si vous spécifiez WeightedCapacity pour les types d'instance, la capacité pondérée totale maximale par création est de 10 000.
Problèmes liés à RunInstances pour la création par lots
L'opération RunInstances présente les limitations suivantes lors de la création d'un grand nombre d'instances.
|
Problème |
Description |
Solution |
|
Capacité de lot limitée |
Un seul appel à RunInstances permet de créer jusqu'à 100 instances. |
Appelez l'opération plusieurs fois dans une boucle ou simultanément. |
|
Stabilité insuffisante des lots |
RunInstances ne prend en charge qu'une seule zone et un seul type d'instance, ce qui peut entraîner l'échec de la création par lots pour les raisons suivantes :
|
|
|
Politique de création trop simple |
RunInstances ne prend en charge qu'une seule zone et un seul type d'instance. La reprise après sinistre multi-zones ou la création au coût le plus bas nécessitent un plan de déploiement personnalisé, qui présente les problèmes suivants :
|
Résolvez les problèmes vous-même ou contactez Alibaba Cloud pour obtenir de l'aide. |
Avantages des groupes de provisionnement automatique
Les groupes de provisionnement automatique pallient les limitations de RunInstances en permettant un déploiement en un clic across les méthodes de facturation, les zones et les types d'instance. Ils assurent une puissance de calcul stable, atténuent les risques de récupération des instances Spot et éliminent les créations manuelles répétitives.
|
Avantage |
Description |
|
Limite de lot plus élevée |
Jusqu'à 1 000 instances par lot. |
|
Plusieurs zones, types d'instance et types de disque |
Configurez jusqu'à 10 combinaisons de types d'instance ou de zones et jusqu'à 5 types de disque pour une création par lots haute disponibilité. Exemple : Avec la politique de distribution équilibrée, les instances sont réparties uniformément dans les zones. Si la création échoue dans une zone, le groupe crée les instances en attente dans d'autres zones disponibles. Lorsque plusieurs types de disque sont spécifiés, le groupe les utilise par ordre de priorité. Si un type n'est pas disponible, il bascule automatiquement vers le suivant. Remarque
Si tous les types de disque spécifiés ne sont pas disponibles, le groupe bascule vers une autre méthode de création. |
|
Plusieurs politiques de création |
Politiques de création disponibles :
|
|
Disponibilité améliorée des instances Spot |
Les instances Spot offrent des prix bas, mais sont soumises aux fluctuations de prix et aux récupérations. Les groupes de provisionnement automatique améliorent la disponibilité des instances Spot tout en maintenant des coûts faibles :
|
Bonnes pratiques pour CreateAutoProvisioningGroup
L'exemple de code Java suivant montre comment appeler l'opération CreateAutoProvisioningGroup.
-
Installez le SDK ECS pour Java et la bibliothèque principale Alibaba Cloud.
Consultez la section Vue d'ensemble du SDK.
-
Appelez l'opération CreateAutoProvisioningGroup avec Java.
Exemple de code :
import com.aliyun.ecs20140526.Client; import com.aliyun.ecs20140526.models.CreateAutoProvisioningGroupRequest; import com.aliyun.ecs20140526.models.CreateAutoProvisioningGroupResponse; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; import com.google.gson.Gson; public class Test { public static void main(String[] args_) throws Exception { Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) .setEndpoint("ecs.cn-heyuan.aliyuncs.com"); Client client = new Client(config); CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchTemplateConfig launchTemplateConfig = new CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchTemplateConfig() .setVSwitchId("vsw-f8zadqudz*********") .setInstanceType("ecs.s6-c1m1.small") .setWeightedCapacity(1.0); CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchConfiguration launchConfiguration = new CreateAutoProvisioningGroupRequest.CreateAutoProvisioningGroupRequestLaunchConfiguration() .setSecurityGroupId("sg-f8zf6vg51*********") .setImageId("aliyun_3_x64_20G_alibase_20250629.vhd") .setSystemDiskCategory("cloud_ssd") .setSystemDiskSize(40); CreateAutoProvisioningGroupRequest createAutoProvisioningGroupRequest = new CreateAutoProvisioningGroupRequest() .setAutoProvisioningGroupType("instant") .setRegionId("cn-heyuan") // Set the creation policy for spot instances. .setSpotAllocationStrategy("lowest-price") // Set the creation policy for pay-as-you-go instances. .setPayAsYouGoAllocationStrategy("prioritized") .setTotalTargetCapacity("5") .setPayAsYouGoTargetCapacity("3") .setSpotTargetCapacity("2") .setLaunchConfiguration(launchConfiguration) .setLaunchTemplateConfig(java.util.Arrays.asList( launchTemplateConfig )) .setClientToken("0c593ea1-3bea******************"); RuntimeOptions runtime = new RuntimeOptions(); CreateAutoProvisioningGroupResponse response = client.createAutoProvisioningGroupWithOptions(createAutoProvisioningGroupRequest, runtime); System.out.println(new Gson().toJson(response.getBody())); } }Exemple de réponse JSON :
{ "autoProvisioningGroupId": "apg-**************", "launchResults": { "launchResult": [ { "amount": 0, "errorCode": "NoInstanceStock", "errorMsg": "The instanceTypes are out of usage", "instanceType": "ecs.s6-c1m1.small", "spotStrategy": "NoSpot", "zoneId": "cn-heyuan-b" }, { "amount": 2, "instanceIds": { "instanceId": [ "i-f8z8**************icn5", "i-f8z8**************icn6" ] }, "instanceType": "ecs.s6-c1m1.small", "spotStrategy": "SpotAsPriceGo", "zoneId": "cn-heyuan-b" } ] }, "requestId": "CDA21119-7CFD-5B40-A2D0-******8" }Avec CreateAutoProvisioningGroup, vous configurez les paramètres de création par lots et le groupe gère le processus de création au mieux.
RemarqueLa fourniture « au mieux » signifie que si certaines combinaisons de ressources ne permettent pas de créer des instances, le groupe bascule automatiquement vers d'autres combinaisons disponibles. Ce processus prend du temps et le résultat réel peut différer légèrement de la politique spécifiée.