本教程将向您展示如何创建使用 H4D HPC 优化型机器类型的托管式实例组 (MIG)。MIG 使用动态工作负载调度器 flex-start 消耗模型来获取最多七天的计算资源。
创建 MIG 后,您可以将多个虚拟机 (VM) 作为单个实体进行管理。在 MIG 中,每个虚拟机均基于一个实例模板。通过自动管理组中的虚拟机,MIG 可提供高可用性和可伸缩性。如需详细了解 MIG,请参阅托管式实例组。
如需了解 HPC 虚拟机和 HPC 集群创建选项,请参阅 HPC 集群创建概览。
本教程适用于 HPC 工程师、平台管理员和运维人员,以及对创建一组互连的 HPC 实例来处理短时工作负载感兴趣的数据和 MPI 专家。生成的实例不使用编排器进行实例管理或作业调度。
目标
- 可选:申请抢占式配额。
- 可选:创建虚拟私有云网络。
- 创建一个实例模板。
- 创建 MIG 和调整大小请求。
- 清理。
费用
本教程使用 Google Cloud的收费组件,包括:
如需根据您的预计使用量来估算费用,请使用价格计算器。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1,roles/compute.networkAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
- 标准配额:如果您的项目没有抢占式配额,并且您从未申请过抢占式配额,则实例资源会使用标准配额。
- 抢占式配额:申请抢占式配额有助于提高配额的可获取性,因为抢占式配额是为临时资源提供的单独配额。不过,在 Compute Engine 授予您某个区域的抢占式配额后,所有适用的资源都只会使用抢占式配额。如果此配额用尽,您必须为虚拟机资源申请额外的抢占式配额。
- 可用区(单可用区)代管式实例组:
Instance group managers
和Instance groups
Google Cloud Hyperdisk:
Hyperdisk Balanced Capacity (GB)
Hyperdisk Balanced Throughput (MB/s)
Hyperdisk Balanced IOPS
- 如果您想将 H4D 实例配置为使用 Cloud RDMA,请完成本部分中的步骤。
- 如果您不想使用 Cloud RDMA,可以跳过此部分,改用默认网络。
- NIC 类型
GVNIC
:使用gve
驱动程序处理 TCP/IP 和互联网流量,以实现正常的虚拟机间和虚拟机与互联网之间的通信。 - NIC 类型
IRDMA
:使用 IDPF/iRDMA 驱动程序在实例之间实现 Cloud RDMA 网络。 如需为
GVNIC
网络接口创建主机网络,请参阅创建和管理 VPC 网络。如果您仅配置一个
GVNIC
网络接口,则可以使用默认 VPC 网络以及与实例位于同一区域的自动子网。如需为
IRDMA
网络接口创建网络,请参阅创建具有 RDMA 网络配置文件的 VPC 网络。 使用 RDMA 网络的最大传输单元 (MTU) 的默认值,即8896
。- 可选:在运行脚本之前,列出 RDMA 网络配置文件以验证是否有可用的配置文件。
gcloud beta compute network-profiles list
复制以下代码,然后在 Linux shell 窗口中运行该代码。
#!/bin/bash # Set the number of GVNIC interfaces to create. You can create up to 9. NUM_GVNIC=NUMBER_OF_GVNIC # Create standard VPC (networks and subnets) for the GVNIC interfaces for N in $(seq 0 $(($NUM_GVNIC - 1))); do gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \ --subnet-mode=custom gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --region=REGION \ --range=10.$N.0.0/16 gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=10.0.0.0/8 done # 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 a firewall rule for the external IP address for the # first GVNIC network 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 a network for the RDMA over Falcon network interface gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \ --network-profile=ZONE-vpc-falcon \ --subnet-mode custom # Create a subnet for the RDMA network gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \ --network=RDMA_NAME_PREFIX-irdma \ --region=REGION \ --range=10.2.0.0/16 # offset to avoid overlap with GVNIC subnet ranges
替换以下内容:
NUMBER_OF_GVNIC
:要创建的 GVNIC 接口的数量。 指定一个介于 1 到 9 之间的数字。GVNIC_NAME_PREFIX
:用于使用 GVNIC NIC 类型的标准 VPC 网络和子网的名称前缀。REGION
:您希望创建网络的区域。此区域必须与创建 RDMA 网络时为--network-profile
标志指定的可用区相对应。例如,如果您将可用区指定为europe-west4-b
,则您的区域为europe-west4
。IP_RANGE
:VPC 网络之外的 IP 地址范围,用于 SSH 防火墙规则。 最佳实践是指定您需要允许访问的特定来源 IP 地址范围,而不是所有 IPv4 或 IPv6 来源。 请勿使用0.0.0.0/0
或::/0
作为来源范围,因为这会允许来自所有 IPv4 或 IPv6 来源(包括 Google Cloud外部的来源)的流量。RDMA_NAME_PREFIX
:用于使用 IRDMA NIC 类型的 VPC 网络和子网的名称前缀。ZONE
:您希望在其中创建网络和计算实例的可用区。请使用us-central1-a
或europe-west4-b
。
可选:如需验证 VPC 网络资源是否已成功创建,请在 Google Cloud 控制台中检查网络设置:
- 在 Google Cloud 控制台中,前往 VPC 网络页面。
- 在列表中搜索您在上一步中创建的网络。
- 如需查看子网、防火墙规则和其他网络设置,请点击网络的名称。
INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:要用于实例的 H4D 机器类型。IMAGE_FAMILY
:您要使用的操作系统映像所属的映像系列。如需查看受支持操作系统的列表,请参阅支持的操作系统。IMAGE_PROJECT
:操作系统映像的项目 ID。REGION
:要创建实例模板的区域。 指定您要使用的机器类型所在的区域。DISK_SIZE
:启动磁盘的大小(以 GiB 为单位)。GVNIC_NAME_PREFIX
:您在为 gVNIC 接口创建标准 VPC 网络和子网时使用的名称前缀。如果您使用的是默认网络,请仅添加一个
--network-interface
字段,并将nic-type
字段设置为GVNIC
。此外,还应省略此网络接口的network
和subnetwork
设置。STACK_TYPE
(可选):要用于 gVNIC 接口的栈类型。 请指定IPV4_ONLY
或IPV4_IPV6
。 如果您未指定值,系统会默认使用IPV4_ONLY
。EXTERNAL_IPV4_ADDRESS
(可选):要与 gVNIC 网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址。 执行下列其中一项操作:- 指定子网中的有效 IPv4 地址。
- 如果您不希望网络接口具有外部 IP 地址,请使用
no-address
标志。 - 如果您希望网络接口接收临时外部 IP 地址,请指定
address=''
。
如需为 GVNIC 网络接口指定外部 IPv6 地址,请改用
--external-ipv6-address
标志。RDMA_NAME_PREFIX
:您在为 IRDMA 网络接口创建 VPC 网络和子网时使用的名称前缀。如果您未将 Cloud RDMA 与 H4D 实例搭配使用,请省略 IRDMA 接口的
--network-interface
字段。RUN_DURATION
:您希望所请求的实例运行的时长。您必须将该值的格式设置为天数、小时数、分钟数或秒数,并分别添加对应的后缀d
、h
、m
或s
。例如,指定30m
表示 30 分钟,或指定1d2h3m4s
表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:要用于实例的机器类型。指定 H4D 机器类型。如需了解详情,请参阅 H4D 机器类型。IMAGE_FAMILY
:您要使用的操作系统映像所属的映像系列。 如需查看受支持操作系统的列表,请参阅支持的操作系统。IMAGE_PROJECT
:操作系统映像的项目 ID。REGION
:要创建实例模板的区域。 指定您要使用的机器类型所在的区域。 如需了解区域,请参阅区域和可用区。DISK_SIZE
:启动磁盘的大小(以 GiB 为单位)。GVNIC_NAME_PREFIX
:您在为 gVNIC 接口创建标准 VPC 网络和子网时使用的名称前缀。如果您使用的是默认网络,请仅添加一个
--network-interface
字段,并将nic-type
字段设置为GVNIC
。此外,还应省略此网络接口的network
和subnetwork
设置。EXTERNAL_IPV4_ADDRESS
(可选):要与 gVNIC 网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址。如需为 GVNIC 网络接口指定外部 IPv6 地址,请改用
--external-ipv6-address
标志。RDMA_NAME_PREFIX
:您在为 IRDMA 网络接口创建 VPC 网络和子网时使用的名称前缀。如果您未将 Cloud RDMA 与 H4D 实例搭配使用,请省略 IRDMA 接口的
--network-interface
字段。RUN_DURATION
:您希望所请求的实例运行的时长(以秒为单位)。该值必须介于600
(600 秒,即 10 分钟)到604800
(604,800 秒,即 7 天)之间。-
如需创建可用区级 MIG,请使用
instance-groups managed create
命令,如下所示。gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --default-action-on-vm-failure=do-nothing \ --zone=ZONE
-
如需创建区域级 MIG,请使用
instance-groups managed create
命令,如下所示。gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --default-action-on-vm-failure=do-nothing \ --zones=ZONE \ --target-distribution-shape=any-single-zone \ --instance-redistribution-type=none
- 如需创建可用区级 MIG,请向
instanceGroupManagers.insert
方法发出POST
请求,如下所示。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
- 如需创建区域级 MIG,请向
regionInstanceGroupManagers.insert
方法发出POST
请求,如下所示。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE", "zones": [ { "zone": "projects/PROJECT_ID/zones/ZONE" } ] }, "updatePolicy": { "instanceRedistributionType": "NONE" }, "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
-
如需在可用区级 MIG 中创建规模调整请求,请使用
instance-groups managed resize-requests create
命令,如下所示:gcloud compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --zone=ZONE
- 如需在区域级 MIG 中创建规模调整请求,请使用 Beta 版
instance-groups managed resize-requests create
命令,如下所示:gcloud beta compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --region=REGION
- 如需在可用区级 MIG 中创建调整大小请求,请向
instanceGroupManagerResizeRequests.insert
方法发出POST
请求,如下所示:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
- 如需在区域级 MIG 中创建规模调整请求,请向
beta.regionInstanceGroupManagerResizeRequests.insert
方法发出POST
请求,如下所示:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
如果实例模板中磁盘的自动删除状态设置为
False
,则在删除虚拟机实例时,不会自动删除磁盘。您可以使用以下方法之一删除磁盘:控制台
- 在 Google Cloud 控制台中,前往磁盘页面。
选择包含您在本教程中创建的磁盘的行。确保每个磁盘的使用方列为空。
点击
删除,然后点击删除进行确认。
gcloud
使用
gcloud compute disks delete
命令。gcloud compute disks delete DISK_NAME \ --project PROJECT_ID --zone ZONE
替换以下内容:
- DISK_NAME :要删除的磁盘的名称
- PROJECT_ID:包含相应磁盘的项目的 ID
- ZONE:磁盘的可用区
REST
使用
disks.delete
方法删除磁盘。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
替换以下内容:
- PROJECT_ID:包含相应磁盘的项目的 ID
- ZONE:磁盘的可用区
- DISK_NAME :要删除的磁盘的名称
删除网络。
- 详细了解托管式实例组
- 详细了解动态工作负载调度器灵活启动和其他使用选项
- 了解 H4D 机器系列
- 查看、取消或删除调整大小请求
可选:申请抢占式配额
添加到 MIG 的虚拟机实例会消耗区域配额。虚拟机实例、实例组、CPU 和磁盘配额可以由该区域中的任何虚拟机实例使用,无论虚拟机实例在哪个可用区。
使用 Flex-start 时,配额可以是标准配额,也可以是抢占式配额。
您可以按照申请配额调整中记录的步骤申请抢占式配额。
所需的配额类型
为了使用实例组,您必须具有实例组使用的所有资源的可用配额(例如 CPU 配额)以及实例组资源本身的可用配额。对于 H4D 实例,可以使用以下配额类型,具体取决于实例使用的机器类型:
资源 | 标准配额 | 抢占式配额 |
---|---|---|
CPU | CPUS_PER_VM_FAMILY |
Preemptible CPUs |
本地 SSD | Local SSD per machine family (GB) |
Preemptible Local SSDs (GB) |
如需创建本教程中的资源,可能需要以下额外的区域配额:
可选:创建 VPC 网络
除非您选择停用默认网络,否则每个项目都有一个默认网络,可用于为实例提供网络连接。创建虚拟机时,您可以指定 VPC 网络和子网。如果您省略此配置,则系统会使用默认网络和子网。
H4D 实例可以配置为使用 Cloud RDMA。Cloud RDMA 通过使用 IRDMA 网络驱动程序在 Compute Engine 实例之间支持远程直接内存访问 (RDMA),从而实现低延迟的可靠消息传递功能。
在本教程中:
启用 RDMA 的实例至少需要两个网络接口 (NIC):
使用 Cloud RDMA 的实例只能有一个 IRDMA
接口。您可以添加最多八个额外的 GVNIC
网络接口,使每个实例的总 NIC 数达到 10 个。
如需设置 Falcon VPC 网络以供实例使用,您可以按照文档中的说明操作,也可以使用提供的脚本。
说明指南
如需创建网络,您可以按照以下说明操作:
脚本
每个实例最多可以创建 9 个 GVNIC
网络接口和 1 个 IRDMA
网络接口。每个网络接口都必须连接到单独的网络。如需创建网络,您可以使用以下脚本,该脚本会为 GVNIC
创建两个网络,并为 IRDMA
创建一个网络。
创建实例模板
如需使用“灵活启动”消费选项,请先创建一个空的 MIG,然后为该 MIG 创建规模调整请求。当您请求的容量可用时,Compute Engine 会预配该容量并在 MIG 中创建实例。您最多可获得 7 天的资源。
如需为 MIG 中的每个实例指定实例和消耗属性,请使用以下方法之一创建实例模板:
gcloud
如需创建区域级实例模板,请使用
gcloud beta compute instance-templates create
命令。
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --instance-template-region=REGION \ --boot-disk-type=hyperdisk-balanced \ --boot-disk-size=DISK_SIZE \ --scopes=cloud-platform \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-0, \ subnet=GVNIC_NAME_PREFIX-sub-0, \ stack-type=STACK_TYPE, \ address=EXTERNAL_IPV4_ADDRESS \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-1, \ subnet=GVNIC_NAME_PREFIX-sub-1,no-address \ --network-interface=nic-type=IRDMA, \ network=RDMA_NAME_PREFIX-irdma, \ subnet=RDMA_NAME_PREFIX-irdma-sub, \ stack-type=IPV4_ONLY,no-address \ --reservation-affinity=none \ --instance-termination-action=DELETE \ --max-run-duration=RUN_DURATION \ --maintenance-policy=TERMINATE \ --provisioning-model=FLEX_START
替换以下内容:
REST
如需创建区域级实例模板,请向
beta regionInstanceTemplates.insert
方法发出 POST
请求。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates { "name":"INSTANCE_TEMPLATE_NAME", "properties":{ "disks":[ { "boot":true, "initializeParams":{ "diskSizeGb":"DISK_SIZE", "diskType":"hyperdisk-balanced", "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" }, "mode":"READ_WRITE", "type":"PERSISTENT" } ], "machineType":"MACHINE_TYPE", "networkInterfaces": [ { "network": "GVNIC_NAME_PREFIX-net-0", "subnetwork": "GVNIC_NAME_PREFIX-sub-0", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External IP", "natIP": "EXTERNAL_IPV4_ADDRESS" } ], "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "GVNIC_NAME_PREFIX-net-1", "subnetwork": "GVNIC_NAME_PREFIX-sub-1", "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "RDMA_NAME_PREFIX-irdma", "subnetwork": "RDMA_NAME_PREFIX-irdma-sub", "stackType": "IPV4_ONLY", "nicType": "IRDMA", } ], , "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "scheduling": { "instanceTerminationAction": "DELETE", "maxRunDuration": { "seconds": RUN_DURATION }, "onHostMaintenance": "TERMINATE", "provisioningModel": "FLEX_START" } } }
替换以下内容:
创建实例模板后,您可以查看该模板以查看其 ID 并检查其实例属性。
创建包含调整大小请求的 MIG
如需同时创建所有请求的灵活启动实例,请创建 MIG,然后在 MIG 中创建调整大小请求,如本部分所述。
创建 MIG
如需创建 MIG,请选择以下选项之一:
gcloud
按如下方式创建可用区级或区域级 MIG:
REST
按如下方式创建可用区级或区域级 MIG:
创建调整大小请求
如需在 MIG 中创建规模调整请求,请选择以下选项之一:
gcloud
按如下方式创建调整大小请求:
REST
在可用区级或区域级 MIG 中创建规模调整请求,如下所示:
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID