Questo documento spiega come creare un criterio di posizionamento distribuito e applicarlo a una o più istanze di macchine virtuali (VM) per una maggiore affidabilità.
Un criterio di posizionamento distribuito specifica che le VM devono essere fisicamente lontane l'una dall'altra posizionandoli in domini di disponibilità diversi. Un dominio di disponibilità è un hardware isolato e distinto in un data center con sistema di alimentazione, raffreddamento e sorgente di rete. L'utilizzo di un criterio di posizionamento distribuito consente di ridurre l'impatto di un guasto hardware sottostante o di un evento di manutenzione a tutte le tue VM.
Prima di iniziare
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
la procedura di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione
Compute Engine come segue.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Set a default region and zone.
-
Per creare criteri di posizionamento:
compute.resourcePolicies.create
nel progetto -
Per applicare un criterio di posizionamento alle VM esistenti:
compute.instances.addResourcePolicies
nel progetto -
Per creare le VM:
compute.instances.create
nel progetto- Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnly
sull'immagine - Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnly
nello snapshot - Per utilizzare un modello di istanza per creare la VM:
compute.instanceTemplates.useReadOnly
nel modello di istanza - Per assegnare una rete legacy alla VM,:
compute.networks.use
nel progetto - Per specificare un indirizzo IP statico per la VM:
compute.addresses.use
nel progetto - Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIp
nel progetto - Per specificare una subnet per la VM:
compute.subnetworks.use
nel progetto o nella subnet scelta - Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC,:
compute.subnetworks.useExternalIp
nel progetto o nella subnet scelta - Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadata
nel progetto - Per impostare i tag per la VM:
compute.instances.setTags
sulla VM - Per impostare le etichette per la VM:
compute.instances.setLabels
sulla VM - Per impostare un account di servizio che la VM deve utilizzare:
compute.instances.setServiceAccount
sulla VM - Per creare un nuovo disco per la VM:
compute.disks.create
nel progetto - Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura:
compute.disks.use
sul disco - Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnly
sul disco
-
Per creare un modello di istanza:
compute.instanceTemplates.create
nel progetto -
Per creare un gruppo di istanze gestite a livello di zona o di regione:
compute.instanceGroupManagers.create
nel progetto POLICY_NAME
: il nome del criterio di posizionamento distribuito per creare.DOMAIN_COUNT
: il numero distinto di disponibilità in cui posizionare le VM. Il valore deve essere compreso tra1
e8
.REGION
: la regione in cui creare il criterio.PROJECT_ID
: l'ID del progetto in cui vuoi per la creazione del criterio.REGION
: la regione in cui vuoi creare .POLICY_NAME
: il nome del criterio di posizionamento distribuito per creare.DOMAIN_COUNT
: il numero distinto di disponibilità in cui posizionare le VM. Il valore deve essere compreso tra1
e8
.- Applica un criterio di posizionamento distribuito a una VM esistente.
- Crea una VM con un criterio di posizionamento distribuito.
- Crea un modello di istanza con un criterio di posizionamento distribuito.
- Applica un criterio di posizionamento distribuito alle VM in un gruppo di istanze gestite.
Se il criterio di posizionamento distribuito ha due o più domini di disponibilità, puoi aggiungerlo a una VM senza arrestarla. Altrimenti, se la tua diffusione il criterio di posizionamento specifica un solo dominio, è necessario prima interrompere la VM prima e applicare il criterio di posizionamento.
La VM e il criterio di posizionamento distribuito devono trovarsi nella stessa regione. Ad esempio, se il criterio di posizionamento si trova nella regione
us-central1
, la VM deve trovarsi in una zona inus-central1
. Per eseguire la migrazione di una VM a un'altra regione, quindi Spostare una VM tra zone o regioni.VM_NAME
: il nome di una VM esistente.POLICY_NAME
: il nome di un posizionamento distribuito esistente .ZONE
: la zona in cui si trova la VM, che deve essere all'interno della regione in cui si trova il criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto in cui è stata creata la distribuzione il criterio di posizionamento e la VM.ZONE
: la zona in cui si trova la VM, che deve essere all'interno della regione in cui si trova il criterio di posizionamento distribuito.VM_NAME
: il nome di una VM esistente.REGION
: la regione in cui il criterio di posizionamento distribuito in cui viene localizzato.POLICY_NAME
: il nome di un posizionamento distribuito esistente .VM_NAME
: il nome della VM da creare.MACHINE_TYPE
: tipo di macchina per la VM.POLICY_NAME
: il nome di un posizionamento distribuito esistente .ZONE
: la zona in cui creare la VM.PROJECT_ID
: l'ID del progetto in cui è stata creata la distribuzione criterio di posizionamento.ZONE
: la zona in cui creare la VM e in cui del tipo di macchina. Puoi specificare solo un tipo di macchina disponibile all'interno della stessa regione del criterio di posizionamento distribuito.VM_NAME
: il nome della VM da creare.MACHINE_TYPE
: tipo di macchina per la VM.REGION
: la regione in cui il criterio di posizionamento distribuito in cui viene localizzato.POLICY_NAME
: il nome di un posizionamento distribuito esistente .INSTANCE_TEMPLATE_NAME
: il nome dell'istanza modello.MACHINE_TYPE
: tipo di macchina per le VM create utilizzando il modello di istanza.POLICY_NAME
: il nome di un posizionamento distribuito esistente .Per creare un modello di istanza globale: Metodo
instanceTemplates.insert
.Per creare un modello di istanza regionale: Metodo
regionInstanceTemplates.insert
.PROJECT_ID
: l'ID del progetto in cui è stata creata la distribuzione criterio di posizionamento.INSTANCE_TEMPLATE_NAME
: il nome dell'istanza modello.IMAGE
oIMAGE_FAMILY
: specificane uno dei seguenti:IMAGE
: una versione specifica dell'immagine del sistema operativo; della ad esempiodebian-10-buster-v20200309
.IMAGE_FAMILY
: un famiglia di immagini. Questo specifica l'immagine del sistema operativo più recente e non deprecata. Ad esempio, se specifichifamily/debian-10
, la versione più recente della famiglia di immagini Debian 10 . Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta Best practice per le famiglie di immagini.
MACHINE_TYPE
: tipo di macchina per le VM create utilizzando il modello di istanza.POLICY_NAME
: il nome di un posizionamento distribuito esistente .Crea un gruppo di istanze gestite con lo stesso criterio di posizionamento distribuito.
Applica il criterio di posizionamento distribuito a un gruppo di istanze gestite esistente.
MIG_NAME
: il nome del gruppo di istanze gestite da creare.REGION
: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere alla regione in cui si trova il criterio di posizionamento distribuito.SIZE
: la dimensione del gruppo di istanze gestite.INSTANCE_TEMPLATE_NAME
: il nome di un elemento esistente che specifica un criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto in cui è stata creata la distribuzione il criterio di posizionamento e il modello di istanza che specifica il posizionamento .REGION
: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere alla regione in cui si trova il criterio di posizionamento distribuito.MIG_NAME
: il nome del gruppo di istanze gestite da creare.INSTANCE_TEMPLATE_NAME
: il nome di un elemento esistente che specifica un criterio di posizionamento distribuito.SIZE
: la dimensione del gruppo di istanze gestite.MIG_NAME
: il nome di un gruppo di istanze gestite esistente.REGION
: la regione in cui si trova il gruppo di istanze gestite. Puoi applicare il criterio di posizionamento distribuito solo a un gruppo di istanze gestite che si trova nello stesso regione.INSTANCE_TEMPLATE_NAME
: il nome di un elemento esistente che specifica un criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto che hai utilizzato per creare un gruppo di istanze gestite esistente, il criterio di posizionamento distribuito e il modello di istanza che specifica il criterio di posizionamento distribuito.REGION
: la regione in cui si trova il gruppo di istanze gestite. Puoi applicare il criterio di posizionamento distribuito solo a un gruppo di istanze gestite che si trova nello stesso regione.MIG_NAME
: il nome di un gruppo di istanze gestite esistente.INSTANCE_TEMPLATE_NAME
: il nome di un elemento esistente che specifica un criterio di posizionamento distribuito.Scopri come visualizza criteri di posizionamento.
Scopri come sostituire, rimuovere o eliminare i criteri di posizionamento.
Scopri come eseguire queste operazioni con una VM che specifica un criterio di posizionamento:
Scopri di più sulle processo di migrazione live durante gli eventi di manutenzione.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
Per maggiori informazioni, consulta Autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare e applicare un criterio di posizionamento distribuito alle VM, chiedi all'amministratore di concederti Ruolo IAM Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e applicare alle VM un criterio di posizionamento distribuito. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare e applicare un criterio di posizionamento distribuito alle VM, sono necessarie le autorizzazioni seguenti:
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.
Crea un criterio di posizionamento distribuito
Quando crei un criterio di posizionamento distribuito, puoi specificare fino a otto di disponibilità in cui posizionare le VM. A meno che tu non voglia testare del criterio di posizionamento distribuito alle VM, Google Cloud consiglia che specifica due o più domini di disponibilità. In questo modo ridurrai il rischio VM interessate da un singolo evento di manutenzione o guasto hardware.
Per creare un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per creare un criterio di posizionamento distribuito, utilizza il metodo Comando
gcloud compute resource-policies create group-placement
con il flag--availability-domain-count
.gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count=DOMAIN_COUNT \ --region=REGION
Sostituisci quanto segue:
REST
Per creare un criterio di posizionamento distribuito, invia una richiesta
POST
a MetodoresourcePolicies.insert
. Nel corpo della richiesta, includi il campoavailabilityDomainCount
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
Sostituisci quanto segue:
Applica criteri di posizionamento distribuito
Puoi applicare un criterio di posizionamento distribuito a una VM esistente oppure quando crei VM, modelli di istanza o MIG.
Creare una risorsa Compute Engine che specifichi un posizionamento distribuito o applica il criterio di posizionamento distribuito a una VM esistente, seleziona uno dei utilizza i seguenti metodi:
Applica un criterio di posizionamento distribuito a una VM esistente
Prima di applicare un criterio di posizionamento distribuito a una VM esistente, esamina il seguenti:
In caso contrario, l'applicazione del criterio di posizionamento distribuito alla VM non riuscirà. Se la VM specifica già un criterio di posizionamento e vuoi sostituirlo, quindi consulta Sostituire un criterio di posizionamento in una VM .
Per applicare un criterio di posizionamento distribuito a una VM esistente, seleziona una delle le seguenti opzioni:
gcloud
Per applicare un criterio di posizionamento distribuito a una VM esistente, utilizza Comando
gcloud compute instances add-resource-policies
con il flag--resource-policies
.gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=POLICY_NAME \ --zone=ZONE
Sostituisci quanto segue:
REST
Per applicare un criterio di posizionamento distribuito a una VM esistente, effettua una richiesta
POST
alla Metodoinstances.addResourcePolicies
. Nel corpo della richiesta, includi il camporesourcePolicies
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies { "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
Sostituisci quanto segue:
Crea una VM con un criterio di posizionamento distribuito
Puoi creare una VM con un criterio di posizionamento distribuito solo in una zona all'interno del nella stessa regione del criterio di posizionamento.
Per creare una VM che specifichi un criterio di posizionamento distribuito, seleziona una delle le seguenti opzioni:
gcloud
Per creare una VM che specifica un criterio di posizionamento distribuito, utilizza Comando
gcloud compute instances create
con il flag--resource-policies
.gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
Sostituisci quanto segue:
REST
Per creare una VM che specifica un criterio di posizionamento distribuito, crea un
POST
richiesta alla Metodoinstances.insert
. Nel corpo della richiesta, includi il camporesourcePolicies
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
Sostituisci quanto segue:
Per saperne di più sulle opzioni di configurazione per creare una VM, consulta Crea e avvia un'istanza VM.
Crea un modello di istanza con un criterio di posizionamento distribuito
Se vuoi creare un modello di istanza regionale, devi creare il nella stessa regione del criterio di posizionamento distribuito. Altrimenti, la creazione l'errore del modello di istanza.
Dopo aver creato un modello di istanza, puoi utilizzarlo per:
Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il Comando
gcloud compute instance-templates create
con il flag--resource-policies
.Ad esempio, per creare un modello di istanza globale che specifichi una distribuzione criterio di posizionamento, esegui questo comando:
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
Sostituisci quanto segue:
REST
Per creare un modello di istanza che specifichi un criterio di posizionamento distribuito, effettua una richiesta
POST
a uno dei seguenti metodi:Nel corpo della richiesta, specifica il campo
resourcePolicies
.Ad esempio, per creare un modello di istanza globale che specifichi una distribuzione criterio di posizionamento, effettua una richiesta
POST
come segue:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ] } }
Sostituisci quanto segue:
Per ulteriori informazioni sulle opzioni di configurazione per creare un'istanza vedi il modello Creare modelli di istanza.
Applica un criterio di posizionamento distribuito alle VM in un gruppo di istanze gestite
Dopo crea un modello di istanza che specifichi criterio di posizionamento distribuito, puoi usare il modello per:
Se vuoi applicare un criterio di posizionamento distribuito a un gruppo di istanze gestite, creando o applicando il criterio a un gruppo di istanze gestite a livello di regione con qualsiasi zona singola forma di distribuzione è consigliato. In questo modo, ogni volta che un gruppo di istanze gestite a livello regionale deve fare lo scale out creando VM, seleziona la zona in cui creare le VM in base alle tue quote e requisiti hardware.
Crea un gruppo di istanze gestite con un criterio di posizionamento distribuito
Puoi creare VM che specificano un criterio di posizionamento distribuito solo se le VM che si trovano nella stessa regione del criterio di posizionamento.
crea un gruppo di istanze gestite mediante un modello di istanza che specifica un posizionamento distribuito. criterio, seleziona una delle seguenti opzioni:
gcloud
crea un gruppo di istanze gestite utilizzando un modello di istanza che specifica una distribuzione criterio di posizionamento, utilizza Comando
gcloud compute instance-groups managed create
.Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e any-single-zone, esegui questo comando:
gcloud compute instance-groups managed create MIG_NAME \ --region=REGION \ --size=SIZE \ --target-distribution-shape=any-single-zone \ --template=INSTANCE_TEMPLATE_NAME
Sostituisci quanto segue:
REST
crea un gruppo di istanze gestite utilizzando un modello di istanza che specifica una distribuzione criterio di posizionamento, invia una richiesta
POST
instanceGroupManagers.insert
oregionInstanceGroupManagers.insert
di machine learning.Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e qualsiasi-zona-singola, effettua una richiesta
POST
come segue:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "MIG_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "targetSize": SIZE, "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE" } }
Sostituisci quanto segue:
Per ulteriori informazioni sulle opzioni di configurazione per creare gruppi di istanze gestite, consulta Scenari di base per la creazione di gruppi di istanze gestite.
Applica un criterio di posizionamento distribuito a un gruppo di istanze gestite esistente
Puoi applicare un criterio di posizionamento compatto a un gruppo di istanze gestite esistente solo se il gruppo di istanze gestite viene situato nella stessa regione del criterio di posizionamento o, per i gruppi di istanze gestite a livello di zona, in una zona all'interno della stessa regione del criterio di posizionamento.
Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un posizionamento distribuito. criterio, seleziona una delle seguenti opzioni:
gcloud
Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi una distribuzione criterio di posizionamento, utilizza Comando
gcloud compute instance-groups managed rolling-action start-update
.Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo che utilizzi un modello di istanza specifica un criterio di posizionamento distribuito e sostituire le VM esistenti un gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, esegui questo comando :
gcloud compute instance-groups managed rolling-action start-update MIG_NAME \ --region=REGION \ --type=proactive \ --version=template=INSTANCE_TEMPLATE_NAME
Sostituisci quanto segue:
REST
Aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi una distribuzione criterio di posizionamento e applicare automaticamente le proprietà del modello il criterio di posizionamento alle VM esistenti nel gruppo di istanze gestite, effettua una richiesta
PATCH
a ilinstanceGroupManagers.insert
oregionInstanceGroupManagers.insert
di machine learning.Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo che utilizzi un modello di istanza specifica un criterio di posizionamento distribuito e sostituire le VM esistenti gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, apporta le seguenti modifiche Richiesta di
PATCH
:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "updatePolicy": { "type": "PROACTIVE" } }
Sostituisci quanto segue:
Per saperne di più sulle opzioni di configurazione per aggiornare le VM in un gruppo di istanze gestite, vedi Aggiornare e applicare nuove configurazioni alle VM in un gruppo di istanze gestite.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-07-12 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -