Condividi tramite


Creare un pool di Azure Batch tra zone di disponibilità

Le aree di Azure che supportano zone di disponibilità hanno almeno tre zone separate, ognuna con il proprio sistema di alimentazione, rete e raffreddamento indipendente. Quando si crea un pool di Azure Batch usando La configurazione della macchina virtuale, è possibile scegliere di effettuare il provisioning del pool di Batch in zone di disponibilità. La creazione del pool con questo criterio di zona consente di proteggere i nodi di calcolo di Batch da errori a livello di data center di Azure.

Ad esempio, è possibile creare il pool con criteri di zona in un'area di Azure che supporta tre zone di disponibilità. Se un data center di Azure in una zona di disponibilità presenta un errore di infrastruttura, il pool di Batch avrà ancora nodi integri negli altri due zone di disponibilità, quindi il pool rimarrà disponibile per la pianificazione delle attività.

Supporto regionale e altri requisiti

Batch mantiene la parità con Azure per supportare zone di disponibilità. Per usare l'opzione zonale, il pool deve essere creato in un'area di Azure supportata.

Affinché il pool di Batch venga allocato tra le zone di disponibilità, l'area di Azure in cui viene creato il pool deve supportare lo SKU della macchina virtuale richiesto in più zone. È possibile convalidare questa operazione chiamando l'API Elenco SKU di risorse e controllare il campo locationInfo di resourceSku. Assicurarsi che più zone siano supportate per lo SKU della macchina virtuale richiesto.

Per gli account Batch in modalità sottoscrizione utente, assicurarsi che la sottoscrizione in cui si sta creando il pool non abbia una restrizione dell'offerta di zona per lo SKU di macchina virtuale richiesto. Per confermare questa operazione, chiamare l'API Elenco SKU di risorse e controllare ResourceSkuRestrictions. Se esiste una restrizione della zona, è possibile inviare un ticket di supporto per rimuovere la restrizione della zona.

Si noti anche che non è possibile creare un pool con criteri di zona se è abilitata la comunicazione tra nodi e usa uno SKU di macchina virtuale che supporta InfiniBand.

Creare un pool di Batch tra zone di disponibilità

Gli esempi seguenti illustrano come creare un pool di Batch in zone di disponibilità.

Nota

Quando si crea il pool con criteri di zona, il servizio Batch tenterà di allocare il pool in tutte le zone di disponibilità nell'area selezionata. Non è possibile specificare una particolare allocazione tra le zone.

.NET SDK del client di gestione batch

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 Batch REST

URL DELL'API REST

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

Testo della richiesta

"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
}

Passaggi successivi