使用指定的公用 IP 位址建立 Azure Batch 集區

在 Azure Batch 中,您可以在 Azure 虛擬網路 (VNet) 的子網路中建立 Batch 集區。 您可以透過 Batch 建立的公用 IP 位址存取 Batch 集區中的虛擬機器 (VM)。 這些公用 IP 位址會隨著集區的存留期而變更。 如果 IP 位址未重新整理,您的網路設定可能會過期。

您可以建立靜態公用 IP 位址清單,以改為使用集區中的 VM。 在某些情況下,您可能需要控制公用 IP 位址清單,以確保這些位址不會意外變更。 例如,您可能會使用外部服務,例如資料庫,以限制特定 IP 位址的存取。

如需不使用公用 IP 位址建立集區的相關資訊,請參閱建立不具公用 IP 位址的 Azure Batch 集區

必要條件

  • Batch 用戶端 API 必須使用 Microsoft Entra 驗證來使用公用 IP 位址。
  • Azure VNet 的訂用帳戶與您建立集區和 IP 位址的訂用帳戶相同。 您只能使用以 Azure Resource Manager 為基礎的 VNet。 確認 VNet 符合所有一般 VNet 需求
  • 至少一個現有的 Azure 公用 IP 位址。 請遵循公用 IP 位址需求來建立和設定 IP 位址。

注意

Batch 會在包含公用 IP 位址的資源群組中自動配置其他網路資源。 Batch 通常會為每 100 個專用節點配置一個網路安全性群組 (NSG) 和一個負載平衡器。 這些資源會被訂用帳戶的資源配額所限制。 使用大型集區時,您可能必須針對一或多項資源,要求增加配額

公用 IP 位址需求

透過下列其中一種方法建立一或多個公用 IP 位址:

請確定您的公用 IP 位址符合下列需求:

  • 在與 Batch 集區帳戶相同的訂用帳戶和區域中建立公用 IP 位址。
  • 將 [IP 位址指派] 設定為 [靜態]
  • 將 [SKU] 設定為 [標準]
  • 指定 DNS 名稱。
  • 請確定沒有其他資源使用這些公用 IP 位址,否則集區可能會發生配置失敗。 只針對 VM 設定集區使用這些公用 IP 位址。
  • 請確定沒有任何安全性原則或資源鎖定會限制使用者存取公用 IP 位址。
  • 為集區建立足夠的公用 IP 位址,以容納該數量的目標 VM。
    • 這個數字必須至少等於集區的 targetDedicatedNodestargetLowPriorityNodes 屬性的總和。
    • 如果沒有建立足夠的 IP 位址,集區會局部配置計算節點,且會發生調整大小錯誤。
    • 目前,Batch 會針對每 100 部 VM 使用一個公用 IP 位址。
  • 還會建立公用 IP 位址的緩衝區。 緩衝區可協助 Batch 在縮減規模時進行內部最佳化。 緩衝區也可讓您在無法順利擴大或縮小規模時,提高擴大速度。 建議您新增下列其中一個數量的緩衝區 IP 位址;哪一個數字更大,選擇哪一個。
    • 至少再新增一個 IP 位址。
    • 或者,新增集區中公用 IP 位址總數約 10% 數量的 IP 位址。

重要

建立 Batch 集區之後,就無法新增或變更其公用 IP 位址清單。 如果您想要變更清單,必須刪除並重新建立集區。

使用公用 IP 位址建立 Batch 集區

下列範例示範如何透過使用公用 IP 位址的 Azure Batch 服務 REST API 來建立集區。

REST API URI:

POST {batchURL}/pools?api-version=2020-03-01.11.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"
        },
        "nodeAgentSKUId": "batch.node.ubuntu 20.04"
      },
"networkConfiguration": {
          "subnetId": "/subscriptions/<subId>/resourceGroups/<rgId>/providers/Microsoft.Network/virtualNetworks/<vNetId>/subnets/<subnetId>",
          "publicIPAddressConfiguration": {
            "provision": "usermanaged",
            "ipAddressIds": [
              "/subscriptions/<subId>/resourceGroups/<rgId>/providers/Microsoft.Network/publicIPAddresses/<publicIpId>"
          ]
        },

       "resizeTimeout":"PT15M",
      "targetDedicatedNodes":5,
      "targetLowPriorityNodes":0,
      "taskSlotsPerNode":3,
      "taskSchedulingPolicy": {
        "nodeFillType":"spread"
      },
      "enableAutoScale":false,
      "enableInterNodeCommunication":true,
      "metadata": [ {
        "name":"myproperty",
        "value":"myvalue"
      } ]
    }

下一步