Impostare una forma di distribuzione di destinazione per le VM in un gruppo di istanze gestite a livello di regione


Se utilizzi un gruppo di istanze gestite (MIG) a livello di regione, puoi impostare la forma di distribuzione target su una delle seguenti opzioni:

  • UNIFORME (valore predefinito): il gruppo crea ed elimina VM per raggiungere e mantenere lo stesso numero di VM nelle zone selezionate. In una distribuzione EVEN, la differenza massima tra il numero di VM presenti in due zone qualsiasi non può essere superiore a 1. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità.
  • BILANCIATA: il gruppo dà la priorità alla creazione di VM nelle zone in cui sono disponibili risorse, distribuendole al contempo nel modo più uniforme possibile tra le zone selezionate per ridurre al minimo l'impatto degli errori a livello di zona. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità o batch.
  • QUALSIASI: il gruppo sceglie le zone in cui creare istanze VM per fornire il numero di VM richiesto nei limiti delle risorse attuali e per massimizzare l'utilizzo delle prenotazioni a livello di zona inutilizzate. Questa opzione è consigliata per i workload batch che non richiedono un'alta affidabilità.
  • QUALSIASI ZONA SINGOLA: il gruppo crea tutte le istanze VM all'interno di una singola zona. La zona viene scelta in base al supporto hardware, alla disponibilità corrente delle risorse e delle quote e alle prenotazioni corrispondenti. Si consiglia di associare a questa opzione una policy di posizionamento compatto delle istanze per i workload che richiedono frequenti comunicazioni tra le VM.

Per utilizzare le VM prenotate in un gruppo di istanze gestite a livello di regione, crea prenotazioni identiche con lo stesso nome in ogni zona applicabile. Quindi, scegli come target queste prenotazioni per nome nel modello di istanza del gruppo.

Per aiutarti a scegliere una forma, consulta la tabella di confronto, i casi d'uso e le modalità di funzionamento delle forme di distribuzione.

Imposta una forma di distribuzione target quando crei il MIG a livello di regione o aggiorni la forma target di un MIG a livello di regione esistente.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

    2. Set a default region and zone.

    Terraform

    Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura leCredenziali predefinite dell'applicazionee con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per ulteriori informazioni, vedi Set up authentication for a local development environment.

    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.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Limitazioni

  • Puoi selezionare le zone per il tuo MIG solo quando lo crei.
  • Se specifichi risorse nel template di istanza o nella configurazione stateful del MIG che non sono disponibili in tutte le zone selezionate, si applicano le seguenti limitazioni:

    • Devi impostare la forma di distribuzione target su BALANCED, ANY o ANY_SINGLE_ZONE.
    • Devi assicurarti che tutte le risorse richieste dal MIG, ad esempio dischi, tipi di macchina o GPU esistenti, siano disponibili in almeno una delle zone selezionate.
    • Se vuoi aggiornare la configurazione del MIG (ad esempio, il modello di istanza) a una configurazione che non può essere creata in tutte le zone selezionate, devi rimuovere le istanze gestite da tutte le zone non supportate prima di impostare la nuova configurazione.
  • Per impostare la forma di distribuzione target su BALANCED o ANY_SINGLE_ZONE, devi disattivare la ridistribuzione proattiva delle istanze.

  • Se vuoi scalare automaticamente un MIG regionale, devi impostare la forma di distribuzione target del gruppo su BALANCED o EVEN.
  • Se imposti la forma di distribuzione target su BALANCED, ANY o ANY_SINGLE_ZONE, si applicano le seguenti limitazioni:

    • Gli aggiornamenti Canary con due versioni non sono supportati.
    • In caso di disponibilità limitata delle risorse richieste nell'intera regione, il gruppo potrebbe pianificare la creazione di istanze VM in una zona in cui le risorse non sono già disponibili. Puoi provare a diminuire e aumentare le dimensioni del gruppo per ottenere le risorse richieste in altre zone.
    • Gli aggiornamenti in sequenza che utilizzano il SUBSTITUTE metodo di sostituzione tentano di creare le nuove istanze aggiornate nella stessa zona delle macchine obsolete, anche se la zona non dispone di risorse per soddisfare i requisiti della nuova versione. Per mediare questo comportamento, puoi eliminare le VM obsolete dalla zona vincolata, quindi aumentare la dimensione del gruppo del numero di VM eliminate. Il gruppo crea istanze dal modello più recente nelle zone in cui è disponibile capacità.
    • Se vuoi aggiornare il modello di istanza del gruppo a un modello che specifica risorse non disponibili in tutte le zone selezionate, devi rimuovere le istanze gestite dalle zone non supportate prima di impostare il nuovo modello.
  • Se imposti la forma di distribuzione target su ANY_SINGLE_ZONE e il gruppo ha VM esistenti in una singola zona, puoi creare VM aggiuntive solo in quella zona. Se vuoi utilizzare una zona diversa, devi prima ridurre il gruppo a zero VM.

  • Se devi eseguire il provisioning di un gruppo di VM single-tenant, devi impostare la forma di distribuzione target del MIG su EVEN. Crea i gruppi di nodi nelle stesse zone del MIG e imposta le affinità dei nodi del MIG nel template di istanza del MIG.

Creare un gruppo con una forma di distribuzione target

Per creare il gruppo, selezionare le relative zone e impostare la forma di distribuzione target, utilizza la Google Cloud console, gcloud CLI, Terraform o REST.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai alla pagina Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze per creare un nuovo gruppo di istanze.
  3. Seleziona una delle opzioni per i gruppo di istanze gestite gestite: stateless (impostazione predefinita) o stateful.
  4. Assegna un nome e, facoltativamente, una descrizione al gruppo di istanze.
  5. Scegli un template di istanza per il gruppo di istanze o creane uno nuovo.
  6. Specifica il numero di VM per questo gruppo. Per i workload ad alta affidabilità, ricordati di eseguire il provisioning di un numero sufficiente di VM per supportare la tua applicazione in caso di errore a livello di zona.
  7. In Località, seleziona Più zone.
  8. Scegli un'area geografica e seleziona le zone che vuoi utilizzare.

    • Se vuoi che il MIG possa utilizzare tutte le zone della regione, seleziona tutte le zone disponibili.
    • Tieni presente che non puoi aggiornare un MIG a livello di regione per utilizzare zone diverse dopo la creazione.
  9. Scegli una forma di distribuzione target.

    1. Se vuoi selezionare Qualsiasi o Qualsiasi zona singola, nella sezione Scalabilità automatica, fai clic su Modalità di scalabilità automatica e scegli Elimina configurazione della scalabilità automatica.
    2. Se vuoi selezionare Qualsiasi zona singola o Bilanciata, nella sezione Ridistribuzione delle istanze, non selezionare Consenti ridistribuzione istanze.
  10. Continua con il resto della procedura di creazione del gruppo di istanze gestite.

gcloud

Utilizza il comando gcloud compute instance-groups managed create e includi il flag --target-distribution-shape.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    --region REGION \
    --zones ZONES \
    --target-distribution-shape SHAPE

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze.
  • TEMPLATE: il nome del modello di istanza da utilizzare per il gruppo.
  • SIZE: la dimensione target del gruppo di istanze.
  • REGION: la regione in cui vuoi creare il gruppo.
  • ZONES (facoltativo): un elenco di zone nella regione in cui vuoi eseguire il deployment delle istanze VM. Per impostazione predefinita, Compute Engine seleziona tre zone per te.

    • Se vuoi che il MIG possa utilizzare tutte le zone della regione, specifica tutte le zone disponibili. Puoi ottenere un elenco delle zone nella regione con il seguente comando:

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • Tieni presente che non puoi aggiornare un MIG a livello di regione per utilizzare zone diverse dopo la creazione.

  • SHAPE: la forma di distribuzione target. Può essere uno dei seguenti valori:

    • even (valore predefinito): il gruppo crea ed elimina VM per raggiungere e mantenere lo stesso numero di VM nelle zone selezionate. In una distribuzione EVEN, la differenza massima tra il numero di VM presenti in due zone qualsiasi non può essere superiore a 1. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità.
    • balanced: il gruppo dà la priorità alla creazione di VM nelle zone in cui sono disponibili risorse, distribuendole al contempo nel modo più uniforme possibile tra le zone selezionate per ridurre al minimo l'impatto degli errori a livello di zona. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità o batch.
    • any: il gruppo sceglie le zone in cui creare istanze VM per fornire il numero di VM richiesto nei limiti delle risorse attuali e per massimizzare l'utilizzo delle prenotazioni a livello di zona inutilizzate. Questa opzione è consigliata per i workload batch che non richiedono un'alta affidabilità.
    • any-single-zone: il gruppo crea tutte le istanze VM all'interno di una singola zona. La zona viene scelta in base al supporto hardware, alla disponibilità corrente delle risorse e delle quote e alle prenotazioni corrispondenti. Si consiglia di associare a questa opzione una policy di posizionamento compatto delle istanze per i workload che richiedono frequenti comunicazioni tra le VM.

Ad esempio, per creare un MIG regionale con una forma di distribuzione target bilanciata, imposta il flag --target-distribution-shape su balanced.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape balanced \
    --instance-redistribution-type none

Terraform

Se non hai già creato un modello di istanza che specifica il tipo di macchina, l'immagine disco di avvio, la rete e altre proprietà delle VM da applicare a ogni VM nel tuo MIG, crea un modello di istanza.

Per creare un MIG a livello di regione, utilizza la risorsa google_compute_region_instance_group_manager.

L'esempio seguente crea un MIG a livello di regione con una forma di distribuzione target BALANCED.

resource "google_compute_region_instance_group_manager" "default" {
  name                             = "example-rmig"
  region                           = "us-east1"
  distribution_policy_zones        = ["us-east1-b", "us-east1-c"]
  distribution_policy_target_shape = "BALANCED"
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.

REST

Chiama il metodo regionInstanceGroupManagers.insert. Nel corpo della richiesta, includi la proprietà distributionPolicy e imposta il relativo campo targetShape.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
    "name": INSTANCE_GROUP_NAME,
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE1"},
            {"zone": "zones/ZONE2"},
            {"zone": "zones/ZONE3"},
        ],
        "targetShape": "SHAPE"
    }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta.
  • REGION: la regione per il gruppo di istanze.
  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze.
  • TEMPLATE: il nome del modello di istanza da utilizzare per il gruppo di istanze.
  • SIZE: la dimensione target del gruppo di istanze.
  • ZONE: il nome di una zona nella regione in cui vuoi eseguire il deployment delle istanze VM.
    • Se vuoi che il MIG possa utilizzare tutte le zone della regione, specifica tutte le zone disponibili. Puoi ottenere un elenco delle zone nella regione chiamando il metodo regions.get.
    • Tieni presente che non puoi aggiornare un MIG a livello di regione per utilizzare zone diverse dopo la creazione.
  • SHAPE: la forma di distribuzione target. Può essere uno dei seguenti valori:
    • EVEN (valore predefinito): il gruppo crea ed elimina VM per raggiungere e mantenere lo stesso numero di VM nelle zone selezionate. In una distribuzione EVEN, la differenza massima tra il numero di VM presenti in due zone qualsiasi non può essere superiore a 1. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità.
    • BALANCED: il gruppo dà la priorità alla creazione di VM nelle zone in cui sono disponibili risorse, distribuendole al contempo nel modo più uniforme possibile tra le zone selezionate per ridurre al minimo l'impatto degli errori a livello di zona. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità o batch.
    • ANY: il gruppo sceglie le zone in cui creare istanze VM per fornire il numero di VM richiesto nei limiti delle risorse attuali e per massimizzare l'utilizzo delle prenotazioni a livello di zona inutilizzate. Questa opzione è consigliata per i workload batch che non richiedono un'alta affidabilità.
    • ANY_SINGLE_ZONE: il gruppo crea tutte le istanze VM all'interno di una singola zona. La zona viene scelta in base al supporto hardware, alla disponibilità corrente delle risorse e delle quote e alle prenotazioni corrispondenti. Si consiglia di associare a questa opzione una policy di posizionamento compatto delle istanze per i workload che richiedono frequenti comunicazioni tra le VM.

Modificare la forma di distribuzione target di un gruppo esistente

Puoi modificare la forma di distribuzione target in un MIG regionale esistente, ma con le seguenti limitazioni:

  • Se vuoi modificare la forma di distribuzione target in BALANCED o ANY_SINGLE_ZONE, devi prima disabilitare la ridistribuzione proattiva.
  • Se vuoi impostare la forma di distribuzione target su EVEN e se la distribuzione corrente delle istanze non è uniforme, devi prima disabilitare la ridistribuzione proattiva.
  • Se modifichi la forma in EVEN e vuoi riattivare la ridistribuzione proattiva, devi prima ribilanciare manualmente il gruppo.
  • Se vuoi modificare la forma di distribuzione target in EVEN, ma il template di istanza specifica risorse non supportate in tutte le zone selezionate, devi prima aggiornare il template di istanza del gruppo a uno supportato in tutte le zone selezionate.

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai alla pagina Gruppi di istanze

  2. Nella colonna Nome dell'elenco, fai clic sul nome del gruppo di istanze in cui vuoi modificare la forma della distribuzione target.
  3. Fai clic su Modifica per modificare il gruppo di istanze gestite.
  4. In Forma di distribuzione di destinazione, specifica la forma che preferisci.
  5. Fai clic su Salva per applicare il nuovo modello.

gcloud

Utilizza il comando gcloud compute instance-groups managed update e includi il flag --target-distribution-shape.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze.
  • SHAPE: la forma di distribuzione target. Può essere uno dei seguenti valori:
    • even (valore predefinito): il gruppo crea ed elimina VM per raggiungere e mantenere lo stesso numero di VM nelle zone selezionate. In una distribuzione EVEN, la differenza massima tra il numero di VM presenti in due zone qualsiasi non può essere superiore a 1. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità.
    • balanced: il gruppo dà la priorità alla creazione di VM nelle zone in cui sono disponibili risorse, distribuendole al contempo nel modo più uniforme possibile tra le zone selezionate per ridurre al minimo l'impatto degli errori a livello di zona. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità o batch.
    • any: il gruppo sceglie le zone in cui creare istanze VM per fornire il numero di VM richiesto nei limiti delle risorse attuali e per massimizzare l'utilizzo delle prenotazioni a livello di zona inutilizzate. Questa opzione è consigliata per i workload batch che non richiedono un'alta affidabilità.
    • any-single-zone: il gruppo crea tutte le istanze VM all'interno di una singola zona. La zona viene scelta in base al supporto hardware, alla disponibilità corrente delle risorse e delle quote e alle prenotazioni corrispondenti. Si consiglia di associare a questa opzione una policy di posizionamento compatto delle istanze per i workload che richiedono frequenti comunicazioni tra le VM.

REST

Chiama il metodo regionInstanceGroupManagers.patch. Nel corpo della richiesta, includi la proprietà distributionPolicy e imposta il relativo campo targetShape.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "distributionPolicy": {
        "targetShape": "SHAPE"
    }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta.
  • REGION: la regione per il gruppo di istanze.
  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze.
  • SHAPE: la forma di distribuzione target. Può essere uno dei seguenti valori:
    • EVEN (valore predefinito): il gruppo crea ed elimina VM per raggiungere e mantenere lo stesso numero di VM nelle zone selezionate. In una distribuzione EVEN, la differenza massima tra il numero di VM presenti in due zone qualsiasi non può essere superiore a 1. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità.
    • BALANCED: il gruppo dà la priorità alla creazione di VM nelle zone in cui sono disponibili risorse, distribuendole al contempo nel modo più uniforme possibile tra le zone selezionate per ridurre al minimo l'impatto degli errori a livello di zona. Questa opzione è consigliata per i workload di distribuzione ad alta affidabilità o batch.
    • ANY: il gruppo sceglie le zone in cui creare istanze VM per fornire il numero di VM richiesto nei limiti delle risorse attuali e per massimizzare l'utilizzo delle prenotazioni a livello di zona inutilizzate. Questa opzione è consigliata per i workload batch che non richiedono un'alta affidabilità.
    • ANY_SINGLE_ZONE: il gruppo crea tutte le istanze VM all'interno di una singola zona. La zona viene scelta in base al supporto hardware, alla disponibilità corrente delle risorse e delle quote e alle prenotazioni corrispondenti. Si consiglia di associare a questa opzione una policy di posizionamento compatto delle istanze per i workload che richiedono frequenti comunicazioni tra le VM.

Visualizzare la policy di distribuzione delle istanze configurata

Console

  1. Nella console Google Cloud , vai alla pagina Gruppi di istanze.

    Vai alla pagina Gruppi di istanze

    Eventuali gruppi di istanze esistenti sono già elencati nella pagina,
  2. Fai clic sul nome del gruppo di istanze che vuoi esaminare. Viene visualizzata una pagina con le proprietà del gruppo di istanze e un elenco di istanze incluse nel gruppo.
  3. Fai clic su Dettagli.
  4. Nella sezione Località, cerca Forma di distribuzione target.

gcloud

Esegui il comando gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

Il comando restituisce i dettagli del gruppo, incluso il campo distributionPolicy.targetShape:

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

REST

Crea una richiesta GET al metodo regionInstanceGroupManagers.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta
  • REGION: la regione per il gruppo di istanze
  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze

La forma di distribuzione target viene restituita nel campo distributionPolicy.targetShape. Ad esempio:

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

Passaggi successivi