パブリック IP アドレスを使用しない簡素化されたノード通信プールを作成する

注意

これは、パブリック IP アドレスを持たない Azure Batch プールの以前のプレビュー バージョンに代わるものです。 この新しいバージョンでは、簡素化されたコンピューティング ノード通信を使用する必要があります。

重要

現在、Azure Batch におけるパブリック IP アドレスを持たないプールのサポートは、いくつかの特定のリージョンで利用可能です。

Azure Batch プールを作成するときに、パブリック IP アドレスを持たない仮想マシン (VM) 構成プールをプロビジョニングできます。 この記事では、パブリック IP アドレスのない Batch プールを設定する方法について説明します。

パブリック IP アドレスのないプールを使用する理由

既定では、Azure Batch VM 構成プール内のすべてのコンピューティング ノードに、パブリック IP アドレスが割り当てられます。 このアドレスは、インターネットへのアウトバウンド アクセスと、インターネットからコンピューティング ノードへのインバウンド アクセスをサポートするために、Batch サービスによって使われます。

これらのノードへのアクセスを制限し、インターネットからのこれらのノードの探索可能性を低く抑えるには、パブリック IP アドレスのないプールをプロビジョニングできます。

前提条件

重要

前提条件は、この機能の以前のプレビュー バージョンから変更されています。 先に進む前に、各項目の変更を確認してください。

  • 簡素化されたコンピューティング ノード通信を使います。 詳しくは、「簡素化されたコンピューティング ノード通信を使用する」をご覧ください。

  • Batch クライアント API では、Microsoft Entra 認証を使う必要があります。 Microsoft Entra ID の Azure Batch のサポートについては、Active Directory を使った Batch サービス ソリューションの認証に関するページ記載されています。

  • Azure 仮想ネットワーク (VNet) でプールを作成します。以下の要件と構成に従います。 1 つまたは複数のサブネットを持つ VNet を前もって準備するには、Azure portal、Azure PowerShell、Azure コマンド ライン インターフェイス (Azure CLI)、その他の方法を使用できます。

    • VNET が存在するサブスクリプションとリージョンは、プールの作成に使用する Batch アカウントと同じである必要があります。

    • プールに指定されたサブネットには、プールの対象となる VM 数 (つまり、プールの targetDedicatedNodes および targetLowPriorityNodes プロパティの合計) に対応できる十分な未割り当て IP アドレスが必要です。 サブネットの未割り当て IP アドレスが十分でない場合、プールによってコンピューティング ノードが部分的に割り当てられ、サイズ変更エラーが発生します。

    • プライベート エンドポイントを使用する予定のときに、仮想ネットワークでプライベート エンドポイント ネットワーク ポリシーが有効になっている場合は、プライベート エンドポイントをホストしているサブネットに対する TCP/443 によるインバウンド接続を Batch プールのサブネットから必ず許可する必要があります。

  • Batch ノード管理のためのアウトバウンド アクセスを有効にします。 パブリック IP アドレスを持たないプールでは、インターネット アウトバウンド アクセスは既定では有効になりません。 計算ノードが Batch ノード管理サービスにアクセスできるようにするには (「簡素化されたコンピューティング ノード通信を使用する」を参照)、次のいずれかのオプションを選択します。

重要

Batch アカウントを使用するプライベート エンドポイントには、2 つのサブリソースがあります。 パブリック IP アドレスのない Batch プールには、nodeManagement プライベート エンドポイントを使用してください。 詳細については、「Azure Batch アカウントでプライベート エンドポイントを使用する」を参照してください。

現在の制限

  1. パブリック IP アドレスのないプールでは、Cloud Services 構成ではなく、仮想マシンの構成を使用する必要があります。
  2. Batch コンピューティング ノード用のカスタム エンドポイント構成は、パブリック IP アドレスを持たないプールでは機能しません。
  3. パブリック IP アドレスがないため、この種類のプールでは、独自に指定したパブリック IP アドレスを使用することはできません。
  4. Batch タスクのタスク認証トークンはサポートされていません。 回避策は、マネージド ID で Batch プールを使用することです。

Azure portal でパブリック IP アドレスのないプールを作成する

  1. 必要に応じて、仮想ネットワーク内の Batch アカウント用に nodeManagement プライベート エンドポイントを作成します (「前提条件」のアウトバウンド アクセス要件を参照してください)。
  2. Azure Portal の Batch アカウントに移動します。
  3. 左側の [設定] ウィンドウで、 [プール] を選択します。
  4. [プール] ウィンドウで、 [追加] を選択します。
  5. [プールの追加] ウィンドウで、 [イメージの種類] ドロップダウンから、使用する予定のオプションを選択します。
  6. ご利用のイメージの適切な [Publisher](パブリッシャー)、[Offer](プラン)、[SKU] を選択します。
  7. [ノード サイズ][ターゲットの専用ノード数][ターゲットのスポットまたは低優先度ノード] など、残りの必須の設定を指定します。
  8. [Node communication mode] (ノード通信モード) の場合、[Optional Settings] (オプション設定) の下の [簡易] を選択します。
  9. 使う仮想ネットワークとサブネットを選びます。 この仮想ネットワークは、作成しているプールと同じ場所に存在する必要があります。
  10. [IP アドレスのプロビジョニングの種類] で、 [NoPublicIPAddresses] を選択します。

次のスクリーンショットは、パブリック IP アドレスのないプールを作成するために変更する必要がある要素を示しています。

Screenshot of the Add pool screen with NoPublicIPAddresses selected.

Batch REST API を使用して、パブリック IP アドレスなしのプールを作成する

次の例では、Batch Service REST API を使用して、パブリック IP アドレスを使用するプールを作成する方法を示します。

REST API URI

POST {batchURL}/pools?api-version=2022-10-01.16.0
client-request-id: 00000000-0000-0000-0000-000000000000

要求本文

"pool": {
     "id": "pool-npip",
     "vmSize": "standard_d2s_v3",
     "virtualMachineConfiguration": {
          "imageReference": {
               "publisher": "Canonical",
               "offer": "0001-com-ubuntu-server-jammy",
               "sku": "22_04-lts"
          },
          "nodeAgentSKUId": "batch.node.ubuntu 22.04"
     },
     "networkConfiguration": {
          "subnetId": "/subscriptions/<your_subscription_id>/resourceGroups/<your_resource_group>/providers/Microsoft.Network/virtualNetworks/<your_vnet_name>/subnets/<your_subnet_name>",
          "publicIPAddressConfiguration": {
               "provision": "NoPublicIPAddresses"
          }
     },
     "resizeTimeout": "PT15M",
     "targetDedicatedNodes": 2,
     "targetLowPriorityNodes": 0,
     "taskSlotsPerNode": 1,
     "taskSchedulingPolicy": {
          "nodeFillType": "spread"
     },
     "enableAutoScale": false,
     "enableInterNodeCommunication": false,
     "targetNodeCommunicationMode": "simplified"
}

ARM テンプレートを使用してパブリック IP アドレスのないプールを作成する

この Azure クイック スタート テンプレートを使用すると、Azure Resource Manager (ARM) テンプレートを使用して、パブリック IP アドレスのないプールを作成できます。

テンプレートによって次のリソースがデプロイされます。

  • Batch ノード管理エンドポイントへのパブリック ネットワーク アクセスをブロックするように構成された IP ファイアウォールを持つ Azure Batch アカウント
  • インターネット送信アクセスをブロックするネットワーク セキュリティ グループを持つ仮想ネットワーク
  • アカウントの Batch ノード管理エンドポイントにアクセスするためのプライベート エンドポイント
  • 仮想ネットワークにリンクされたプライベート DNS ゾーンを使用したプライベート エンドポイントの DNS 統合
  • 仮想ネットワークにデプロイされ、パブリック IP アドレスのないバッチ プール

ARM テンプレートの使用に慣れている場合は、[Azure へのデプロイ] ボタンを選択します。 Azure portal でテンプレートが開きます。

Button to deploy the Resource Manager template to Azure.

Note

無効な groupId "nodeManagement" が原因でプライベート エンドポイントのデプロイが失敗した場合は、リージョンが簡素化されたコンピューティング ノード通信のサポート対象一覧に含まれているかどうかを確認してください。 適切なリージョンを選択してから、デプロイを再試行します。

インターネットへの送信アクセス

パブリック IP アドレスのないプールでは、仮想ネットワーク NAT を使用するなどして、ネットワーク設定を適切に構成しない限り、ご利用の仮想マシンからパブリック インターネットへのアクセスは不可能です。 NAT では、仮想ネットワーク内の仮想マシンからインターネットへのアウトバウンド アクセスのみが許可されます。 Batch で作成されたコンピューティング ノードにはパブリックにアクセスすることはできません。パブリック IP アドレスが関連付けられていないためです。

送信接続を実現するもう 1 つの方法は、ユーザー定義ルート (UDR) を使用することです。 この方法により、パブリック インターネット アクセスが可能なプロキシ マシン (Azure Firewall など) にトラフィックをルーティングできます。

重要

パブリック IP アドレスを持たない簡素化されたノード通信プール用に作成される追加のネットワーク リソース (ロード バランサー、ネットワーク セキュリティ グループ) はありません。 プール内のコンピューティング ノードはロード バランサーにバインドされていないため、Azure で既定のアウトバウンド アクセスを提供できます。 ただし、既定のアウトバウンド アクセスは運用環境のワークロードには適してはおらず、これは 2025 年 9 月 30 日に廃止されます (公式発表を参照してください)。 そのため、ワークロードでインターネット アウトバウンド アクセスが必要な場合、またはプールが Batch ノード管理エンドポイントにアクセスするためにプライベート エンドポイントを使用していない場合は、インターネット アウトバウンド アクセスを実現するための独自のソリューションを用意する必要があります。

トラブルシューティング

Batch プールでコンピューティング ノードを使用できない

パブリック IP アドレスのない Batch プールでコンピューティング ノードが使用できない状態に陥った場合、最初に最も重要な確認点は、Batch ノード管理サービスへのアウトバウンド アクセスを確認することです。 コンピューティング ノードが仮想ネットワークからサービスに接続できるように、正しく構成する必要があります。

nodeManagement プライベート エンドポイントの使用

Batch アカウントの仮想ネットワークにノード管理プライベート エンドポイントを作成した場合は、次のようにします。

  • プライベート エンドポイントが適切な仮想ネットワークで作成され、プロビジョニングの状態が成功および承認済み状態になっているかどうかを確認します。
  • Batch アカウントのノード管理エンドポイントに対して DNS 構成が正しく設定されているかどうかを確認します。
    • プライベート エンドポイントが自動プライベート DNS ゾーン統合で作成されている場合は、DNS A レコードがプライベート DNS ゾーン privatelink.batch.azure.com で正しく構成されており、そのゾーンが仮想ネットワークにリンクされていることを確認します。
    • 独自の DNS ソリューションを使用している場合は、Batch ノード管理エンドポイントの DNS レコードが正しく構成され、プライベート エンドポイントの IP アドレスを指していることを確認します。
  • お使いのアカウントの Batch ノード管理エンドポイントの DNS 解決を確認します。 これは、仮想ネットワーク内から nslookup <nodeManagementEndpoint> を実行することで確認できます。DNS 名はプライベート エンドポイントの IP アドレスに解決される必要があります。
  • 仮想ネットワークでプライベート エンドポイント ネットワーク ポリシーが有効になっている場合は、Batch プールとプライベート エンドポイントの両方のサブネットについて NSG と UDR を確認します。 プライベート エンドポイントをホストしているサブネットへの TCP/443 によるインバウンド接続を、Batch プールのサブネットから許可する必要があります。
  • Batch プールのサブネットから、既定の HTTPS ポート (443) を使用して、ノード管理エンドポイントに対して TCP ping を実行します。 このプローブでは、プライベート リンク接続が想定どおりに動作しているかどうかを確認できます。
# Windows
Test-TcpConnection -ComputeName <nodeManagementEndpoint> -Port 443
# Linux
nc -v <nodeManagementEndpoint> 443

TCP ping が失敗した場合 (タイムアウトなど)、通常はプライベート リンク接続の問題であり、このプライベート エンドポイント リソースで Azure サポート チケットを生成することができます。 そうでない場合、このノードが使用できない問題は、通常の Batch プールとしてトラブルシューティングでき、お使いの Batch アカウントでサポート チケットを生成できます。

独自のインターネット アウトバウンド ソリューションの使用

プライベート エンドポイントではなく独自のインターネット アウトバウンド ソリューションを使用する場合は、ノード管理エンドポイントに対して TCP ping を実行します。 これが機能しない場合は、コンピューティング ノード通信を簡素化するための詳細な要件に従って、アウトバウンド アクセスが正しく構成されているかどうかを確認します。

コンピューティング ノードへの接続

パブリック IP アドレスのない Batch プール内のコンピューティング ノードには、インターネットによるインバウンド アクセスはできません。 デバッグのためにコンピューティング ノードにアクセスするには、仮想ネットワーク内から接続する必要があります。

  • 仮想ネットワーク内でジャンプボックス マシンを使用し、そこからコンピューティング ノードに接続します。
  • または、Azure Bastion などの他のリモート接続ソリューションの使用を試みます。
    • IP ベースの接続が有効になっている仮想ネットワークで Bastion を作成します。
    • Bastion を使用して、その IP アドレスを使用してコンピューティング ノードに接続します。

コンピューティング ノードへの接続のガイドに従って、Batch プール内のターゲット コンピューティング ノードのユーザー資格情報と IP アドレスを取得できます。

パブリック IP を持たないプールの以前のプレビュー バージョンからの移行

Azure Batch のパブリック IP を持たないプールの以前のプレビュー バージョンを使用する既存のプールの場合、仮想ネットワークで作成されたプールのみを移行できます。

  1. 仮想ネットワークで Batch ノード管理用のプライベート エンドポイントを作成します。
  2. プールのノード通信モードを simplified に更新します。
  3. プールを 0 ノードにスケールダウンします。
  4. プールをもう一度スケールアウトします。 その後、プールは新しいバージョンに自動的に移行されます。

次の手順