本页面介绍了如何创建具有启用 RDMA 的网络接口的 HPC 实例。如需了解如何创建使用 RDMA 的 A4 或 A3 Ultra 加速器优化实例,请参阅创建经过 AI 优化的 A4 或 A3 Ultra 实例。
如需创建使用远程直接内存访问 (RDMA) 的计算实例,您必须在创建实例时配置至少两个网络接口 (NIC)。一个 NIC 必须是连接到采用 RDMA 网络配置文件的 VPC 网络的 IRDMA NIC,另一个 NIC 必须使用 GVNIC。
使用机器系列比较表确定哪些机器系列支持 RDMA 网络接口。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得创建支持 RDMA 通信的实例所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含创建支持 RDMA 通信的实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需创建支持 RDMA 通信的实例,需要具备以下权限:
-
针对项目的
compute.instances.create
权限 -
使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 -
使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 -
使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 -
为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 -
为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 -
在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 -
为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 -
为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 -
为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 -
为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 -
为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 -
以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 -
以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
要求
请查看以下有关为实例配置网络接口的规则:
- 每个网络接口都必须连接到不同的 Virtual Private Cloud 网络。
- 如需配置 IRDMA 网络接口,您必须先在与实例相同的区域和可用区中创建具有 Falcon RDMA 网络配置文件的 VPC 网络。
- 如果您没有指定网络或子网,Compute Engine 会使用默认 VPC 网络以及与实例位于同一区域的自动子网。
- 如果您指定了子网,但未指定网络,Compute Engine 会根据指定的子网推断网络。
- 如果您指定了网络,则必须指定子网,并且此子网必须属于同一个网络。否则,实例创建将失败。
限制
- 用于内部 IP 通信的 Tier_1 网络仅与运行 gVNIC 虚拟网络驱动程序的虚拟机兼容。
- 对于使用 RDMA 的虚拟机,您无法使用实时迁移。您必须将实例配置为在维护事件期间终止。
- 您无法将 RDMA 与托管式实例组 (MIG)(托管式或非托管式)搭配使用。
- 您只能将
IPv4_ONLY
网络堆栈类型与启用 RDMA 的实例搭配使用。 - 您只能使用 H4D 机器系列创建使用 Cloud RDMA 的实例。
创建启用了 Cloud RDMA 的实例
启用 Cloud RDMA 的实例至少需要两个网络接口 (NIC):
- NIC 类型
GVNIC
:使用gve
驱动程序处理 TCP/IP 和互联网流量,以实现正常的虚拟机间和虚拟机与互联网之间的通信 - NIC 类型
IRDMA
:使用 IDPF/iRDMA 驱动程序在实例之间进行基于 RDMA 的通信
一个实例只能有一个
IRDMA
接口。每个实例可以有 1 到 10 个网络接口。如需创建使用 IRDMA 的实例,请完成以下各部分中的步骤:
如果没有合适的布置政策,请创建布置政策。
创建新的 VPC 网络,或使用现有的支持 RDMA 的 VPC 网络。
创建启用 RDMA 的实例,该实例具有
IRDMA
网络接口、至少一个GVNIC
网络接口,并使用紧凑布置政策。
为 RDMA 实例创建放置政策
使用 RDMA 进行通信的实例必须位于单个可用区内,更严格地说,必须位于单个集群网络结构内。您可以创建紧凑布置政策并指定最大距离值,以设置可用区内的最低紧凑度。指定距离上限值时,您可以为紧凑布置政策分配的实例数量有限制,并且该限制会根据您选择的值而变化。
- 如需创建与 RDMA 实例搭配使用的紧凑布置政策,请按照创建紧凑布置政策中的步骤操作,并指定最大距离值为 3 或更低。
创建虚拟私有云网络
如需设置网络,您可以按照文档中的说明操作,也可以使用提供的脚本。
说明指南
如需创建网络,您可以按照以下说明操作:
如需为
GVNIC
网络接口创建主机网络,请参阅创建和管理 VPC 网络。如果您仅配置一个
GVNIC
网络接口,则可以使用默认 VPC 网络以及与实例位于同一区域的自动子网。如需为
IRDMA
网络接口创建网络,请参阅创建具有 RDMA 网络配置文件的 VPC 网络。 将 RDMA 网络的最大传输单元 (MTU) 设置为8896
。
脚本
如需创建网络,您可以使用以下脚本。
可选:在运行脚本之前,列出 RDMA 网络配置文件以验证它们是否可用。
gcloud beta compute network-profiles list
复制以下代码,然后在 Linux shell 窗口中运行该代码。
#!/bin/bash # Create standard VPC (network and subnet) for the GVNIC interface gcloud beta compute networks create GVNIC_NAME_PREFIX-net-0 \ --subnet-mode=custom gcloud beta compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \ --network=GVNIC_NAME_PREFIX-net-0 \ --region=REGION \ --range=10.0.0.0/16 gcloud beta 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 beta 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 interface gcloud beta 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 RDMA over Falcon transport gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \ --network-profile=ZONE-vpc-falcon \ --subnet-mode custom # Create subnet for RDMA gcloud beta 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 network
替换以下内容:
GVNIC_NAME_PREFIX
:用于使用 GVNIC NIC 类型的标准虚拟私有云网络和子网的名称前缀。RDMA_NAME_PREFIX
:用于使用 IRDMA NIC 类型的虚拟私有云网络和子网的名称前缀。ZONE
:您希望在其中创建网络和计算实例的可用区。请使用us-central1-a
或europe-west4-b
。REGION
:您希望创建网络的区域。 此区域必须与指定的可用区相对应。例如,如果您的可用区为europe-west4-b
,则您的区域为europe-west4
。IP_RANGE
:VPC 网络之外用于 SSH 防火墙规则的 IP 地址范围。 最佳实践是指定您需要允许访问的特定来源 IP 地址范围,而不是所有 IPv4 或 IPv6 来源。 请勿使用0.0.0.0/0
或::/0
作为来源范围,因为这会允许来自所有 IPv4 或 IPv6 来源(包括Google Cloud外部的来源)的流量。
创建启用了 RDMA 的实例
以下步骤展示了如何创建实例,其中第一个网络接口配置为 gVNIC 接口,第二个网络接口配置为 IRDMA 网络接口:
控制台
在 Google Cloud 控制台中,前往创建实例页面。
如果出现提示,请选择您的项目并点击继续。
此时将显示创建实例页面,并显示机器配置窗格。
在机器配置窗格中,执行以下操作:
- 在名称字段中,指定实例的名称。如需了解详情,请参阅资源命名惯例。
可选:在可用区字段中,为此实例选择可用区。
选择您用于设置 RDMA 网络配置文件的可用区。
选择计算优化机器家族。
在系列列中,选择 H4D 机器系列。
在机器类型部分中,为实例选择机器类型。
在左侧导航菜单中,点击操作系统和存储空间。在显示的操作系统和存储空间窗格中,执行以下操作:
- 在操作系统和存储空间部分底部,点击更改。
- 在操作系统和版本列表中,选择支持 RDMA 的操作系统类型和版本。
- 确保将启动磁盘类型设置为 Hyperdisk Balanced。
- 点击窗格底部的选择以保存更改。
在左侧导航菜单中,点击网络。在显示的网络窗格中,执行以下操作:
- 前往网络接口部分。应该已经有一个标记为
default
的网络接口。 - 点击添加网络接口。在显示的新建网络接口部分中,执行以下操作:
- 在网络接口卡列表中,选择
IRDMA
。 - 在网络字段中,选择具有 RDMA 网络配置文件的 VPC 网络。
- 可选:在子网列表中,选择供实例使用的子网。
- 在 IP 栈类型字段中,确保其设置为 仅限 IPv4。
- 在外部 IPv4 地址列表中,选择无。
- 如需确认网络接口详细信息,请点击完成。
- 在网络接口卡列表中,选择
- 前往网络接口部分。应该已经有一个标记为
可选:为实例指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该实例,请点击创建。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用
gcloud compute instances create
命令,并至少添加两个--network-interface
标志,一个用于 GVNIC 接口,另一个用于 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
(可选):包含映像的映像项目。在预览期间,请使用自定义映像或 HPC 虚拟机映像。IMAGE
(可选):指定以下其中一项:SIZE
:可选:新磁盘的大小。 该值必须是整数。默认的计量单位为 GiB。NETWORK_NAME
(可选):网络的名称SUBNET_NAME
:要用于网络接口的子网的名称。如需查看网络中的子网列表,请使用gcloud compute networks subnets list
命令。对于 gVNIC 网络接口,您可以省略
network
和subnet
标志,而改用default
网络。STACK_TYPE
(可选):GVNIC 网络接口的栈类型。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
:您使用 RDMA 网络配置文件创建的网络的名称。RDMA_SUBNET_NAME
:RDMA 网络中子网的名称。
REST
如需创建配置为使用 RDMA 的实例,请向
instances.insert
方法发出POST
请求。包含networkInterfaces
对象,其中至少包含两个网络配置,一个用于 gVNIC 接口,另一个用于 IRDMA 接口。您可以根据需要自定义其余的实例属性。在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:要创建实例的项目的 IDZONE
:要在其中创建实例的可用区MACHINE_TYPE
:要使用的机器类型,例如h4d-highmem-192-lssd
INSTANCE_NAME
:新实例的名称IMAGE_PROJECT
(可选):映像所在的映像项目。IMAGE
(可选):指定以下其中一项:NETWORK_NAME
(可选):要与 gVNIC 网络接口搭配使用的网络的名称SUBNET_NAME
:要与 gVNIC 网络接口搭配使用的子网的名称对于 GVNIC 网络接口,您可以省略
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.googleapis.com/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.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`", "operationType": "insert", "targetLink": "https://www.googleapis.com/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.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38" "kind": "compute#operation" }
后续步骤
- 了解如何检查实例的状态,以了解其何时可用。
- 了解如何连接到您的实例。
- 了解创建实例时分配的 IP 地址。
- 了解如何创建双栈或仅限 IPv6 的实例。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-19。
-