Verfügbarkeitszonenübergreifendes Erstellen eines Azure Batch-Pools

Azure-Regionen, die Verfügbarkeitszonen unterstützen, verfügen über mindestens drei getrennte Zonen mit jeweils eigener, unabhängiger Stromversorgung, eigenem Netzwerk und eigenem Kühlsystem. Wenn Sie mithilfe der VM-Konfiguration einen Azure Batch-Pool erstellen, haben Sie die Möglichkeit, den Batch-Pool verfügbarkeitszonenübergreifend bereitzustellen. Wenn Sie Ihren Pool mit dieser zonalen Richtlinie erstellen, können Sie Ihre Batch-Computeknoten besser vor Ausfällen auf Azure-Rechenzentrumsebene schützen.

Sie können beispielsweise Ihren Pool mit einer Zonalrichtlinie in einer Azure Region erstellen, die drei Verfügbarkeitszonen unterstützt. Wenn ein Azure Rechenzentrum in einer Verfügbarkeitszone einen Infrastrukturfehler aufweist, weist Ihr Batchpool weiterhin fehlerfreie Knoten in den anderen beiden Verfügbarkeitszonen auf, sodass der Pool für die Vorgangsplanung verfügbar bleibt.

Regionale Unterstützung und andere Anforderungen

Batch bietet die gleiche Unterstützung von Verfügbarkeitszonen wie Azure. Um die zonale Option verwenden zu können, muss Ihr Pool in einer unterstützten Azure-Region erstellt werden.

Damit Ihr Batch-Pool verfügbarkeitszonenübergreifend zugeordnet wird, muss die Azure-Region, in der der Pool erstellt wird, die angeforderte VM-SKU in mehreren Zonen unterstützen. Zur Überprüfung dieser Anforderung können Sie die API zum Auflisten von Ressourcen-SKUs aufrufen und sich das Feld locationInfo von resourceSku ansehen. Achten Sie darauf, dass für die angeforderte VM-SKU mehrere Zonen unterstützt werden.

Vergewissern Sie sich bei Batch-Konten im Modus „Benutzerabonnement“, dass für das Abonnement, in dem Sie Ihren Pool erstellen, keine Zonenangebotseinschränkung für die angeforderte VM-SKU gilt. Um dies zu bestätigen, rufen Sie die Resource-SKUs-Listen-API auf und überprüfen Sie die ResourceSkuRestrictions. Ist eine Zoneneinschränkung vorhanden, können Sie ein Supportticket erstellen, um die Zoneneinschränkung zu entfernen.

Beachten Sie außerdem, dass Sie keinen Pool mit einer zonalen Richtlinie erstellen können, wenn die Kommunikation zwischen Knoten aktiviert ist und eine VM-SKU mit InfiniBand-Unterstützung verwendet wird.

Verfügbarkeitszonenübergreifendes Erstellen eines Batch-Pools

In den folgenden Beispielen wird die verfügbarkeitszonenübergreifende Erstellung eines Batch-Pools veranschaulicht.

Hinweis

Wenn Sie Ihren Pool mit einer Zonenrichtlinie erstellen, versucht der Batchdienst, Ihren Pool auf alle Verfügbarkeitszonen in der ausgewählten Region zu verteilen; Sie können keine bestimmte Verteilung auf die Zonen angeben.

.NET SDK für den Batchverwaltungsclient

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;

Batch-REST-API

REST-API-URL

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

Anforderungstext

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

Nächste Schritte