建立使用 Cloud RDMA 的執行個體

本文說明如何建立具備 Cloud RDMA (IRDMA) 網路介面的運算執行個體,以便在執行個體之間進行低延遲、高處理量的通訊。

建立啟用 Cloud RDMA 的執行個體需要執行下列步驟:

  1. 建立密集配置政策。
  2. 建立虛擬私有雲網路,包括標準虛擬私有雲網路 (GVNIC 或 IDPF) 和 Falcon 虛擬私有雲網路 (IRDMA)。
  3. 建立執行個體,並設定網路介面和配置政策。

如需建立使用 RDMA 的加速器最佳化執行個體 (例如 A4X Max、A4X、A4 或 A3 Ultra) 的操作說明,請參閱「建立 AI 適用的執行個體」。

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。

必要的角色

如要取得建立支援 Cloud RDMA 的執行個體所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備建立支援 Cloud RDMA 的執行個體所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立支援 Cloud RDMA 的執行個體,必須具備下列權限:

  • 專案的 compute.instances.create
  • 如要使用自訂映像檔建立 VM: compute.images.useReadOnly 映像檔
  • 如要使用快照建立 VM: compute.snapshots.useReadOnly 快照
  • 如要使用執行個體範本建立 VM,請按照下列步驟操作: compute.instanceTemplates.useReadOnly 在執行個體範本上
  • 如要為 VM 指定子網路: compute.subnetworks.use 在專案或所選子網路上
  • 如要為 VM 指定靜態 IP 位址: compute.addresses.use 專案
  • 如要在使用虛擬私有雲網路時,將外部 IP 位址指派給 VM: compute.subnetworks.useExternalIp 在專案或所選子網路上
  • 如要為 VM 設定 VM 執行個體中繼資料: compute.instances.setMetadata 在專案上
  • 如要設定 VM 的標記: compute.instances.setTags VM
  • 如要為 VM 設定標籤,請按照下列步驟操作: compute.instances.setLabels 在 VM 上
  • 如要設定 VM 使用的服務帳戶: compute.instances.setServiceAccount 在 VM 上
  • 如要為 VM 建立新磁碟: compute.disks.create 專案
  • 如要以唯讀或讀寫模式連結現有磁碟: compute.disks.use 在磁碟上
  • 如要以唯讀模式連接現有磁碟: compute.disks.useReadOnly 磁碟

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

需求條件

請參閱下列規則,為執行個體設定網路介面:

  • 如要設定 IRDMA 網路介面,您必須先在與執行個體相同的區域和可用區中,建立具有 Falcon RDMA 網路設定檔的虛擬私有雲網路。
  • 如要使用 gVNIC 或 IDPF 網路介面,必須使用一般虛擬私有雲。如未指定網路或子網路,Compute Engine 會使用預設虛擬私有雲網路,以及與執行個體位於相同區域的自動子網路。
  • 如果指定子網路,但未指定網路,Compute Engine 會從指定的子網路推斷網路。
  • 如果指定網路,就必須指定子網路,且子網路必須屬於同一個網路。否則,執行個體建立作業會失敗。

限制

  • 使用 Cloud RDMA 的虛擬機器 (VM) 無法使用即時遷移功能。您必須將執行個體設為在維護事件期間終止。
  • Cloud RDMA 無法與代管執行個體群組 (MIG) (代管或非代管) 搭配使用。
  • 啟用 Cloud RDMA 的執行個體只能使用 IPv4_ONLY 網路堆疊類型。
  • 您只能使用支援 Cloud RDMA 的機器系列,例如 H4D 機器系列或 Z4M 機器系列。
  • 執行個體必須使用支援 IRDMA 的 OS 映像檔。

建立啟用 Cloud RDMA 的執行個體

使用 Cloud RDMA 的執行個體,每個實體 NIC 至少需要兩個虛擬網路介面 (vNIC),並從下列網路介面類型設定:

  • 網路介面類型 GVNIC:VM 使用 gve 驅動程式處理 TCP/IP 和網際網路流量,用於一般的 VM 對 VM 和 VM 對網際網路通訊
  • 網路介面類型 IDPF:裸機執行個體使用 IDPF 網路介面類型,而非 GVNIC,用於一般執行個體對執行個體,以及執行個體對網際網路通訊。
  • 網路介面類型 IRDMA:使用 IDPF/iRDMA 驅動程式,在運算執行個體之間進行 RDMA 通訊。這個介面必須使用 Falcon RDMA 網路設定檔。

您可以為執行個體設定的各類型網路介面數量,取決於機器系列,如下表所示:

機器系列 網路介面類型 要設定的號碼
H4D 僅限 GVNIC GVNIC:1 到 10
H4D GVNIC 和 IRDMA GVNIC:1 至 9
IRDMA:1
Z4M VM 僅限 GVNIC GVNIC:1 到 10
Z4M VM (少於 192 個 vCPU) GVNIC 和 IRDMA GVNIC:1 至 9
IRDMA:1
Z4M VM (192 個 vCPU) GVNIC 和 IRDMA GVNIC:1 至 9
IRDMA:1 至 2
Z4M (裸機) 僅限 IDPF IDPF:1 到 2
Z4M (裸機) IDPF 和 IRDMA 1 個 IDPF 和 1 個 IRDMA,或
2 個 IDPF 和 1 或 2 個 IRDMA

Bare Metal 執行個體的 IRDMA 網路介面數量不得超過 IDPF 網路介面數量。此外,如果是多 NIC 的執行個體,如要為每個實體 NIC 正確指派網路介面類型,您必須在每個 IRDMA 介面前定義 GVNIC 或 IDPF 介面。以下範例說明可能的設定:

  • 多 NIC VM 具有 1 個 IRDMA 網路介面和 4 個 GVNIC 網路介面:請按照下列順序設定網路介面:GVNIC、IRDMA、GVNIC、GVNIC、GVNIC。這會產生下列指派結果:
    • NIC 0:GVNIC、IRDMA、GVNIC
    • NIC 1:GVNIC、GVNIC
  • 多 NIC VM 具有 2 個 IRDMA 網路介面和 5 個 GVNIC 網路介面:請按照下列順序設定網路介面:GVNIC、IRDMA、GVNIC、IRDMA、GVNIC、GVNIC、GVNIC。這會產生下列指派項目:
    • NIC 0:GVNIC、IRDMA、GVNIC、GVNIC
    • NIC 1:GVNIC、IRDMA、GVNIC

如要概略瞭解 Cloud de Confiance by S3NS中的多個網路介面,請參閱「多個網路介面」。

如要建立使用 IRDMA 的執行個體,請完成下列各節的步驟:

  1. 如果沒有合適的配置政策,請建立配置政策。

  2. 建立新的虛擬私有雲網路,或使用現有的 Falcon 虛擬私有雲網路。

  3. 建立支援 Cloud RDMA 的執行個體,該執行個體至少須有一個 GVNIC 或 IDPF 網路介面、至少一個 IRDMA 網路介面,並使用密集配置政策。

建立 Cloud RDMA 執行個體的配置政策

使用 Cloud RDMA 通訊的執行個體必須位於單一區域,且更嚴格地說,必須位於單一叢集架構。您可以建立密集配置政策,並指定最大距離值,設定可用區內的最低密集度。指定最大距離值時,可指派密集配置政策的執行個體數量有限,且限制會因所選值而異。

  • 如要建立與 Cloud RDMA 執行個體搭配使用的密集配置政策,請按照「建立密集配置政策」一文中的步驟操作,並指定最大距離值為 3 或更低。

建立虛擬私有雲網路

如要設定網路,您可以按照說明文件中的指示操作,或使用提供的指令碼。

操作指南

如要建立網路,請按照下列操作說明進行:

腳本

您可以使用下列指令碼建立網路。

  1. 選用:執行指令碼前,請列出 Falcon RDMA 網路設定檔,確認這些設定檔可用。

    gcloud compute network-profiles list --filter=falcon
    
  2. 複製下列程式碼,並在 Linux 殼層視窗中執行。

#!/bin/bash

# Create standard VPC (network and subnet) for the GVNIC or IDPF interface
  gcloud compute networks create GVNIC_NAME_PREFIX-net-0 \
    --subnet-mode=custom

  gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --region=REGION \
    --range=10.0.0.0/16

  gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=10.0.0.0/8

# Create SSH firewall rules
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=tcp:22 \
  --source-ranges=IP_RANGE

# Optional: Create an external IP for only the GVNIC or IDPF interface
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=icmp \
  --source-ranges=IP_RANGE

# Create network for Cloud RDMA over Falcon transport
gcloud compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for Cloud RDMA
gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
    --network=RDMA_NAME_PREFIX-irdma \
    --region=REGION \
    --range=10.1.0.0/16  # offset to avoid overlap with GVNIC or IDPF network

更改下列內容:

  • GVNIC_NAME_PREFIX:一般虛擬私有雲網路和子網路的名稱前置字串,使用 GVNIC 或 IDPF NIC 類型。
  • RDMA_NAME_PREFIX:虛擬私有雲網路和子網路的名稱前置字串,該網路和子網路使用 IRDMA NIC 類型。
  • ZONE:要建立網路和運算執行個體的可用區。使用 us-central1-a 或 europe-west4-b。
  • REGION:要建立網路的區域。這必須與指定的可用區相對應。舉例來說,如果可用區是 europe-west4-b,則區域為 europe-west4。
  • IP_RANGE:虛擬私有雲網路以外的 IP 位址範圍,用於 SSH 防火牆規則。最佳做法是指定您需要允許存取的特定 IP 位址範圍,而非所有 IPv4 或 IPv6 來源。請勿使用 0.0.0.0/0 或 ::/0 做為來源範圍,因為這樣會允許來自所有 IPv4 或 IPv6 來源的流量,包括Cloud de Confiance by S3NS以外的來源。

建立啟用 Cloud RDMA 的執行個體

下列步驟說明如何建立執行個體,並將第一個網路介面設為 gVNIC 或 IDPF 介面,第二個網路介面設為 IRDMA 網路介面:

控制台

  1. 前往 Cloud de Confiance 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「Create an instance」(建立執行個體)

    如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。

    「Create an instance」(建立執行個體) 頁面隨即顯示,並顯示「Machine configuration」(機器設定) 窗格。

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 欄位中,指定執行個體的名稱。詳情請參閱「資源命名慣例」。
    2. 選用:在「Zone」(可用區) 欄位中,選取這個執行個體的可用區。

      選擇用於設定 Falcon 虛擬私有雲網路的可用區。

    3. 請選擇支援的機器家族和機器系列。

    4. 在「Machine type」(機型) 部分,選取執行個體的機型。

  3. 在左側導覽選單中,按一下「OS and Storage」(OS 和儲存空間)。在隨即顯示的「作業系統和儲存空間」窗格中,完成下列步驟:

    1. 在「作業系統和儲存空間」專區底部,點選「變更」。
    2. 在「Operating system」(作業系統) 和「Version」(版本) 清單中,選取支援 Cloud RDMA 的作業系統類型和版本。
    3. 確認「開機磁碟類型」設為「Hyperdisk Balanced」。
    4. 按一下窗格底部的「選取」,儲存變更。
  4. 在左側導覽選單中,按一下「Networking」。在隨即顯示的「Networking」(網路) 窗格中,執行下列操作:

    1. 前往「網路介面」部分。應該已經有一個網路介面,標示為 default。
    2. 按一下「新增網路介面」。在顯示的「New network interface」(新增網路介面) 區段中,執行下列操作:
      1. 在「網路介面卡」清單中,選取「IRDMA」。
      2. 在「Network」(網路) 欄位中,選取 Falcon 虛擬私有雲網路。
      3. 選用:在「Subnetwork」(子網路) 清單中,選取要用於執行個體的子網路。
      4. 在「IP stack type」(IP 堆疊類型) 欄位中,確認已設為「IPV4-only」(僅限 IPV4)。
      5. 在「外部 IPv4 位址」清單中,選取「無」。
      6. 按一下「Done」(完成),確認網路介面詳細資料。
  5. 選用:指定執行個體的其他設定選項。詳情請參閱「建立執行個體時的設定選項」。

  6. 如要建立並啟動執行個體,請按一下「建立」。

gcloud

  1. 在 Cloud de Confiance 控制台啟用 Cloud Shell。

    啟用 Cloud Shell

    Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 使用 gcloud compute instances create 指令,並加上至少兩個 --network-interface 旗標,一個用於 GVNIC 或 IDPF 介面,另一個用於 IRDMA 介面。您可以視需要自訂其餘指令選項。

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=boot=yes, \
            image=projects/IMAGE_PROJECT/global/images/IMAGE, \
            size=SIZE \
        --maintenance-policy=TERMINATE \
        --network-interface \
            nic-type=GVNIC, \
            network=NETWORK_NAME,subnet=SUBNET_NAME, \
            stack-type=STACK_TYPE, \
            private-network-ip=INTERNAL_IPV4_ADDRESS, \
            address=EXTERNAL_IPV4_ADDRESS \
        --network-interface \
            nic-type=IRDMA, \
            network=RDMA_NETWORK_NAME,subnet=RDMA_SUBNET_NAME, \
            stack-type=IPV4_ONLY, \
            no-address \
    

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱
    • ZONE:建立執行個體的可用區,例如 europe-west1-b。執行個體的地區是從區域推測得出。
    • MACHINE_TYPE:執行個體可使用的支援機器類型。
    • IMAGE_PROJECT:選用:包含圖片的圖片專案。
    • IMAGE:選用:指定下列其中一項:
      • 特定版本的 OS 映像檔,例如 hpc-rocky-linux-8-v20250721。
      • 圖片系列,格式必須為 family/IMAGE_FAMILY。這會使用最新的非淘汰 OS 映像檔建立執行個體。舉例來說,如果您指定 family/hpc-rocky-linux-8,Compute Engine 就會使用 HPC Rocky Linux 8 映像檔系列中最新版本的 OS 映像檔建立執行個體。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。
    • SIZE:選用:新磁碟的大小。值必須是整數。預設測量單位為 GiB。
    • NETWORK_NAME:選用:網路名稱
    • SUBNET_NAME:用於網路介面的子網路名稱。如要查看網路中的子網路清單,請使用 gcloud compute networks subnets list 指令。

      如果是 GVNIC 或 IDPF 網路介面,您可以省略 network 和 subnet 旗標,改用 default 網路。

    • STACK_TYPE:選用:GVNIC 或 IDPF 網路介面的堆疊類型。STACK_TYPE 必須是下列其中一項:IPV4_ONLY、IPV4_IPV6 或 IPV6_ONLY。預設值為 IPV4_ONLY。

    • INTERNAL_IPV4_ADDRESS:選用:您希望運算執行個體在目標子網路中使用的內部 IPv4 位址。如果不需要特定 IP 位址,請略過這個旗標。

      如要指定內部 IPv6 位址,請改用 --internal-ipv6-address 旗標。

    • EXTERNAL_IPV4_ADDRESS:選用:要與網路介面搭配使用的靜態外部 IPv4 位址。您必須先預留外部 IPv4 位址。 執行下列其中一個步驟:

      • 請指定子網路中的有效 IPv4 位址。
      • 如果您不希望網路介面有外部 IP 位址,請改用 no-address 旗標。
      • 如要讓介面接收暫時外部 IP 位址,請指定 address=''。

      如要指定外部 IPv6 位址,請改用 --external-ipv6-address 標記。

    • RDMA_NETWORK_NAME:您使用 Falcon RDMA 網路設定檔建立的虛擬私有雲網路名稱。

    • RDMA_SUBNET_NAME:Falcon 虛擬私有雲網路中的子網路名稱。

REST

如要建立設定為使用 Cloud RDMA 的執行個體,請向 instances.insert 方法提出 POST 要求。加入 networkInterfaces 物件,並至少包含兩個網路設定,一個用於 gVNIC 或 IDPF 介面,另一個用於 IRDMA 介面。您可以視需要自訂其餘執行個體屬性。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:要建立執行個體的專案 ID
  • ZONE:要在哪個可用區建立執行個體
  • MACHINE_TYPE:支援的機器類型,例如 h4d-highmem-192-lssd
  • INSTANCE_NAME:新執行個體的名稱
  • IMAGE_PROJECT:選用:包含圖片的圖片專案
  • IMAGE:選用,指定下列其中一項:

    • OS 映像檔的特定版本,例如 debian-12-bookworm-v20250415
    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。系統會使用最新且未淘汰的 OS 映像檔建立執行個體。舉例來說,如果您指定 family/debian-12,Compute Engine 會使用 Debian 12 映像檔系列中最新版本的 OS 映像檔建立執行個體。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。
  • NETWORK_NAME:選用:要與 gVNIC 或 IDPF 網路介面搭配使用的網路名稱
  • SUBNET_NAME:要搭配 gVNIC 或 IDPF 網路介面使用的子網路名稱

    如果是 GVNIC 或 IDPF 網路介面,您可以省略 network 和 subnet 屬性,改用 default 網路。

  • INTERNAL_IPV4_ADDRESS: (選用) 要讓運算執行個體在目標子網路中使用的內部 IPv4 位址。如果不需要特定 IP 位址,請略過這個旗標。
  • EXTERNAL_IPV4_ADDRESS:選用。要與網路介面搭配使用的靜態外部 IPv4 位址。您必須預先保留外部 IPv4 位址。
  • RDMA_NETWORK_NAME:使用 RDMA 網路設定檔建立的網路名稱
  • RDMA_SUBNET_NAME:RDMA 網路中的子網路名稱

HTTP 方法和網址:

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

JSON 要求主體:

{
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "name": "INSTANCE_NAME",
    "disks": [
      {
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot": true
      }
    ],
    "networkInterfaces": [
      {
        "network": "NETWORK_NAME",
        "subnetwork": "SUBNET_NAME",
        "networkIP": "INTERNAL_IPV4_ADDRESS",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External IP",
            "natIP": "EXTERNAL_IPV4_ADDRESS"
          }
        ],
        "stackType": "IPV4_ONLY",
        "nicType": "GVNIC",
      },
      {
        "network": "RDMA_NETWORK_NAME",
        "subnetwork": "RDMA_SUBNET_NAME",
        "stackType": "IPV4_ONLY",
        "nicType": "IRDMA",
      }
    ]
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "compute#operation",
  "id": "9216044482154695709",
  "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7",
  "zone": "https://www.s3nsapis.fr/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`",
  "operationType": "insert",
  "targetLink": "https://www.s3nsapis.fr/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances/`INSTANCE_NAME`",
  "targetId": "2679381553616227357",
  "status": "RUNNING",
  "user": "USER_ID",
  "progress": 0,
  "insertTime": "2025-02-10T09:10:10.551-08:00",
  "startTime": "2025-02-10T09:10:10.551-08:00",
  "selfLink": "https://www.s3nsapis.fr/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38"
 "kind": "compute#operation"
}

後續步驟