本教學課程說明如何建立使用 H4D 機型的代管執行個體群組 (MIG)。MIG 會使用 Dynamic Workload Scheduler 彈性啟動消耗量模式,取得最多七天的運算資源。
建立 MIG 後,您就能將多部虛擬機器 (VM) 視為單一實體進行管理。MIG 中的每個 VM 都是以執行個體範本為基礎。MIG 會自動管理群組中的 VM,因此可提供高可用性和擴充性。如要進一步瞭解 MIG,請參閱代管執行個體群組。
如要瞭解 HPC VM 和 HPC 叢集建立選項,請參閱「HPC 叢集建立總覽」。
本教學課程的適用對象為 HPC 工程師、平台管理員和作業人員,以及有興趣為短期工作負載建立互連 HPC 執行個體群組的資料和 MPI 專家。產生的執行個體不會使用自動化調度管理工具來管理執行個體或排定工作時間。
目標
- 選用:要求先占配額。
- 選用:建立虛擬私有雲網路。
- 建立執行個體範本。
- 建立 MIG 和大小調整要求。
- 清除所用資源。
費用
本教學課程使用 Google Cloud的計費元件,包括:
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
- 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith 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.enablepermission. 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith 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.enablepermission. 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.networkAdmingcloud 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 授予您某個地區的先占配額後,所有適用資源只會消耗先占配額。如果這項配額用盡,您必須為 VM 資源申請額外的搶占型配額。
- 區域性 (單一區域) 代管執行個體群組:
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,可以略過本節,改用預設網路。
如要為
GVNIC網路介面建立主機網路,請參閱「建立及管理虛擬私有雲網路」。如果您只設定一個
GVNIC網路介面,可以使用預設虛擬私有雲網路,以及與執行個體位於相同區域的自動子網路。如要為
IRDMA網路介面建立網路,請參閱「使用 Falcon 虛擬私有雲網路設定檔建立虛擬私有雲網路」。Falcon 虛擬私有雲網路的最大傳輸單位 (MTU) 預設值為8896。- 選用:執行指令碼前,請列出 Falcon VPC 網路設定檔,確認有可用的設定檔。
gcloud compute network-profiles list
複製下列程式碼,並在 Linux 殼層視窗中執行。
#!/bin/bash # Set the number of GVNIC interfaces to create. You can create up to 9. NUM_GVNIC=NUMBER_OF_GVNIC # Create regular 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 Falcon VPC network for the Cloud RDMA network interface gcloud compute networks create RDMA_NAME_PREFIX-irdma \ --network-profile=ZONE-vpc-falcon \ --subnet-mode custom # Create a subnet in the Falcon VPC network gcloud 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 類型。REGION:要建立網路的區域。建立 Falcon 虛擬私有雲網路時,這必須對應至為--network-profile旗標指定的可用區。舉例來說,如果您將區域指定為europe-west4-b,則您的地區為europe-west4。IP_RANGE:虛擬私有雲網路外部的 IP 位址範圍,用於 SSH 防火牆規則。最佳做法是指定需要允許存取的特定 IP 位址範圍,而非所有 IPv4 或 IPv6 來源。請勿使用0.0.0.0/0或::/0做為來源範圍,因為這樣會允許來自所有 IPv4 或 IPv6 來源的流量,包括 Google Cloud以外的來源。RDMA_NAME_PREFIX:用於虛擬私有雲網路和子網路的名稱前置字元,這些網路和子網路使用 IRDMA NIC 類型。ZONE:要建立網路和運算執行個體的區域。使用us-central1-a或europe-west4-b。
選用:如要確認虛擬私有雲網路資源是否建立成功,請在 Google Cloud 控制台中檢查網路設定:
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
- 在清單中搜尋您在上一個步驟中建立的網路。
- 如要查看子網路、防火牆規則和其他網路設定,請按一下網路名稱。
INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:執行個體使用的 H4D 機器類型。IMAGE_FAMILY:您要使用的 OS 映像檔映像檔系列。 如需支援的作業系統清單,請參閱「支援的作業系統」。IMAGE_PROJECT:OS 映像檔的專案 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 網路介面專用的虛擬私有雲網路和子網路時使用的名稱前置字元。如果 H4D 執行個體未使用 Cloud RDMA,請省略 IRDMA 介面的
--network-interface欄位。RUN_DURATION:您希望所要求執行個體執行的時間長度。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上d、h、m和s。例如,指定30m代表 30 分鐘,或指定1d2h3m4s代表 1 天 2 小時 3 分 4 秒。這個值必須介於 10 分鐘至七天之間。INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。MACHINE_TYPE:執行個體使用的機器類型。指定 H4D 機器類型。詳情請參閱 H4D 機器類型。IMAGE_FAMILY:您要使用的 OS 映像檔映像檔系列。 如需支援的作業系統清單,請參閱「支援的作業系統」。IMAGE_PROJECT:OS 映像檔的專案 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 網路介面專用的虛擬私有雲網路和子網路時使用的名稱前置字元。如果 H4D 執行個體未使用 Cloud RDMA,請省略 IRDMA 介面的
--network-interface欄位。RUN_DURATION:您希望所要求執行個體執行的時間長度 (以秒為單位)。這個值必須介於600(600 秒,也就是 10 分鐘) 和604800(604,800 秒,也就是七天) 之間。-
如要建立可用區 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,刪除 VM 執行個體時,系統不會自動刪除磁碟。你可以透過下列任一方式刪除磁碟:控制台
- 前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
選取包含您在本教學課程中建立磁碟的資料列。確認每個磁碟的「In use by」(使用者) 欄都是空白。
依序點選 「Delete」(刪除) 和「Delete」(刪除) 確認操作。
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 :要刪除的磁碟名稱
刪除網路。
- 進一步瞭解代管執行個體群組
- 進一步瞭解 Dynamic Workload Scheduler 彈性啟動和其他用量選項
- 瞭解 H4D 機器系列
- 查看、取消或刪除大小調整要求
選用:要求先占配額
新增至 MIG 的 VM 執行個體會耗用地區配額。VM 執行個體、執行個體群組、CPU 和磁碟的配額可供所屬區域中的任何 VM 執行個體使用,無論所在可用區為何。
使用彈性啟動時,配額可以是標準配額或可搶占配額。
如要申請搶占型配額,請按照「申請調整配額」一文中的步驟操作。
需要的配額類型
如要使用執行個體群組,您必須確保該群組會使用的所有資源仍有配額 (例如 CPU 配額),群組資源本身的配額也充足無虞。視執行個體使用的機器類型而定,H4D 執行個體可能會使用下列配額類型:
| 資源 | 標準配額 | 先占配額 |
|---|---|---|
| CPU | CPUS_PER_VM_FAMILY |
Preemptible CPUs |
| 本機 SSD | Local SSD per machine family (GB) |
Preemptible Local SSDs (GB) |
如要在本教學課程中建立資源,可能需要下列額外的區域配額:
選用:建立虛擬私有雲網路
除非選擇停用,否則每個專案都會具備預設網路,可用於為執行個體提供網路連線。建立 VM 時,您可以指定虛擬私有雲網路和子網路。如果省略這項設定,系統會使用預設的網路和子網路。
您可以將 H4D 執行個體設定為使用 Cloud RDMA。Cloud RDMA 使用 IRDMA 網路驅動程式,支援 Compute Engine 執行個體之間的遠端直接記憶體存取 (RDMA),提供低延遲的可靠訊息傳遞功能。
在本教學課程中,您將:
如要設定與執行個體搭配使用的 Falcon 虛擬私有雲網路,您可以按照文件中的操作說明,或使用提供的指令碼。
操作指南
如要建立網路,請按照下列操作說明進行:
指令碼
每個執行個體最多可建立九個 gVNIC 網路介面和一個 IRDMA 網路介面。每個網路介面都必須連接到不同的網路。如要建立網路,可以使用下列指令碼,為 gVNIC 建立兩個網路,並為 IRDMA 建立一個網路。
建立執行個體範本
如要使用「彈性啟動」消耗量選項,請建立空白的 MIG,然後為該 MIG 建立規模調整要求。當您要求的容量可用時,Compute Engine 會佈建該容量,並在 MIG 中建立執行個體。您最多可取得七天的資源。
如要為 MIG 中的每個執行個體指定執行個體和耗用量屬性,請使用下列其中一種方法建立執行個體範本:
gcloud
如要建立區域執行個體範本,請使用
gcloud compute instance-templates create 指令。
gcloud 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
如要建立區域執行個體範本,請對
regionInstanceTemplates.insert 方法發出 POST 要求。
POST https://compute.googleapis.com/compute/v1/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