Chame a operação CreateAutoProvisioningGroup para criar instâncias ECS com pagamento conforme o uso em lote, abrangendo múltiplas zonas, tipos de instância e métodos de faturamento.
Contexto
A operação RunInstances é a API mais comum para criar instâncias ECS com pagamento conforme o uso. Uma única chamada à RunInstances cria até 100 instâncias. No entanto, usar a RunInstances para provisionar mais de 100 instâncias em ambiente de produção pode gerar gargalos. Consulte Problemas ao criar instâncias com RunInstances.
Se você já conhece os gargalos da RunInstances na criação em lote, pule a seção Problemas ao criar instâncias com RunInstances.
O Alibaba Cloud oferece grupos de provisionamento automático para a criação de instâncias em grande escala. Ao chamar a CreateAutoProvisioningGroup, você implanta um cluster de instâncias em diferentes métodos de faturamento, zonas e tipos de instância em uma única ação. Em comparação com a RunInstances, a CreateAutoProvisioningGroup atende melhor aos cenários que exigem um grande volume de instâncias ECS. Consulte Comparação entre RunInstances e CreateAutoProvisioningGroup e Vantagens dos grupos de provisionamento automático.
Comparação entre RunInstances e CreateAutoProvisioningGroup
A tabela a seguir compara as operações de API RunInstances e CreateAutoProvisioningGroup para ajudar na escolha do método adequado.
|
Item |
RunInstances |
CreateAutoProvisioningGroup |
|
Máximo de instâncias por lote |
100 |
1.000 (até 10.000 vCPUs) |
|
Método de entrega de capacidade |
Contagem de instâncias |
Número de instâncias, núcleos de vCPU, pesos de tipo de instância, entre outros. |
|
Suporte a múltiplas zonas |
Não |
Sim |
|
Suporte a múltiplos tipos de instância |
Não |
Sim |
|
Suporte a múltiplos tipos de disco |
Não |
Sim |
|
Políticas de criação de instâncias |
Não |
Sim. As seguintes políticas estão disponíveis:
|
|
Estabilidade da entrega |
Altamente afetada pelo estoque de recursos |
O uso de múltiplas zonas e tipos de instância reduz o impacto do estoque |
|
Formato de resposta da API |
Síncrono |
Síncrono |
Exemplos de cenários de migração da RunInstances para a CreateAutoProvisioningGroup:
Se você usava a
RunInstancespara criar instâncias de um único tipo em uma zona, mude para aCreateAutoProvisioningGroupe configure combinações de múltiplos tipos de instância e zonas.-
Caso usasse um plano de implantação manual com a
RunInstances, adote aCreateAutoProvisioningGrouppara implantar com um clique em várias zonas, tipos de instância e configurações de disco, aproveitando as políticas de criação integradas.Por exemplo, se antes você percorria diversos tipos de instância e zonas com a
RunInstancespara aumentar a taxa de sucesso na criação, aCreateAutoProvisioningGroupfaz isso automaticamente: basta configurar as combinações, selecionar uma política e o grupo criará as instâncias.
Os grupos de provisionamento automático podem criar até 1.000 instâncias por vez. Se você definir o parâmetro WeightedCapacity para os tipos de instância, a capacidade ponderada total máxima por criação será de 10.000.
Problemas ao criar instâncias em lote com RunInstances
A operação RunInstances apresenta as limitações abaixo ao provisionar um grande número de instâncias.
|
Problema |
Descrição |
Solução |
|
Capacidade de lote limitada |
Uma única chamada à RunInstances cria no máximo 100 instâncias. |
Execute a operação várias vezes em loop ou de forma concorrente. |
|
Baixa estabilidade do lote |
Como a RunInstances aceita apenas uma zona e um tipo de instância, a criação em lote pode falhar devido a:
|
|
|
Política de criação muito simples |
A RunInstances suporta somente uma zona e um tipo de instância. Implementar recuperação de desastres multizona ou criação pelo menor custo exige um plano de implantação personalizado, o que traz os seguintes problemas:
|
Resolva os problemas internamente ou entre em contato com o Alibaba Cloud para obter assistência. |
Vantagens dos grupos de provisionamento automático
Os grupos de provisionamento automático superam as limitações da RunInstances ao permitir a implantação com um clique em diferentes métodos de faturamento, zonas e tipos de instância. Eles garantem poder computacional estável, reduzem os riscos de devolução de instâncias spot e eliminam a necessidade de criação manual repetitiva.
|
Vantagem |
Descrição |
|
Limite maior por lote |
Até 1.000 instâncias por lote. |
|
Múltiplas zonas, tipos de instância e tipos de disco |
Configure até 10 combinações de tipo de instância ou zona e até 5 tipos de disco para garantir alta disponibilidade na criação em lote. Exemplo: Com a política de distribuição balanceada, as instâncias são distribuídas uniformemente entre as zonas. Se a criação falhar em uma zona, o grupo provisiona as instâncias pendentes nas demais zonas disponíveis. Ao especificar vários tipos de disco, o grupo os utiliza por ordem de prioridade. Caso um tipo fique indisponível, ele alterna automaticamente para o próximo. Nota
Se todos os tipos de disco especificados estiverem indisponíveis, o grupo mudará para outro método de criação. |
|
Diversas políticas de criação |
Políticas de criação disponíveis:
|
|
Maior disponibilidade de instâncias spot |
As instâncias spot oferecem preços baixos, mas estão sujeitas a flutuações de preço e devoluções. Os grupos de provisionamento automático aumentam a disponibilidade dessas instâncias mantendo os custos reduzidos:
|
Práticas recomendadas para CreateAutoProvisioningGroup
O exemplo de código Java a seguir demonstra como chamar a operação CreateAutoProvisioningGroup.
-
Instale o SDK do ECS para Java e a biblioteca principal do Alibaba Cloud.
Consulte Visão geral do SDK.
-
Chame a operação CreateAutoProvisioningGroup usando Java.
Exemplo de código:
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())); } }Exemplo de resposta 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" }Com a CreateAutoProvisioningGroup, você define os parâmetros de criação em lote e o grupo gerencia o processo de criação com base no melhor esforço.
NotaA entrega de melhor esforço significa que, se algumas combinações de recursos não conseguirem criar instâncias, o grupo alternará automaticamente para outras combinações disponíveis. Esse processo leva tempo e o resultado real pode diferir ligeiramente da política especificada.