本文說明如何建立具備 Cloud RDMA (IRDMA) 網路介面的運算執行個體,以便在執行個體之間進行低延遲、高處理量的通訊。
建立啟用 Cloud RDMA 的執行個體需要執行下列步驟:
如需建立使用 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
-
安裝 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.setTagsVM -
如要為 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 的執行個體,請完成下列各節的步驟:
如果沒有合適的配置政策,請建立配置政策。
建立新的虛擬私有雲網路,或使用現有的 Falcon 虛擬私有雲網路。
建立支援 Cloud RDMA 的執行個體,該執行個體至少須有一個
GVNIC或IDPF網路介面、至少一個IRDMA網路介面,並使用密集配置政策。
建立 Cloud RDMA 執行個體的配置政策
使用 Cloud RDMA 通訊的執行個體必須位於單一區域,且更嚴格地說,必須位於單一叢集架構。您可以建立密集配置政策,並指定最大距離值,設定可用區內的最低密集度。指定最大距離值時,可指派密集配置政策的執行個體數量有限,且限制會因所選值而異。
- 如要建立與 Cloud RDMA 執行個體搭配使用的密集配置政策,請按照「建立密集配置政策」一文中的步驟操作,並指定最大距離值為 3 或更低。
建立虛擬私有雲網路
如要設定網路,您可以按照說明文件中的指示操作,或使用提供的指令碼。
操作指南
如要建立網路,請按照下列操作說明進行:
如要為
GVNIC或IDPF網路介面建立主機網路,請參閱「建立及管理虛擬私有雲網路」。如果只設定一個
GVNIC或IDPF網路介面,可以使用預設的虛擬私有雲網路,以及與執行個體位於相同區域的自動子網路。如要為
IRDMA網路介面建立網路,請參閱「為 RDMA NIC 建立虛擬私有雲網路」,並使用 Falcon RDMA 網路設定檔。將 Falcon 虛擬私有雲網路的最大傳輸單位 (MTU) 設為8896。
腳本
您可以使用下列指令碼建立網路。
選用:執行指令碼前,請列出 Falcon RDMA 網路設定檔,確認這些設定檔可用。
gcloud compute network-profiles list --filter=falcon複製下列程式碼,並在 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 網路介面:
控制台
前往 Cloud de Confiance 控制台的「Create an instance」(建立執行個體) 頁面。
前往「Create an instance」(建立執行個體)
如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
「Create an instance」(建立執行個體) 頁面隨即顯示,並顯示「Machine configuration」(機器設定) 窗格。
在「機器設定」窗格中,執行下列操作:
- 在「Name」(名稱) 欄位中,指定執行個體的名稱。詳情請參閱「資源命名慣例」。
選用:在「Zone」(可用區) 欄位中,選取這個執行個體的可用區。
選擇用於設定 Falcon 虛擬私有雲網路的可用區。
請選擇支援的機器家族和機器系列。
在「Machine type」(機型) 部分,選取執行個體的機型。
在左側導覽選單中,按一下「OS and Storage」(OS 和儲存空間)。在隨即顯示的「作業系統和儲存空間」窗格中,完成下列步驟:
- 在「作業系統和儲存空間」專區底部,點選「變更」。
- 在「Operating system」(作業系統) 和「Version」(版本) 清單中,選取支援 Cloud RDMA 的作業系統類型和版本。
- 確認「開機磁碟類型」設為「Hyperdisk Balanced」。
- 按一下窗格底部的「選取」,儲存變更。
在左側導覽選單中,按一下「Networking」。在隨即顯示的「Networking」(網路) 窗格中,執行下列操作:
- 前往「網路介面」部分。應該已經有一個網路介面,標示為
default。 - 按一下「新增網路介面」。在顯示的「New network interface」(新增網路介面) 區段中,執行下列操作:
- 在「網路介面卡」清單中,選取「
IRDMA」。 - 在「Network」(網路) 欄位中,選取 Falcon 虛擬私有雲網路。
- 選用:在「Subnetwork」(子網路) 清單中,選取要用於執行個體的子網路。
- 在「IP stack type」(IP 堆疊類型) 欄位中,確認已設為「IPV4-only」(僅限 IPV4)。
- 在「外部 IPv4 位址」清單中,選取「無」。
- 按一下「Done」(完成),確認網路介面詳細資料。
- 在「網路介面卡」清單中,選取「
- 前往「網路介面」部分。應該已經有一個網路介面,標示為
選用:指定執行個體的其他設定選項。詳情請參閱「建立執行個體時的設定選項」。
如要建立並啟動執行個體,請按一下「建立」。
gcloud
-
在 Cloud de Confiance 控制台啟用 Cloud Shell。
Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
使用
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:選用:指定下列其中一項: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:要建立執行個體的專案 IDZONE:要在哪個可用區建立執行個體MACHINE_TYPE:支援的機器類型,例如h4d-highmem-192-lssdINSTANCE_NAME:新執行個體的名稱IMAGE_PROJECT:選用:包含圖片的圖片專案IMAGE:選用,指定下列其中一項: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"
}
後續步驟
- 瞭解如何查看執行個體狀態,確認何時可供使用。
- 瞭解如何連線至執行個體。
- 瞭解建立執行個體時指派的 IP 位址。
- 瞭解如何建立雙重堆疊或僅限 IPv6 的執行個體。