可用性ゾーン間で Azure Batch プールを作成する

可用性ゾーンをサポートする Azure リージョンには少なくとも 3 つの異なるゾーンがあり、それぞれが独自の独立した電源、ネットワーク、冷却システムを備えています。 仮想マシン構成を使用して Azure Batch プールを作成する場合、可用性ゾーン間で Batch プールをプロビジョニングすることを選択できます。 このゾーン ポリシーを使用してプールを作成すると、Azure データセンター レベルの障害から Batch コンピューティング ノードを保護するのに役立ちます。

たとえば、3 つの可用性ゾーンをサポートする Azure リージョンに、ゾーン ポリシーを使用してプールを作成できます。 1 つの可用性ゾーン内の Azure データセンターでインフラストラクチャの障害が発生しても、Batch プールでは、他の 2 つの可用性ゾーン内に正常なノードがまだあります。そのため、タスクのスケジュールのためにプールを引き続き使用できます。

リージョンのサポートとその他の要件

Batch では、可用性ゾーンのサポートで Azure とのパリティが維持されます。 ゾーン オプションを使用するには、サポートされている Azure リージョンでプールを作成する必要があります。

Batch プールが可用性ゾーンに対して割り当てられるようにするために、プールが作成される Azure リージョンでは、複数のゾーンで要求した VM SKU をサポートする必要があります。 これを検証するには、リソース SKU リスト API を呼び出し、resourceSkulocationInfo フィールドを確認します。 要求した VM SKU に対して、複数のゾーンがサポートされていることを確認します。

ユーザー サブスクリプション モードの Batch アカウントの場合、プールを作成するサブスクリプションに、要求した VM SKU に対するゾーン オファーの制限がないことを確認します。 これを確認するには、リソース SKU リスト API を呼び出し、ResourceSkuRestrictions を確認します。 ゾーン制限が存在する場合は、ゾーン制限を解除するためにサポート チケットを送信できます。

また、ノード間通信が有効になっていて、InfiniBand をサポートする VM SKU を使用する場合は、ゾーン ポリシーを使用してプールを作成できないので注意してください。

可用性ゾーン間で Batch プールを作成する

次の例は、可用性ゾーン間で Batch プールを作成する方法を示しています。

注意

ゾーン ポリシーを使用してプールを作成すると、Batch サービスは、選択したリージョン内のすべての可用性ゾーンに対してプールを割り当てようとします。ゾーンに対して特定の割り当てを指定することはできません。

Batch Management Client .NET SDK

pool.DeploymentConfiguration.VirtualMachineConfiguration.NodePlacementConfiguration = new NodePlacementConfiguration()
    {
        Policy = NodePlacementPolicyType.Zonal
    };

Batch REST API

REST API URL

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

要求本文

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

次のステップ