Partilhar via


Criar um pool de lotes do Azure em zonas de disponibilidade

As regiões do Azure que suportam Zonas de Disponibilidade têm um mínimo de três zonas separadas, cada uma com a sua própria fonte de alimentação, rede e sistema de arrefecimento independentes. Ao criar um pool de Lotes do Azure usando a Configuração de Máquina Virtual, você pode optar por provisionar seu pool de Lotes em Zonas de Disponibilidade. Criar seu pool com essa política zonal ajuda a proteger seus nós de computação em lote contra falhas no nível do datacenter do Azure.

Por exemplo, você pode criar seu pool com política zonal em uma região do Azure que ofereça suporte a três zonas de disponibilidade. Se um datacenter do Azure em uma zona de disponibilidade tiver uma falha de infraestrutura, seu pool de lotes ainda terá nós íntegros nas outras duas zonas de disponibilidade, portanto, o pool permanecerá disponível para agendamento de tarefas.

Apoio regional e outros requisitos

O Batch mantém a paridade com o Azure no suporte a Zonas de Disponibilidade. Para usar a opção zonal, seu pool deve ser criado em uma região do Azure com suporte.

Para que seu pool de lotes seja alocado entre zonas de disponibilidade, a região do Azure na qual o pool é criado deve dar suporte à SKU de VM solicitada em mais de uma zona. Você pode validar isso chamando a API Resource Skus List e verifique o campo locationInfo de resourceSku. Certifique-se de que mais de uma zona é suportada para a SKU de VM solicitada.

Para contas em lote do modo de assinatura de usuário, verifique se a assinatura na qual você está criando seu pool não tem uma restrição de oferta de zona na SKU de VM solicitada. Para confirmar isso, chame a API Resource Skus List e verifique ResourceSkuRestrictions. Se existir uma restrição de zona, você pode enviar um tíquete de suporte para remover a restrição de zona.

Observe também que você não pode criar um pool com uma política zonal se ele tiver a comunicação entre nós habilitada e usar uma SKU de VM que ofereça suporte a InfiniBand.

Criar um pool de lotes em zonas de disponibilidade

Os exemplos a seguir mostram como criar um pool de lotes em zonas de disponibilidade.

Nota

Ao criar seu pool com uma política zonal, o serviço de lote tentará alocar seu pool em todas as zonas de disponibilidade na região selecionada; Não é possível especificar uma alocação específica entre as zonas.

SDK .NET do Cliente de Gerenciamento de Lote

var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);

var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");

BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);

var poolName = "pool2";
var imageReference = new BatchImageReference()
{
    Publisher = "canonical",
    Offer = "0001-com-ubuntu-server-jammy",
    Sku = "22_04-lts",
    Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";

var batchAccountPoolData = new BatchAccountPoolData()
{
    VmSize = "Standard_DS1_v2",
    DeploymentConfiguration = new BatchDeploymentConfiguration()
    {
        VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
        {
            NodePlacementPolicy = BatchNodePlacementPolicyType.Zonal,
        },
    },
    ScaleSettings = new BatchAccountPoolScaleSettings()
    {
        FixedScale = new BatchAccountFixedScaleSettings()
        {
            TargetDedicatedNodes = 5,
            ResizeTimeout = TimeSpan.FromMinutes(15),
        }
    },
    
};

ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
    WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;

API REST em lote

REST API URL

POST {batchURL}/pools?api-version=2021-01-01.13.0
client-request-id: 00000000-0000-0000-0000-000000000000

Corpo do pedido

"pool": {
    "id": "pool2",
    "vmSize": "standard_a1",
    "virtualMachineConfiguration": {
        "imageReference": {
            "publisher": "Canonical",
            "offer": "UbuntuServer",
            "sku": "20.04-lts"
        },
        "nodePlacementConfiguration": {
            "policy": "Zonal"
        }
        "nodeAgentSKUId": "batch.node.ubuntu 20.04"
    },
    "resizeTimeout": "PT15M",
    "targetDedicatedNodes": 5,
    "targetLowPriorityNodes": 0,
    "maxTasksPerNode": 3,
    "enableAutoScale": false,
    "enableInterNodeCommunication": false
}

Próximos passos