Criar um pool do Lote do Azure entre Zonas de Disponibilidade

As regiões do Azure que oferecem suporte às Zonas de Disponibilidade têm um mínimo de três zonas separadas, cada um com suas próprias e independentes fonte de energia, rede e resfriamento. Ao criar um pool do Lote do Azure usando a Configuração de Máquina Virtual, você pode optar por provisionar seu pool do Lote do Azure entre Zonas de Disponibilidade. A criação do pool com essa política zonal ajuda a proteger os nós de computação do Azure Batch contra falhas em nível de datacenter do Azure.

Por exemplo, você pode criar seu pool com uma política zonal em uma região de Azure que dá suporte a três Zonas de Disponibilidade. Se um datacenter do Azure em uma Zona de Disponibilidade tiver uma falha de infraestrutura, o pool do Batch ainda terá nós saudáveis nas outras duas Zonas de Disponibilidade, portanto o pool permanecerá disponível para o agendamento de tarefas.

Suporte regional e outros requisitos

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

Para que o pool do Lote seja alocado entre as 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 de Lista de SKUs de Recursos e marcar o campo locationInfo de resourceSku. Verifique se há suporte para mais de uma zona para a SKU de VM solicitada.

Para as contas do Lote no modo de assinatura do usuário, verifique se a assinatura na qual você está criando o pool não tem uma restrição de oferta de zona no SKU de VM solicitado. Para confirmar isso, chame a API de listagem de SKUs de recursos e verifique o ResourceSkuRestrictions. Se houver uma restrição de zona, você poderá enviar um tíquete de suporte para removê-la.

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

Criar um pool do Lote em Zonas de Disponibilidade

Os exemplos a seguir mostram como criar um pool do Lote em Zonas de Disponibilidade.

Observação

Ao criar seu pool com uma política zonal, o serviço Batch tenta alocar seu pool em todas as Zonas de Disponibilidade da região selecionada; você não pode especificar uma distribuição específica entre as zonas.

SDK .NET do Cliente de Gerenciamento de Lotes

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

URL DA API REST

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

Corpo da solicitação

"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óximas etapas