Chame a operação CreateAutoProvisioningGroup para criar instâncias ECS no modelo 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 no modelo 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 para criação em lote, pule a seção Problemas ao criar instâncias com RunInstances.
A Alibaba Cloud oferece grupos de provisionamento automático para criar instâncias em grande escala. Ao chamar a operação CreateAutoProvisioningGroup, implante 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 grande volume de instâncias ECS. Consulte Comparação entre RunInstances e CreateAutoProvisioningGroup e Benefícios 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 mais 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, migre 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, selecione 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 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 da RunInstances na criação em lote
A operação RunInstances apresenta as limitações abaixo ao criar grande volume 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 múltiplas vezes em loop ou de forma concorrente. |
|
Baixa estabilidade do lote |
A RunInstances aceita apenas uma única zona e um tipo de instância, o que pode causar falhas na criação em lote devido a:
|
|
|
Política de criação muito simples |
A RunInstances suporta apenas uma zona e um tipo de instância. Implementar recuperação de desastres multizona ou criação com menor custo exige um plano de implantação personalizado, o que traz os seguintes problemas:
|
Resolva os problemas por conta própria ou entre em contato com a Alibaba Cloud para obter suporte. |
Benefícios dos grupos de provisionamento automático
Os grupos de provisionamento automático superam as limitações da RunInstances ao permitir 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ções manuais repetitivas.
|
Benefício |
Descrição |
|
Limite maior para lotes |
Até 1.000 instâncias por lote. |
|
Suporte a 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 especifique múltiplos tipos de disco, o grupo os utiliza seguindo a ordem de prioridade. Caso um tipo esteja 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 da 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 operação CreateAutoProvisioningGroup, defina os parâmetros de criação em lote e o grupo gerenciará o processo de criação com base no melhor esforço.
NotaA entrega com 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 divergir levemente da política especificada.