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 distanti l'una dall'altra posizionandole in domini di disponibilità diversi. Utilizza un criterio di posizionamento distribuito per assicurarti che le VM vengano posizionate su hardware diversi, riducendo l'impatto di guasti hardware sottostanti o ottimizzando la migrazione live.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
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
sul progetto -
Per creare delle VM:
compute.instances.create
sul progetto- Per utilizzare un'immagine personalizzata per creare la VM&:
compute.images.useReadOnly
nell'immagine - a utilizzare uno snapshot per creare la VM con i due punti
compute.snapshots.useReadOnly
nello snapshot - a utilizzare un modello di istanza per creare la VM&:
compute.instanceTemplates.useReadOnly
nel modello di istanza - ad assegnare una rete legacy alla VM e ai due punti
compute.networks.use
del progetto - Per specificare un indirizzo IP statico per la VM&:
compute.addresses.use
nel progetto - Per assegnare un indirizzo IP esterno alla VM quando si utilizza una rete legacy&due punti
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 - a impostare i metadati dell'istanza VM per VM&:
compute.instances.setMetadata
nel progetto - a impostare i tag per la VM con i due punti
compute.instances.setTags
sulla VM - a impostare le etichette per la VM con i due punti
compute.instances.setLabels
sulla VM - Per impostare un account di servizio affinché la VM utilizzi i due punti
compute.instances.setServiceAccount
sulla VM - a 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&due punti,
compute.disks.use
sul disco - Per collegare un disco esistente in modalità di sola lettura&due punti
compute.disks.useReadOnly
sul disco
-
Per creare un modello di istanza:
compute.instanceTemplates.create
sul 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 da creare.DOMAIN_COUNT
: il numero distinto di domini di disponibilità in cui posizionare le VM. Ogni dominio ha alimentazione, raffreddamento e networking indipendenti. Il valore deve essere compreso tra1
e8
, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.REGION
: la regione in cui creare il criterio.PROJECT_ID
: l'ID del progetto in cui vuoi creare il criterio.REGION
: la regione in cui vuoi creare il criterio.POLICY_NAME
: il nome del criterio di posizionamento distribuito da creare.DOMAIN_COUNT
: il numero distinto di domini di disponibilità in cui posizionare le VM. Ogni dominio ha alimentazione, raffreddamento e networking indipendenti. Il valore deve essere compreso tra1
e8
, ovvero il numero massimo di VM a cui puoi applicare un criterio di posizionamento distribuito.- 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 il criterio di posizionamento distribuito specifica un solo dominio, devi arrestare la VM prima di applicarvi 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
. Se devi eseguire la migrazione di una VM a un'altra regione, consulta Spostare una VM tra zone o regioni.VM_NAME
: il nome di una VM esistente.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.ZONE
: la zona in cui si trova la VM, che deve trovarsi all'interno della regione in cui si trova il criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto in cui si trovano il criterio di posizionamento distribuito e la VM.ZONE
: la zona in cui si trova la VM, che deve trovarsi 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 si trova il criterio di posizionamento distribuito.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.VM_NAME
: il nome della VM da creare.MACHINE_TYPE
: il tipo di macchina della VM.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.ZONE
: la zona in cui creare la VM.PROJECT_ID
: l'ID del progetto in cui si trova il criterio di posizionamento distribuito.ZONE
: la zona in cui creare la VM e dove si trova il 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
: il tipo di macchina della VM.REGION
: la regione in cui si trova il criterio di posizionamento distribuito.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.INSTANCE_TEMPLATE_NAME
: il nome del modello di istanza.MACHINE_TYPE
: il tipo di macchina per le VM create utilizzando il modello di istanza.POLICY_NAME
: il nome di un criterio di posizionamento distribuito esistente.PROJECT_ID
: l'ID del progetto in cui si trova il criterio di posizionamento distribuito.INSTANCE_TEMPLATE_NAME
: il nome del modello di istanza.IMAGE
oIMAGE_FAMILY
: specifica una delle seguenti opzioni:IMAGE
: una versione specifica dell'immagine del sistema operativo, ad esempiodebian-10-buster-v20200309
.IMAGE_FAMILY
: una famiglia di immagini. Specifica l'immagine del sistema operativo più recente non deprecata. Ad esempio, se specifichifamily/debian-10
, viene utilizzata l'ultima versione nella famiglia di immagini Debian 10. Per ulteriori informazioni sull'uso delle famiglie di immagini, consulta Best practice per le famiglie di immagini.
MACHINE_TYPE
: il tipo di macchina per le VM create utilizzando il modello di istanza.REGION
: la regione in cui si trova il criterio di posizionamento distribuito.POLICY_NAME
: il nome di un criterio di 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 a quella in cui si trova il criterio di posizionamento distribuito.SIZE
: la dimensione del gruppo di istanze gestite.INSTANCE_TEMPLATE_NAME
: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.PROJECT_ID
: l'ID del progetto in cui si trovano il criterio di posizionamento distribuito e il modello di istanza che specifica il criterio di posizionamento.REGION
: la regione in cui creare il gruppo di istanze gestite, che deve corrispondere a quella 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 modello di istanza 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 nella stessa regione.INSTANCE_TEMPLATE_NAME
: il nome di un modello di istanza 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 nella stessa regione.MIG_NAME
: il nome di un gruppo di istanze gestite esistente.INSTANCE_TEMPLATE_NAME
: il nome di un modello di istanza esistente che specifica un criterio di posizionamento distribuito.Scopri come visualizzare i criteri di posizionamento.
Scopri come sostituire, rimuovere o eliminare i criteri di posizionamento.
Scopri come effettuare le seguenti operazioni con una VM che specifica un criterio di posizionamento:
Scopri di più sul 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, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
Per maggiori informazioni, consulta Autenticazione per 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 il ruolo IAM Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) per il tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.Questo ruolo predefinito contiene le autorizzazioni necessarie per creare e applicare un criterio di posizionamento distribuito alle VM. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare e applicare un criterio di posizionamento distribuito alle VM, sono necessarie le seguenti autorizzazioni:
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Crea un criterio di posizionamento distribuito
Quando crei un criterio di posizionamento distribuito, puoi specificare fino a otto domini di disponibilità in cui posizionare le VM. A meno che tu non voglia testare l'applicazione del criterio di posizionamento distribuito alle tue VM, Google Cloud consiglia di specificare due o più domini di disponibilità. Questo riduce il rischio che tutte le VM siano interessate da un singolo guasto hardware.
Per creare un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per creare un criterio di posizionamento distribuito, utilizza il 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, effettua una richiesta
POST
al 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 gruppi di istanze gestite.
Per creare una risorsa Compute Engine che specifichi un criterio di posizionamento distribuito o applicare il criterio di posizionamento distribuito a una VM esistente, seleziona uno dei seguenti metodi:
Applicare un criterio di posizionamento distribuito a una VM esistente
Prima di applicare un criterio di posizionamento distribuito a una VM esistente, rivedi quanto segue:
In caso contrario, l'applicazione del criterio di posizionamento distribuito alla VM non va a buon fine. Se la VM specifica già un criterio di posizionamento e vuoi sostituirlo, consulta Sostituire un criterio di posizionamento in una VM.
Per applicare un criterio di posizionamento distribuito a una VM esistente, seleziona una delle seguenti opzioni:
gcloud
Per applicare un criterio di posizionamento distribuito a una VM esistente, utilizza il 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
al 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 della stessa regione del criterio di posizionamento.
Per creare una VM che specifica un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per creare una VM che specifichi un criterio di posizionamento distribuito, utilizza il 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 specifichi un criterio di posizionamento distribuito, invia una richiesta
POST
al 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 Creare e avviare 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 modello nella stessa regione del criterio di posizionamento distribuito. In caso contrario, la creazione del modello di istanza non va a buon fine.
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 un criterio di posizionamento distribuito, 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
al metodoinstanceTemplates.insert
. Nel corpo della richiesta, includi il camporesourcePolicies
.Ad esempio, per creare un modello di istanza globale che specifichi un criterio di posizionamento distribuito, effettua la seguente richiesta
POST
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ], "network": "global/networks/default" } ], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] } }
Sostituisci quanto segue:
Per saperne di più sulle opzioni di configurazione per creare un modello di istanza, consulta Creare modelli di istanza.
Applica un criterio di posizionamento distribuito alle VM in un gruppo di istanze gestite
Dopo aver creato un modello di istanza che specifica un criterio di posizionamento distribuito, puoi utilizzarlo per:
Se vuoi applicare un criterio di posizionamento distribuito a un gruppo di istanze gestite, ti consigliamo di creare o applicare il criterio a un gruppo di istanze gestite a livello di regione con la forma di distribuzione qualsiasi zona singola. In questo modo, ogni volta che un gruppo di istanze gestite a livello di regione ha bisogno di fare lo scale out creando VM, seleziona la zona in cui creare le VM in base alle quote e ai 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 si trovano nella stessa regione del criterio di posizionamento.
Per creare un gruppo di istanze gestite utilizzando un modello di istanza che specifichi un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per creare un gruppo di istanze gestite utilizzando un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il 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 forma di distribuzione 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
Per creare un gruppo di istanze gestite utilizzando un modello di istanza che specifichi un criterio di posizionamento distribuito, effettua una richiesta
POST
ai metodiinstanceGroupManagers.insert
oregionInstanceGroupManagers.insert
.Ad esempio, per creare un gruppo di istanze gestite a livello di regione con proprietà VM predefinite e forma di distribuzione qualsiasi-zona singola, effettua la seguente richiesta
POST
: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 si trova 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.
Per aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un criterio di posizionamento distribuito, seleziona una delle seguenti opzioni:
gcloud
Per aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un criterio di posizionamento distribuito, utilizza il 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 da utilizzare un modello di istanza che specifichi un criterio di posizionamento distribuito e sostituire le VM esistenti del 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
Per aggiornare un gruppo di istanze gestite in modo che utilizzi un modello di istanza che specifichi un criterio di posizionamento distribuito e che applichi automaticamente le proprietà del modello e del criterio di posizionamento alle VM esistenti nel gruppo di istanze gestite, effettua una richiesta
PATCH
ai metodiinstanceGroupManagers.insert
oregionInstanceGroupManagers.insert
.Ad esempio, per aggiornare un gruppo di istanze gestite a livello di regione in modo da utilizzare un modello di istanza che specifichi un criterio di posizionamento distribuito e sostituire le VM esistenti del gruppo di istanze gestite con nuove VM che specificano le proprietà del modello, effettua la seguente richiesta
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, consulta Aggiornare e applicare nuove configurazioni alle VM in un gruppo di istanze gestite.
Che cosa succede dopo?
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-06-14 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" }] -