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.

So können Sie beispielsweise Ihren Pool mit zonaler Richtlinie in einer Azure-Region erstellen, die drei Verfügbarkeitszonen unterstützt. Sollte es in einer der Verfügbarkeitszonen bei einem Azure-Rechenzentrum zu einem Ausfall der Infrastruktur kommen, verfügt Ihr Batch-Pool immer noch über fehlerfreie Knoten in den beiden anderen Verfügbarkeitszonen, sodass der Pool weiterhin für die Aufgabenplanung zur Verfügung steht.

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. Rufen Sie zur Überprüfung dieser Anforderung die API zum Auflisten von Ressourcen-SKUs auf, und sehen Sie sich ResourceSkuRestrictions an. 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 zonalen Richtlinie erstellen, wird vom Batch-Dienst versucht, Ihren Pool in allen Verfügbarkeitszonen der ausgewählten Region zuzuordnen. Die Angabe einer bestimmten zonenübergreifenden Zuordnung ist nicht möglich.

.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