Questo tutorial mostra come creare un gruppo di istanze gestite (MIG) che utilizza un tipo di macchina H4D. Il MIG utilizza il modello di consumo con avvio flessibile di Dynamic Workload Scheduler per ottenere risorse di calcolo per un massimo di sette giorni.
La creazione di un MIG ti consente di gestire più macchine virtuali (VM) come singola entità. Ogni VM in un MIG si basa su un template di istanza. Gestendo automaticamente le VM nel gruppo, i MIG offrono alta disponibilità e scalabilità. Per scoprire di più sui MIG, consulta Gruppi di istanze gestite.
Per scoprire di più sulle opzioni di creazione di VM HPC e cluster HPC, consulta Panoramica della creazione di cluster HPC.
Questo tutorial è rivolto a ingegneri HPC, amministratori e operatori di piattaforme e a specialisti di dati e MPI interessati a creare un gruppo di istanze HPC interconnesse per carichi di lavoro di breve durata. Le istanze risultanti non utilizzano un orchestratore per la gestione delle istanze o la pianificazione dei job.
(Facoltativo) Richiedere una quota preemptive
Le istanze VM aggiunte al MIG utilizzano la quota regionale. Le quote per istanze VM, gruppi di istanze, CPU e dischi possono essere utilizzate da qualsiasi istanza VM nella regione, indipendentemente dalla zona.
La quota può essere standard o prerilasciabile quando utilizzi Flex-start.
- Quota standard: se il progetto non ha una quota prerilasciabile e non ne hai mai richiesta una, le risorse dell'istanza consumano la quota standard.
- Quota prerilasciabile: la richiesta di quote prerilasciabili può aiutarti a migliorare l'ottenimento delle quote fornendo quote separate per le risorse temporanee. Tuttavia, quando Compute Engine concede la quota prerilasciabile in una regione, tutte le risorse applicabili consumano solo la quota prerilasciabile. Se questa quota è esaurita, devi richiedere una quota prerilasciabile aggiuntiva per le risorse VM.
Puoi richiedere una quota preemptive seguendo i passaggi descritti in Richiedere un aggiustamento della quota.
Tipi di quota necessari
Per utilizzare i gruppi di istanze, devi avere una quota disponibile per tutte le risorse che il gruppo utilizza (ad esempio per le CPU) e una quota disponibile per la risorsa "gruppo". Per le istanze H4D, possono essere utilizzati i seguenti tipi di quota, a seconda del tipo di macchina utilizzato dalle istanze:
Risorsa | Quota standard | Quota preemptible |
---|---|---|
CPU | CPUS_PER_VM_FAMILY |
Preemptible CPUs |
SSD locali | Local SSD per machine family (GB) |
Preemptible Local SSDs (GB) |
Per creare le risorse in questo tutorial, potrebbe essere necessaria la seguente quota regionale aggiuntiva:
- Gruppo di istanze gestite per zona (una sola zona):
Instance group managers
eInstance groups
Google Cloud Hyperdisk:
Hyperdisk Balanced Capacity (GB)
Hyperdisk Balanced Throughput (MB/s)
Hyperdisk Balanced IOPS
(Facoltativo) Crea reti VPC
A meno che tu non scelga di disattivarla, ogni progetto ha una rete predefinita, che può essere utilizzata per fornire connettività di rete alle tue istanze. Quando crei una VM, puoi specificare una subnet e una rete VPC. Se ometti questa configurazione, vengono utilizzate la rete e la subnet predefinite.
Le istanze H4D possono essere configurate per utilizzare Cloud RDMA. Cloud RDMA consente funzionalità di messaggistica affidabili a bassa latenza utilizzando un driver di rete IRDMA che supporta l'accesso diretto alla memoria remota (RDMA) tra le istanze Compute Engine.
Per questo tutorial:
- Se vuoi configurare le istanze H4D per utilizzare Cloud RDMA, completa i passaggi descritti in questa sezione.
- Se non vuoi utilizzare Cloud RDMA, puoi saltare questa sezione e utilizzare la rete predefinita.
Le istanze abilitate a RDMA richiedono un minimo di due interfacce di rete (NIC):
- Tipo di NIC
GVNIC
: utilizza il drivergve
per il traffico TCP/IP e internet per la normale comunicazione VM-VM e VM-internet. - Tipo di NIC
IRDMA
: utilizza i driver IDPF/iRDMA per il networking Cloud RDMA tra le istanze.
Le istanze che utilizzano Cloud RDMA possono avere una sola interfaccia IRDMA
. Puoi
aggiungere fino a otto interfacce di rete GVNIC
aggiuntive per un totale di 10 NIC
per istanza.
Per configurare le reti VPC Falcon da utilizzare con le tue istanze, puoi seguire le istruzioni documentate o utilizzare lo script fornito.
Guide con istruzioni
Per creare le reti, puoi utilizzare le seguenti istruzioni:
Per creare le reti host per le interfacce di rete
GVNIC
, consulta Crea e gestisci le reti VPC.Se stai configurando una sola interfaccia di rete
GVNIC
, puoi utilizzare la rete VPC predefinita e la subnet automatica che si trova nella stessa regione dell'istanza.Per creare una rete per l'interfaccia di rete
IRDMA
, consulta Crea una rete VPC con un profilo di rete RDMA. Utilizza il valore predefinito per l'unità massima di trasmissione (MTU) per una rete RDMA, ovvero8896
.
Script
Puoi creare fino a nove interfacce di rete GVNIC
e una
interfaccia di rete IRDMA
per istanza. Ogni interfaccia di rete deve
essere collegata a una rete separata. Per creare le reti, puoi utilizzare il seguente script, che crea due reti per GVNIC
e una rete per IRDMA
.
- (Facoltativo) Prima di eseguire lo script, elenca i profili di rete RDMA per
verificare che ne sia disponibile uno.
gcloud beta compute network-profiles list
Copia il seguente codice ed eseguilo in una finestra della shell Linux.
#!/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
Sostituisci quanto segue:
NUMBER_OF_GVNIC
: il numero di interfacce GVNIC da creare. Specifica un numero compreso tra 1 e 9.GVNIC_NAME_PREFIX
: il prefisso del nome da utilizzare per la rete VPC e la subnet standard che utilizzano un tipo di NIC GVNIC.REGION
: la regione in cui vuoi creare le reti. Deve corrispondere alla zona specificata per il flag--network-profile
durante la creazione della rete RDMA. Ad esempio, se specifichi la zona comeeurope-west4-b
, la regione èeurope-west4
.IP_RANGE
: l'intervallo di indirizzi IP al di fuori della rete VPC da utilizzare per le regole firewall SSH. Come best practice, specifica gli intervalli di indirizzi IP specifici da cui devi consentire l'accesso, anziché tutte le origini IPv4 o IPv6. Non utilizzare0.0.0.0/0
o::/0
come intervallo di origine perché ciò consente il traffico da tutte le origini IPv4 o IPv6, incluse quelle esterne a Google Cloud.RDMA_NAME_PREFIX
: il prefisso del nome da utilizzare per la rete VPC e la subnet che utilizzano il tipo di NIC IRDMA.ZONE
: la zona in cui vuoi creare le reti e le istanze di computing. Utilizzaus-central1-a
oeurope-west4-b
.
(Facoltativo) Per verificare che le risorse di rete VPC siano state create correttamente, controlla le impostazioni di rete nella console Google Cloud :
- Nella console Google Cloud , vai alla pagina Reti VPC.
- Cerca nell'elenco le reti che hai creato nel passaggio precedente.
- Per visualizzare le subnet, le regole firewall e altre impostazioni di rete, fai clic sul nome della rete.
Crea un modello di istanza
Per utilizzare l'opzione di consumo con avvio flessibile, crea un gruppo di istanze gestite vuoto e poi crea una richiesta di ridimensionamento per il gruppo. Quando la capacità richiesta diventa disponibile, Compute Engine esegue il provisioning e crea le istanze nel MIG. Ottieni risorse per un massimo di sette giorni.
Per specificare le proprietà di istanza e consumo per ogni istanza nel MIG, crea un template di istanza utilizzando uno dei seguenti metodi:
gcloud
Per creare un template di istanza regionale, utilizza il
comando 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
Sostituisci quanto segue:
INSTANCE_TEMPLATE_NAME
: il nome del modello di istanza.MACHINE_TYPE
: il tipo di macchina H4D da utilizzare per l'istanza.IMAGE_FAMILY
: la famiglia di immagini dell'immagine del sistema operativo che vuoi utilizzare. Per un elenco dei sistemi operativi supportati, consulta Sistemi operativi supportati.IMAGE_PROJECT
: l'ID progetto dell'immagine del sistema operativo.REGION
: la regione in cui vuoi creare il template di istanza. Specifica una regione in cui è disponibile il tipo di macchina che vuoi utilizzare.DISK_SIZE
: le dimensioni del disco di avvio in GiB.GVNIC_NAME_PREFIX
: il prefisso del nome che hai utilizzato durante la creazione delle reti VPC e delle subnet standard per le interfacce gVNIC.Se utilizzi la rete predefinita, includi un solo campo
--network-interface
con il camponic-type
impostato suGVNIC
. Inoltre, ometti le impostazioninetwork
esubnetwork
per questa interfaccia di rete.STACK_TYPE
: (Facoltativo) il tipo di stack da utilizzare per l'interfaccia gVNIC. SpecificaIPV4_ONLY
oIPV4_IPV6
. Se non specifichi un valore, per impostazione predefinita viene utilizzatoIPV4_ONLY
.EXTERNAL_IPV4_ADDRESS
: (Facoltativo) un indirizzo IPv4 esterno statico da utilizzare con l'interfaccia di rete gVNIC. Devi aver prenotato un indirizzo IPv4 esterno in precedenza. Esegui una di queste operazioni:- Specifica un indirizzo IPv4 valido dalla subnet.
- Utilizza il flag
no-address
se non vuoi che l'interfaccia di rete abbia un indirizzo IP esterno. - Specifica
address=''
se vuoi che l'interfaccia di rete riceva un indirizzo IP esterno temporaneo.
Per specificare un indirizzo IPv6 esterno per l'interfaccia di rete GVNIC, utilizza il flag
--external-ipv6-address
.RDMA_NAME_PREFIX
: il prefisso del nome che hai utilizzato durante la creazione della rete VPC e della subnet per l'interfaccia di rete IRDMA.Se non utilizzi Cloud RDMA con le tue istanze H4D, ometti il campo
--network-interface
per l'interfaccia IRDMA.RUN_DURATION
: la durata per cui vuoi eseguire le istanze richieste. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguito rispettivamente dad
,h
,m
es
. Ad esempio, specifica30m
per 30 minuti o1d2h3m4s
per un giorno, due ore, tre minuti e quattro secondi. Il valore deve essere compreso tra 10 minuti e sette giorni.
REST
Per creare un template di istanza regionale, effettua una richiesta POST
al
metodo beta regionInstanceTemplates.insert
.
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" } } }
Sostituisci quanto segue:
INSTANCE_TEMPLATE_NAME
: il nome del modello di istanza.MACHINE_TYPE
: il tipo di macchina da utilizzare per l'istanza. Specifica un tipo di macchina H4D. Per saperne di più, consulta Tipi di macchine H4D.IMAGE_FAMILY
: la famiglia di immagini dell'immagine del sistema operativo che vuoi utilizzare. Per un elenco dei sistemi operativi supportati, consulta Sistemi operativi supportati.IMAGE_PROJECT
: l'ID progetto dell'immagine del sistema operativo.REGION
: la regione in cui vuoi creare il template di istanza. Specifica una regione in cui è disponibile il tipo di macchina che vuoi utilizzare. Per informazioni sulle regioni, vedi Regioni e zone.DISK_SIZE
: le dimensioni del disco di avvio in GiB.GVNIC_NAME_PREFIX
: il prefisso del nome che hai utilizzato durante la creazione delle reti VPC e delle subnet standard per le interfacce gVNIC.Se utilizzi la rete predefinita, includi un solo campo
--network-interface
con il camponic-type
impostato suGVNIC
. Inoltre, ometti le impostazioninetwork
esubnetwork
per questa interfaccia di rete.EXTERNAL_IPV4_ADDRESS
: (Facoltativo) un indirizzo IPv4 esterno statico da utilizzare con l'interfaccia di rete gVNIC. Devi aver prenotato un indirizzo IPv4 esterno in precedenza.Per specificare un indirizzo IPv6 esterno per l'interfaccia di rete GVNIC, utilizza il flag
--external-ipv6-address
.RDMA_NAME_PREFIX
: il prefisso del nome che hai utilizzato durante la creazione della rete VPC e della subnet per l'interfaccia di rete IRDMA.Se non utilizzi Cloud RDMA con le tue istanze H4D, ometti il campo
--network-interface
per l'interfaccia IRDMA.RUN_DURATION
: la durata, in secondi, per cui vuoi eseguire le istanze richieste. Il valore deve essere compreso tra600
, ovvero 600 secondi (10 minuti), e604800
, ovvero 604.800 secondi (sette giorni).
Dopo aver creato il modello di istanza, puoi visualizzarlo per vedere il suo ID e rivedere le proprietà dell'istanza.
Crea un MIG con una richiesta di ridimensionamento
Per creare tutte le istanze Flex-start richieste contemporaneamente, crea un gruppo di istanze gestite e poi crea una richiesta di ridimensionamento nel gruppo di istanze gestite come descritto in questa sezione.
Crea il MIG
Per creare il MIG, seleziona una delle seguenti opzioni:
gcloud
Crea un gruppo di istanze gestite a livello di zona o di regione nel seguente modo:
-
Per creare un MIG a livello di zona, utilizza il comando
instance-groups managed create
come segue.gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --default-action-on-vm-failure=do-nothing \ --zone=ZONE
-
Per creare un gruppo di istanze gestite a livello di regione, utilizza il comando
instance-groups managed create
come segue.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
REST
Crea un gruppo di istanze gestite a livello di zona o di regione nel seguente modo:
- Per creare un MIG a livello di zona, invia una richiesta
POST
al metodoinstanceGroupManagers.insert
come segue.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" } }
- Per creare un gruppo di istanze gestite a livello di regione, invia una richiesta
POST
al metodoregionInstanceGroupManagers.insert
come segue.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" } }
Crea la richiesta di ridimensionamento
Per creare la richiesta di ridimensionamento nel MIG, seleziona una delle seguenti opzioni:
gcloud
Crea una richiesta di ridimensionamento nel seguente modo:
-
Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di zona, utilizza il comando
instance-groups managed resize-requests create
come segue:gcloud compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --zone=ZONE
- Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di regione, utilizza il
comando beta
instance-groups managed resize-requests create
come segue:gcloud beta compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --region=REGION
REST
Crea una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di zona o di regione come segue:
- Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di zona, invia una richiesta
POST
al metodoinstanceGroupManagerResizeRequests.insert
come segue:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
- Per creare una richiesta di ridimensionamento in un gruppo di istanze gestite a livello di regione, invia una richiesta
POST
al metodobeta.regionInstanceGroupManagerResizeRequests.insert
come segue:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }