Applica automaticamente gli aggiornamenti della configurazione delle VM in un gruppo di istanze gestite


Questo documento descrive come applicare automaticamente gli aggiornamenti di configurazione alle istanze di macchine virtuali (VM) in un gruppo di istanze gestite (MIG).

Compute Engine gestisce le VM in un gruppo di istanze gestite in base ai componenti di configurazione che utilizzi: modello di istanza, configurazione facoltativa per tutte le istanze e configurazione stateful facoltativa.

Ogni volta che aggiorni la configurazione della VM di un gruppo di istanze gestite modificando questi componenti, Compute Engine applica automaticamente la configurazione aggiornata alle nuove VM aggiunte al gruppo.

Per applicare una configurazione aggiornata alle VM esistenti, puoi configurare un aggiornamento automatico, noto anche come tipo di aggiornamento proattivo. Il gruppo di istanze gestite implementa automaticamente gli aggiornamenti di configurazione in tutte le VM del gruppo o in un sottoinsieme. Puoi controllare la velocità di deployment, il livello di interruzione del servizio e, inoltre, utilizzando un aggiornamento canary, il numero di istanze che il gruppo di istanze gestite aggiorna con la nuova configurazione. Dopo aver specificato la nuova configurazione, non è necessario fornire input aggiuntivi e l'aggiornamento viene completato autonomamente.

In alternativa, se vuoi applicare una nuova configurazione in modo selettivo solo alle nuove o a istanze specifiche in un gruppo di istanze gestite, consulta Applicare in modo selettivo gli aggiornamenti della configurazione delle VM in un gruppo di istanze gestite. Per aiutarti a decidere, consulta Metodi per applicare una nuova configurazione alle VM esistenti.

Prima di iniziare

  • Se stai aggiornando un gruppo di istanze gestite stateful, consulta l'articolo Applicazione, visualizzazione e rimozione della configurazione stateful nei gruppi di istanze gestite.
  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo 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 autenticarti su Compute Engine come segue.

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Limitazioni

  • Se hai un gruppo di istanze gestite stateful e vuoi utilizzare gli aggiornamenti in sequenza automatici, devono mantenere i nomi delle istanze quando sostituisci le istanze o, in modo equivalente, imposta il metodo di sostituzione su RECREATE.

Avvio di un aggiornamento in sequenza di base

Un aggiornamento in sequenza di base è un aggiornamento che viene applicato gradualmente a tutte le istanze in un gruppo di istanze gestite finché tutte le istanze non sono state aggiornate all'ultima versione configurazione. L'aggiornamento in sequenza ignora automaticamente le istanze già nella loro ultima configurazione.

È possibile controllare vari aspetti di un aggiornamento in sequenza, ad esempio il numero di istanze può essere offline per l'aggiornamento, il tempo di attesa tra un aggiornamento e l'altro di istanze, se il nuovo modello interessa tutte le istanze o solo una parte, e così via.

Ecco alcuni aspetti da tenere presenti quando fai un aggiornamento in sequenza:

  • Gli aggiornamenti si basano sull'intenzione. Quando effettui la richiesta di aggiornamento iniziale, L'API Compute Engine restituisce una risposta corretta per confermare che la richiesta sia ma ciò non indica che l'aggiornamento è andato a buon fine. Devi controllare lo stato del gruppo per determinare se le tue il deployment dell'aggiornamento è stato eseguito correttamente.

  • L'API Instance Group Updater è un'API dichiarativa. L'API si aspetta una richiesta per specificare la configurazione post-aggiornamento del gruppo di istanze gestite desiderata, anziché una chiamata esplicita alla funzione.

  • Gli aggiornamenti automatici supportano fino a due versioni di modelli di istanza nel tuo MIG. Ciò significa che puoi specificare due diverse versioni del modello di istanza per il gruppo, il che è utile per eseguire aggiornamenti canary.

Per avviare un aggiornamento in sequenza di base in cui l'aggiornamento viene applicato a tutte le istanze in del gruppo, segui le istruzioni riportate di seguito.

Console

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

    Vai a Gruppi di istanze

  2. Seleziona il gruppo di istanze gestite che vuoi aggiornare.

  3. Fai clic su Aggiorna VM.

  4. In Nuovo modello, fai clic sull'elenco a discesa e seleziona il nuovo modello di destinazione dell'aggiornamento. La dimensione target viene impostata automaticamente su 100%, indicando che tutte le istanze verranno aggiornate.

  5. In Aggiorna configurazione, espandi il menu di selezione e seleziona Automatico come Tipo di aggiornamento. Lascia i valori predefiniti per le altre opzioni.

  6. Fai clic su Aggiorna VM per avviare l'aggiornamento.

gcloud

Utilizza il comando rolling-action start-update.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME
    [--zone=ZONE | --region=REGION]

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite
  • INSTANCE_TEMPLATE_NAME: il nuovo modello di istanza
  • ZONE: per i gruppi di istanze gestite a livello di zona, fornisci zona
  • REGION: per i gruppi di istanze gestite a livello di regione, fornisci la regione

REST

Chiama il metodo patch su un regionale o a livello di zona risorsa MIG.

Ad esempio, per un gruppo di istanze gestite a livello di regione, la seguente richiesta mostra la quantità minima necessaria per aggiornare automaticamente il 100% delle istanze il nuovo modello di istanza.

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

{
  "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  "updatePolicy": {
    "type": "PROACTIVE"
   }
}

Dopo aver effettuato una richiesta, puoi monitorare l'aggiornamento per sapere quando l'aggiornamento è terminato.

Per le configurazioni avanzate, includi altre opzioni di aggiornamento. Se non specificare altrimenti, le opzioni maxSurge e maxUnavailable vengono impostate automaticamente su 1 moltiplicato per il numero di zone interessate. Ciò significa che solo 1 istanza viene offline in ogni zona interessata e il gruppo di istanze gestite crea solo una per zona durante l'aggiornamento.

Configurazione delle opzioni per l'aggiornamento

Per aggiornamenti più complessi, puoi configurare opzioni aggiuntive, come descritto nelle sezioni seguenti.

Tipo aggiornamento

I gruppi di istanze gestite supportano due tipi di aggiornamento:

  • Aggiornamenti proattivi o automatici
  • Aggiornamenti selettivi oppure opportunstici

Se vuoi applicare gli aggiornamenti automaticamente, imposta il tipo su proattivo.

In alternativa, se un aggiornamento automatico è potenzialmente troppo fastidioso, puoi scegliere di eseguire un aggiornamento opportunistico. Il gruppo di istanze gestite applica una strategia opportunistica vengono aggiornati solo quando lo avvii manualmente nelle istanze selezionate o quando vengono create nuove istanze. È possibile creare nuove istanze quando tu o un altro servizio, ad esempio un gestore della scalabilità automatica, modificate le dimensioni del gruppo di istanze gestite. Compute Engine non avvia attivamente richieste per applicare aggiornamenti opportunistici alle istanze esistenti.

Per ulteriori informazioni sugli aggiornamenti automatici e selettivi, consulta Metodi per applicare una nuova configurazione alle VM esistenti.

Picco massimo

Utilizza l'opzione maxSurge per configurare il numero di nuove istanze che il gruppo di istanze gestite può creare sopra il suo targetSize durante un aggiornamento automatico. Ad esempio, se imposti Da maxSurge a 5, il gruppo di istanze gestite utilizza il nuovo modello di istanza per creare fino a cinque nuovi modelli superiori alla dimensione target. L'impostazione di un valore di maxSurge più alto comporta l'aumento della velocità l'aggiornamento, a costo di istanze aggiuntive, che vengono fatturate in base la Compute Engine listino prezzi.

Puoi specificare un numero fisso o, se il gruppo ha almeno 10 istanze, una percentuale. Se imposti una percentuale, il programma di aggiornamento arrotonda i valori di istanze VM, se necessario.

Se non imposti il valore maxSurge, viene utilizzato il valore predefinito. Per i gruppi di istanze gestite a livello di zona, il valore predefinito per maxSurge è 1. Per i gruppi di istanze gestite regionali, il valore predefinito è il numero di zone associate al gruppo, ovvero 3.

maxSurge funziona solo se disponi di quota o risorse sufficienti per supportare il risorse aggiuntive.

Se l'aggiornamento non richiede la sostituzione delle VM, questa opzione viene ignorata. Puoi forzare la sostituzione delle VM durante un aggiornamento impostando l'opzione Azione minima.

Numero massimo non disponibili

Utilizza l'opzione maxUnavailable per configurare il numero di istanze non disponibili in qualsiasi momento durante un aggiornamento automatico. Ad esempio, se imposti maxUnavailable a 5, vengono scollegate solo 5 istanze alla volta per l'aggiornamento. Utilizza questa opzione per controllare l'entità dell'interruzione del servizio causata dall'aggiornamento e per controllare la frequenza di implementazione dell'aggiornamento.

Questo numero include anche le istanze non disponibili per altri motivi. Ad esempio, se il gruppo sta per essere ridimensionata, mentre le istanze VM durante la creazione potrebbero non essere disponibili. Queste istanze vengono conteggiate nel numero maxUnavailable.

Puoi specificare un numero fisso o, se il gruppo ha almeno 10 istanze, una percentuale. Se imposti una percentuale, Updater arrotonda per difetto il numero di istanze, se necessario.

Se non vuoi che nessuna macchina sia non disponibile durante un aggiornamento, imposta il valore maxUnavailable su 0 e il valore maxSurge su un valore maggiore di 0. Con queste impostazioni, Compute Engine rimuove ogni vecchia macchina solo dopo che la nuova macchina sostitutiva è stata creata ed è in esecuzione.

Se non imposti il valore maxUnavailable, viene utilizzato il valore predefinito. Per gruppo di istanze gestite a livello di zona, il valore predefinito è 1. Per i gruppi di istanze gestite regionali, il valore predefinito è il numero di zone associate al gruppo, ovvero 3.

Tempo di attesa minimo

Utilizza l'opzione minReadySec per specificare il tempo di attesa prima di considerare un'istanza nuova o riavviata come aggiornata. Utilizza questa opzione per controllare la velocità con cui viene eseguito il deployment dell'aggiornamento automatico. Il timer si avvia quando sono soddisfatte entrambe le seguenti condizioni:

  • Lo stato dell'istanza è RUNNING.
  • Se il controllo di integrità è abilitato, quando il controllo di integrità restituisce HEALTHY.

Tieni presente che, affinché il controllo di integrità ritorni in stato integro, il programma di aggiornamento attende le seguenti condizioni:

  1. Attende fino al periodo di tempo specificato dal valore autohealingPolicies.initialDelaySec del gruppo di istanze gestite affinché il controllo di integrità restituisca HEALTHY.
  2. Quindi, attende il periodo di tempo specificato da minReadySec.

Se il controllo di integrità non restituisce HEALTHY entro initialDelaySec, l'Updater dichiara l'istanza VM non integra e potenzialmente interrompe l'aggiornamento. Mentre l'istanza VM è in attesa di verifica durante il periodo di tempo initialDelaySec e minReadySec, il valore currentAction dell'istanza è VERIFYING. Tuttavia, lo stato dell'istanza VM sottostante rimane RUNNING

Se non esistono controlli di integrità per il gruppo, il timer si avvia quando lo stato dell'istanza è RUNNING.

Il valore massimo per il campo minReadySec è 3600 secondi (1 ora).

Il seguente diagramma mostra come dimensioni target, numero massimo non disponibile, massimo le opzioni di picco e tempo di attesa minimo influiscono sulle tue istanze. Per ulteriori informazioni sulle dimensioni target, consulta Aggiornamenti canary.

In che modo le opzioni dei criteri di aggiornamento influiscono sulla tua richiesta.

Azione minima

Utilizza l'opzione di azione minima per ridurre al minimo le interruzioni il più possibile o per applicare un'azione più invasiva di quanto sia strettamente necessario. Ad esempio: Compute Engine non ha bisogno di riavviare una VM per modificarne i metadati. Tuttavia, se la tua applicazione legge i metadati dell'istanza solo quando una VM viene riavviata, puoi impostare l'azione minima su Riavvia per rilevare le modifiche ai metadati.

Se l'aggiornamento richiede un'azione più invasiva di quella impostata con questo flag, Compute Engine esegue l'azione necessaria per eseguire l'aggiornamento. Ad esempio, se specifichi un riavvio come azione minima, il file di aggiornamento tenta di riavviare le istanze per applicare l'aggiornamento. Tuttavia, se stai modificando il sistema operativo, cosa che non puoi fare riavviando l'istanza, il programma di aggiornamento sostituirà le istanze nel gruppo con nuove istanze VM.

Per ulteriori informazioni, incluse le opzioni valide, vedi Controllo del livello di interruzione durante un aggiornamento in sequenza.

Azione consentita più dannosa

Utilizza l'opzione di azione consentita più invasiva per impedire un aggiornamento qualora dovesse verificarsi richiede più interruzioni di quanto ti puoi permettere. Se non è possibile completare un aggiornamento a causa di questa impostazione, l'aggiornamento non va a buon fine e le VM mantengono la loro configurazione.

Per ulteriori informazioni, vedi Controllo del livello di interruzione durante un aggiornamento in sequenza.

Metodo di sostituzione

Per impostazione predefinita, quando aggiorni in modo proattivo un gruppo di istanze gestite, il gruppo elimina le istanze VM e le sostituisce con nuove istanze con nuovi nomi. Se devi mantenere i nomi delle istanze VM, utilizza l'opzione replacementMethod.

Conservare i nomi delle istanze esistenti può essere utile se hai applicazioni basati sull'uso di nomi di istanze specifici. Ad esempio, alcune applicazioni, come Memcached, si basano sui nomi delle istanze perché non dispongono di un servizio di rilevamento. Di conseguenza, ogni volta che un nome dell'istanza cambia, l'applicazione perde la connessione a quella VM specifica.

Per conservare i nomi delle istanze, imposta il metodo di sostituzione su RECREATE anziché su SUBSTITUTE se aggiorni il gruppo di istanze gestite con gcloud CLI o l'API Compute Engine. In alternativa, se aggiorni il gruppo di istanze gestite dalla console Google Cloud, seleziona la casella di controllo Mantieni i nomi delle istanze quando sostituisci le istanze.

Metodi di sostituzione delle istanze gestite.

I valori replacementMethod validi sono:

  • SUBSTITUTE (valore predefinito). Sostituisce le istanze VM più rapidamente durante gli aggiornamenti perché le nuove VM vengono create prima dell'arresto delle vecchie. Tuttavia, i nomi delle istanze non vengono conservati perché i nomi sono ancora utilizzati dalle istanze precedenti.

  • RECREATE. Conserva i nomi delle istanze tramite un aggiornamento. Google Compute Engine rilascia il nome dell'istanza quando la vecchia VM viene arrestata. Poi Compute Engine crea una nuova istanza utilizzando lo stesso nome. Per utilizzare questa modalità, devi impostare maxSurge su 0.

Per ulteriori informazioni, vedi Conservazione dei nomi delle istanze.

Altri esempi di aggiornamento

Ecco alcuni esempi della riga di comando con opzioni di configurazione comuni.

Esegui un aggiornamento graduale di tutte le istanze VM, ma crea fino a 5 nuove istanze superiori alla dimensione target alla volta

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --max-surge=5 \
    [--zone=ZONE | --region=REGION]

Esegui un aggiornamento in sequenza con un massimo di 3 macchine non disponibili e un minimo di 3 minuti prima di contrassegnare una nuova istanza come disponibile

gcloud beta compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --min-ready=3m \
    --max-unavailable=3 \
    [--zone=ZONE | --region=REGION]

Esegui un aggiornamento in sequenza di tutte le istanze VM, ma creane di nuove fino al 10% superiori alla dimensione target in un determinato momento

Ad esempio, se hai 1000 istanze ed esegui questo comando, Il programma di aggiornamento crea fino a 100 istanze prima di iniziare a rimuovere le istanze che che eseguono il modello di istanza precedente.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --max-surge=10% \
    [--zone=ZONE | --region=REGION]

Aggiornamenti canary

Un aggiornamento canary è un aggiornamento applicato a un sottoinsieme di istanze nel gruppo. Con un aggiornamento canary, puoi testare nuove funzionalità o upgrade su una un sottoinsieme di istanze, invece di implementare un aggiornamento potenzialmente tutte le tue istanze. Se un aggiornamento non funziona, devi solo eseguirne il rollback delle istanze, riducendo al minimo le interruzioni per gli utenti.

Un aggiornamento canary è uguale a un aggiornamento in sequenza standard, tranne per il fatto che il numero di istanze da aggiornare è inferiore alle dimensioni totali del gruppo di istanze. Come per un aggiornamento in sequenza standard, puoi configurare opzioni per controllare il livello di interruzione del servizio.

Avvio di un aggiornamento canary

Per avviare un aggiornamento canary, specifica fino a due versioni di modelli di istanza, di solito un nuovo modello di istanza a canary e il modello di istanza attuale per le altre istanze. Ad esempio, puoi specificare che il 20% le istanze verranno create in base a NEW_INSTANCE_TEMPLATE mentre le altre istanze continuano a essere eseguite OLD_INSTANCE_TEMPLATE. Non puoi specificare più di due modelli di istanza alla volta. NEW_INSTANCE_TEMPLATE può essere un modello di istanza regionale della stessa regione gruppo di istanze gestite o un modello di istanza globale.

Devi sempre specificare una dimensione target (targetSize) per la versione canary. Tu impossibile avviare un aggiornamento canary se ometti la dimensione target per la versione canary completamente gestita. Ad esempio, se hai specificato che il 10% delle istanze deve essere utilizzato per il canarying, il 90% rimanente non viene modificato e utilizza il modello di istanza corrente.

Console

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

    Vai a Gruppi di istanze

  2. Seleziona il gruppo di istanze gestite che vuoi aggiornare.
  3. Fai clic su Aggiorna VM.
  4. Fai clic su Aggiungi un secondo modello e scegli il nuovo modello di istanza. alla versione canary.
  5. In Dimensione target, inserisci la percentuale o il numero fisso di istanze che vuoi utilizzare per eseguire il canary del nuovo modello di istanza.
  6. Se vuoi, puoi configurare altre opzioni di aggiornamento.
  7. Fai clic su Aggiorna VM per avviare l'aggiornamento.

gcloud

Utilizza la Comando rolling-action start-update. Fornisci sia il modello corrente che quello nuovo per esprimere esplicitamente quante istanze devono usare ogni modello:

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=CURRENT_INSTANCE_TEMPLATE_NAME \
    --canary-version=template=NEW_TEMPLATE,target-size=SIZE \
    [--zone=ZONE | --region=REGION]

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze.
  • CURRENT_INSTANCE_TEMPLATE_NAME: l'istanza attualmente in esecuzione dal gruppo di istanze.
  • NEW_TEMPLATE: il nuovo modello che vuoi canary.
  • SIZE: il numero o la percentuale di istanze a cui vuoi applicare questo aggiornamento. Devi applicare il target-size al modello --canary-version. Puoi impostare una percentuale solo se il gruppo contiene almeno 10 istanze.
  • ZONE: per i gruppi di istanze gestite a livello di zona, fornisci zona.
  • REGION: per i gruppi di istanze gestite a livello di regione, specifica la regione.

Ad esempio, il seguente comando esegue un aggiornamento canary che implementaexample-template-B nel 10% delle istanze del gruppo:

gcloud compute instance-groups managed rolling-action start-update example-mig \
    --version=template=example-template-A \
    --canary-version=template=example-template-B,target-size=10%

REST

Chiama il metodo patch su una risorsa MIG regionale o di zona. Nel corpo della richiesta, includi sia l'istanza attuale e il nuovo modello di istanza che vuoi canary. Ad esempio:

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

{
 "versions": [
  {
   "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
   "targetSize": {
    "[percent|fixed]": NUMBER|PERCENTAGE # Use `fixed` for a specific number of instances
   }
  },
  {
   "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME"
  }
 ]
}

Sostituisci quanto segue:

  • NEW_TEMPLATE: il nome del nuovo modello che vuoi canary.
  • NUMBER|PERCENTAGE: il numero fisso o percentuale di istanze alla versione canary. Puoi impostare solo percentuale se il gruppo contiene 10 o più istanze. In caso contrario, fornisci un numero fisso.
  • CURRENT_INSTANCE_TEMPLATE_NAME: il nome del modello di istanza corrente in esecuzione nel gruppo.

Per ulteriori opzioni, vedi Configurare le opzioni per l'aggiornamento.

Dopo aver effettuato una richiesta, puoi monitorare l'aggiornamento per sapere quando è terminato.

Aggiornamento in sequenza di un aggiornamento canary

Dopo aver eseguito un aggiornamento canary, puoi decidere se eseguire il commit dell'aggiornamento per il 100% del MIG o eseguire il rollback.

Console

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

    Vai a Gruppi di istanze

  2. Seleziona il gruppo di istanze gestite che vuoi aggiornare.
  3. Fai clic su Aggiorna VM.
  4. In Nuovo modello, aggiorna la dimensione di destinazione del modello canary su 100% per eseguire il roll forward del modello a tutte le istanze. In alternativa, puoi sostituire il modello principale con la rimozione del modello canary nel secondo campo del modello.
  5. Fai clic su Aggiorna VM per avviare l'aggiornamento.

gcloud

Se vuoi eseguire il commit dell'aggiornamento canary, esegui il rollback dell'aggiornamento eseguendo un altro comando rolling-action start-update ma imposta solo il flag version e ometti il flag --canary-version.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    [--zone=ZONE | --region=REGION]

REST

Chiama il metodo patch su un regionale o a livello di zona risorsa MIG. Nel corpo della richiesta, specifica il nuovo modello di istanza come version e ometti il modello di istanza precedente dal corpo della richiesta. Ometti la specifica della dimensione target per implementare l'aggiornamento al 100% di Compute Engine. Ad esempio:

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

{
"versions": [
   {
   "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE" # New instance template
   }
 ]
}

Aggiornamenti sul monitoraggio

Dopo aver avviato un aggiornamento, potrebbe essere necessario un po' di tempo prima che la nuova configurazione l'implementazione in tutte le istanze interessate. Puoi monitorare l'avanzamento di aggiornala controllando quanto segue:

Stato del gruppo

A livello di gruppo, Compute Engine compila un campo di sola lettura chiamato status che contiene un flag versionTarget.isReached e un flag isStable. Puoi usa gcloud CLI o REST per accedere queste segnalazioni. Puoi anche utilizzare la console Google Cloud per visualizzare il numero corrente e pianificato di istanze in fase di aggiornamento.

Console

Per monitorare l'aggiornamento in sequenza di un gruppo, vai ai dettagli del gruppo .

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

    Vai a Gruppi di istanze

  2. Seleziona il gruppo di istanze gestite che vuoi monitorare. Panoramica del gruppo mostra il modello utilizzato da ogni istanza.
  3. Per visualizzare i dettagli, fai clic sulla scheda Dettagli.
  4. In Modello di istanza, puoi vedere il numero corrente e target di istanze per ogni modello di istanza, nonché i parametri di aggiornamento.

gcloud

Utilizza il comando describe.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    [--zone=ZONE | --region=REGION]

Puoi anche utilizzare il comando gcloud compute instance-groups managed wait-until con il flag --version-target-reached per attendere fino a quando status.versionTarget.isReached non viene impostato su true per il gruppo:

gcloud compute instance-groups managed wait-until INSTANCE_GROUP_NAME \
    --version-target-reached \
    [--zone=ZONE | --region=REGION]

REST

Chiama il metodo get su un regionale o a livello di zona risorsa MIG.

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

Verificare se l'implementazione di un aggiornamento è completa

Verifica che l'implementazione di un aggiornamento sia completa controllando il valore del parametro Campo status.versionTarget.isReached del gruppo di istanze gestite:

  • Il valore status.versionTarget.isReached impostato su true indica che tutte le istanze VM sono stati o vengono creati utilizzando la versione di destinazione.

  • status.versionTarget.isReached impostato su false indica che almeno una VM non utilizza ancora la versione di destinazione. In alternativa, nel caso di un aggiornamento canary, false indica che il numero di VM che utilizzano una versione di destinazione non corrisponde dimensione target.

Verificare se un gruppo di istanze gestite è stabile

Verifica che tutte le istanze in un gruppo di istanze gestite siano in esecuzione e in stato integro controllando il valore del campo status.isStable del gruppo.

status.isStable impostato su false indica che le modifiche sono attive, in attesa o che il gruppo di istanze gestite viene modificato.

status.isStable impostato su true indica quanto segue:

  • Nessuna delle istanze nel gruppo di istanze gestite (MIG) è soggetta a alcun tipo di modifica e il valore currentAction per tutte le istanze è NONE.
  • Non sono presenti modifiche in attesa per le istanze nel gruppo di istanze gestite.
  • Il gruppo di istanze gestite stesso non viene modificato.

Ricorda che la stabilità di un gruppo di istanze gestite dipende da numerosi fattori, in quanto un gruppo di istanze gestite può essere modificato in diversi modi. Ad esempio:

  • Invii una richiesta di implementazione di un nuovo modello di istanza.
  • Puoi effettuare una richiesta per creare, eliminare, ridimensionare o aggiornare le istanze nel gruppo di istanze gestite.
  • Un autoscaler richiede il ridimensionamento gruppo di istanze gestite
  • Una riparazione automatica che sostituisce una o più istanze in stato non integro nel gruppo di istanze gestite.
  • In un gruppo di istanze gestite a livello di regione, alcune istanze vengono ridistribuite.

Una volta completate tutte le azioni, status.isStable viene impostato di nuovo su true per quel MIG.

Azioni correnti sulle istanze

Utilizza Google Cloud CLI o REST per visualizzare i dettagli delle istanze in un gruppo di istanze gestite. I dettagli includono lo stato dell'istanza e le azioni correnti che il gruppo sta eseguendo sulle sue istanze.

gcloud

Tutte le istanze gestite

Per controllare lo stato e le azioni correnti su tutte le istanze del gruppo, usa il Comando list-instances.

gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
    [--zone=ZONE | --region=REGION]

Il comando restituisce un elenco di istanze nel gruppo, incluse le relative lo stato attuale, le azioni in corso e altri dettagli:

NAME               ZONE           STATUS   HEALTH_STATE  ACTION  INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
vm-instances-9pk4  us-central1-f                          CREATING  my-new-template
vm-instances-h2r1  us-central1-f  STOPPING                DELETING  my-old-template
vm-instances-j1h8  us-central1-f  RUNNING                 NONE      my-old-template
vm-instances-ngod  us-central1-f  RUNNING                 NONE      my-old-template

La colonna HEALTH_STATE appare vuota a meno che tu non abbia configurare il controllo di integrità.

Un'istanza gestita specifica

Per controllare lo stato e l'azione corrente per un'istanza specifica del gruppo: utilizza la Comando describe-instance.

gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    [--zone=ZONE | --region=REGION]

Il comando restituisce i dettagli dell'istanza, tra cui lo stato dell'istanza, l'azione corrente e, per le MIG stateful, lo stato preservato:

currentAction: NONE
id: '6789072894767812345'
instance: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-mig-hz41
instanceStatus: RUNNING
name: example-mig-hz41
preservedStateFromConfig:
  metadata:
    example-key: example-value
preservedStateFromPolicy:
  disks:
    persistent-disk-0:
      autoDelete: NEVER
      mode: READ_WRITE
      source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/disks/example-mig-hz41
version:
  instanceTemplate: https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template

REST

Chiama il metodo listManagedInstances su una risorsa MIG regionale o di zona. Ad esempio, per visualizzare i dettagli delle istanze in una risorsa MIG zonale, puoi effettuare la seguente richiesta:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/listManagedInstances

La chiamata restituisce un elenco di istanze per il gruppo di istanze gestite, tra cui instanceStatus e currentAction.

{
 "managedInstances": [
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates/example-template",
   "currentAction": "REFRESHING"
  }
 ]
}

Per visualizzare un elenco di valori di campo instanceStatus validi, consulta Ciclo di vita di un'istanza VM.

Se un'istanza è in fase di modifica, il gruppo di istanze gestite imposta il campo currentAction dell'istanza su una delle seguenti azioni su per aiutarti a tenere traccia dell'avanzamento del cambiamento. In caso contrario, il campo currentAction è impostato su NONE.

I valori di currentAction possibili sono:

  • ABANDONING. È in corso la rimozione dell'istanza dal gruppo di istanze gestite.
  • CREATING. L'istanza è in fase di creazione.
  • CREATING_WITHOUT_RETRIES. L'istanza viene creata senza nuovi tentativi. se l'istanza non viene creata al primo tentativo, il gruppo di istanze gestite non tenta di sostituire di nuovo l'istanza.
  • DELETING. L'istanza è in fase di eliminazione.
  • RECREATING. È in corso la sostituzione dell'istanza.
  • REFRESHING. È in corso la rimozione dell'istanza dai pool di destinazione attuali di nuovo aggiunto all'elenco dei pool di destinazione correnti (questo elenco potrebbe essere uguali o diversi dai pool di destinazione esistenti).
  • RESTARTING. L'istanza è in fase di riavvio utilizzando Metodi stop e start.
  • RESUMING. L'istanza è in fase di ripresa dopo essere stata sospeso.
  • STARTING. L'istanza è in fase di avvio dopo essere stata bloccata.
  • STOPPING. L'istanza è in fase di arresto.
  • SUSPENDING. L'istanza è in fase di sospensione.
  • VERIFYING. L'istanza è stata creata ed è in fase di verificati.
  • NONE. Non vengono eseguite azioni sull'istanza.

Eseguire il rollback di un aggiornamento

Non esiste un comando esplicito per il rollback di un aggiornamento a una versione precedente, ma se decidi di eseguire il rollback di un aggiornamento (un aggiornamento completamente eseguito o un aggiornamento canary), puoi farlo effettuando una nuova richiesta di aggiornamento e il modello di istanza di cui vuoi eseguire il rollback.

gcloud

Ad esempio, il seguente comando gcloud CLI esegue il rollback di un l'aggiornamento più rapidamente possibile. Sostituisci OLD_INSTANCE_TEMPLATE con il nome dell'istanza il modello di cui vuoi eseguire il rollback.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=OLD_INSTANCE_TEMPLATE_NAME \
    --max-unavailable=100% \
    [--zone=ZONE | --region=REGION]

REST

Chiama il metodo patch su un regionale o a livello di zona risorsa MIG.

Nel corpo della richiesta, specifica il modello di istanza precedente come version:

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

{
  "updatePolicy":
  {
    "maxUnavailable":
    {
      "percent": 100
    }
  },
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/OLD_INSTANCE_TEMPLATE_NAME" # Old instance template
    }
  ]
}

Per un gruppo di istanze gestite regionale con meno di 10 istanze, devi utilizzare un valore fisso per maxUnavailable e impostarlo sul numero di istanze nel gruppo.

Updater tratta una richiesta di rollback come una normale richiesta di aggiornamento, quindi puoi specificare opzioni di aggiornamento aggiuntive.

Interrompere un aggiornamento

Non esiste un metodo o un comando esplicito per interrompere un aggiornamento. Puoi modificare aggiornano da proattivo a opportunistico e se il gruppo non viene ridimensionato da altri servizi, come il gestore della scalabilità automatica, interrompe l'aggiornamento.

Per modificare un aggiornamento da proattivo a opportunistico utilizzando gcloud CLI, esegui questo comando:

gcloud compute instance-groups managed rolling-action stop-proactive-update INSTANCE_GROUP_NAME \
    [--zone=ZONE | --region=REGION]

Per interrompere completamente l'aggiornamento dopo la conversione da da proattivi a opportunistici, segui questi passaggi:

  1. Fai una richiesta per determinare quante istanze sono state aggiornate:

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
       [--zone=ZONE | --region=REGION]

    gcloud CLI restituisce una risposta che include un elenco di di istanze presenti nel gruppo e i relativi stati correnti:

    NAME               ZONE           STATUS   HEALTH_STATE  ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
    vm-instances-9pk4  us-central1-f  RUNNING  HEALTHY       NONE      example-new-template
    vm-instances-j1h8  us-central1-f  RUNNING  HEALTHY       NONE      example-old-template
    vm-instances-ngod  us-central1-f  STAGING  UNKNOWN       CREATING  example-new-template
    

    In questo esempio, due istanze sono già state aggiornate.

  2. Quindi, effettua una richiesta di esecuzione di un nuovo aggiornamento, ma passa il numero istanze che sono già state aggiornate come dimensione target:

    gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
       --version template=OLD_INSTANCE_TEMPLATE_NAME \
       --canary-version template=NEW_INSTANCE_TEMPLATE_NAME,target-size=2 \
       [--zone=ZONE | --region=REGION]

    Per Updater, questo aggiornamento sembra completo, quindi non vengono aggiornate altre istanze, interrompendo di fatto l'aggiornamento.

Controllo della velocità di un aggiornamento in sequenza

Per impostazione predefinita, quando effettui una richiesta di aggiornamento, Updater esegue l'aggiornamento il più rapidamente possibile. Se non hai la certezza di voler applicare completamente un aggiornamento o testando le modifiche, puoi controllare la velocità dell'aggiornamento utilizzando i seguenti metodi.

  1. Avvia un aggiornamento canary anziché uno completo.
  2. Imposta un valore elevato per minReadySec. Impostazione di questo valore fa sì che il programma di aggiornamento attenda questo numero di secondi prima di considerare aggiornato correttamente e passare all'istanza successiva.
  3. Abilita il controllo di integrità per fare in modo che l'Updater attenda l'avvio dell'applicazione e registri un segnale di integrità prima di considerare l'istanza aggiornata correttamente e proseguire con l'istanza successiva.
  4. Imposta valore minimo per maxUnavailable e maxSurge e i relativi valori. In questo modo, viene aggiornato solo un numero minimo di istanze alla volta.
  5. Aggiornare in modo selettivo le istanze in un gruppo di istanze gestite instead of using an automated update.

Puoi anche utilizzare una combinazione di questi metodi per controllare la frequenza dell'aggiornamento.

Controllo del livello di interruzione durante un aggiornamento in sequenza

A seconda della natura di un aggiornamento, l'stato del ciclo di vita di un'istanza potrebbe essere interrotto. Ad esempio: la modifica del disco di avvio di un'istanza richiede la sostituzione dell'istanza. Puoi controlla il livello di interruzione durante un aggiornamento in sequenza impostando quanto segue: opzioni:

  • Azione minima: utilizza questa opzione per ridurre al minimo le interruzioni il più possibile. o di applicare un'azione più invasiva del necessario.

    • Per limitare al massimo l'interruzione, imposta l'azione minima su REFRESH. Se l'aggiornamento richiede un'azione più invasiva, Compute Engine esegue l'azione necessaria per eseguire l'aggiornamento.
    • Per applicare un'azione più invasiva di quanto sia strettamente necessario, imposta il valore azione minima per RESTART o REPLACE. Ad esempio: Compute Engine non deve riavviare una VM per modificarne metadati. Tuttavia, se la tua applicazione legge i metadati dell'istanza solo quando viene riavviata una VM, puoi impostare l'azione minima su RESTART per rilevare le modifiche ai metadati.
  • Azione consentita più invasiva: utilizza questa opzione per impedire un aggiornamento se richiede un'interruzione superiore a quella che puoi permetterti. Se l'aggiornamento richiede un un'azione più invasiva rispetto a quella impostata con questo flag, la richiesta di aggiornamento non va a buon fine. Ad esempio, se imposti l'azione consentita più dannosa su RESTART, un tentativo di aggiornare l'immagine del disco di avvio non va a buon fine perché l'aggiornamento richiede la sostituzione dell'istanza, un'azione più dannosa di un riavvio.

Entrambe le opzioni accettano i seguenti valori:

ValoreDescrizioneQuali proprietà dell'istanza possono essere aggiornate?
REFRESHNon arrestare l'istanza.Dischi aggiuntivi, metadati dell'istanza, etichette, tag
RESTARTArresta l'istanza e avviala di nuovo.Dischi aggiuntivi, metadati dell'istanza, etichette, tag, tipo di macchina
REPLACE(opzione predefinita). Sostituisci l'istanza in base all'opzione Metodo di sostituzione.Tutte le proprietà dell'istanza archiviate nel modello di istanza o nella configurazione per istanza

L'azione più invasiva consentita non può essere meno invasiva dell'azione minima.

Quando implementi automaticamente gli aggiornamenti, vengono applicate le seguenti impostazioni predefinite:

  • L'azione minima predefinita è REPLACE. Se vuoi evitare inutili un'interruzione, imposta l'azione minima in modo che sia meno invasiva.
  • L'azione predefinita più invasiva consentita è REPLACE. Se non riesci tollerare tali interruzioni, impostare l'azione consentita più invasiva a meno dirompente.

Puoi modificare il comportamento predefinito utilizzando l'API Compute Engine per impostare i campi updatePolicy.minimalAction e updatePolicy.mostDisruptiveAllowedAction nella risorsa MIG, ad esempio chiamando il metodo regionInstanceGroupManagers.patch. In alternativa, puoi selezionare le Azioni consentite per aggiornare le VM specifiche. quando aggiorni il gruppo di istanze gestite dalla console Google Cloud. Per visualizzare le impostazioni correnti, consulta Ottenere le proprietà di un gruppo di istanze gestite.

Un aggiornamento non va a buon fine se richiede un'azione più invasiva di quella consentita. Se se accade, puoi riprovare a eseguire l'aggiornamento con una richiesta o eseguire l'azione aggiornare selettivamente l'istanza. Compute Engine esegue una convalida secondo il criterio del massimo impegno per verificare se le istanze possono essere aggiornate con il limite di interruzione specificato. Tuttavia, a causa di modifiche contemporanee in al sistema, la situazione può cambiare dopo l'avvio dell'aggiornamento. Se un'operazione su una determinata istanza non riesce, elenca gli errori dell'istanza per visualizzare l'errore.

Eseguire una sostituzione o un riavvio graduale

Un riavvio in sequenza arresta e riavvia tutte le istanze, mentre una sostituzione in sequenza sostituisce le istanze in base al metodo di sostituzione . Un riavvio o una sostituzione graduale non modificano nessun altro aspetto del gruppo, incluso il modello di istanza.

Esistono molti motivi per cui potresti voler eseguire un riavvio o un remplacement graduale. Ad esempio, potresti voler riavviare o sostituire le istanze VM di tanto in tanto per uno dei seguenti motivi:

  • Elimina le fughe di memoria.
  • Riavvia l'applicazione in modo che possa essere eseguita da una nuova macchina.
  • Applica una sostituzione periodica come best practice per testare le VM.
  • Aggiorna l'immagine del sistema operativo della VM o esegui di nuovo gli script di avvio per aggiornare il software.

Utilizza la console Google Cloud, Google Cloud CLI o REST per eseguire un riavvio o una sostituzione.

Console

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

    Vai a Gruppi di istanze

  2. Seleziona il gruppo di istanze gestite con le VM che vuoi riavviare o sostituire.
  3. Fai clic su Riavvia/sostituisci le VM.
  4. In Operazione, seleziona Riavvia o Sostituisci.
  5. Per avviare l'operazione, fai clic su Riavvia VM o Sostituisci VM.

gcloud

Utilizza il comando restart o il comando replace.

Il seguente comando sostituisce tutte le istanze nel gruppo di istanze gestite, una alla volta:

gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME

Il seguente comando riavvia ogni istanza, una alla volta:

gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME

Puoi personalizzare ulteriormente ciascuno di questi comandi con le stesse opzioni disponibili per gli aggiornamenti (ad esempio maxSurge e maxUnavailable).

REST

Chiama il metodo patch su un regionale o a livello di zona risorsa MIG.

Nel campo updatePolicy.minimalAction, specifica RESTART o REPLACE. Nel campo versions.instanceTemplate, specifica il modello corrente.

Per attivare l'azione, devi anche aggiornare il campo versions.name, ad esempio aggiungendo un timestamp. In un secondo momento, puoi elencare le VM del gruppo di istanze gestite e ispezionare il campo versions.name di ogni VM per determinare quali VM sono state sostituite o riavviate.

Ad esempio, per un gruppo di istanze gestite zonale, la richiesta seguente mostra la configurazione minima necessaria per riavviare automaticamente il 100% delle istanze.

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
 "updatePolicy": {
  "minimalAction": "RESTART",
  "type": "PROACTIVE"
 },
 "versions": [
  {
   "instanceTemplate": "global/instanceTemplates/CURRENT_INSTANCE_TEMPLATE_NAME",
   "name": "v2-1705499403"
  }
 ]
}

Altri esempi di sostituzione/riavvio

Esegui un riavvio graduale di tutte le VM, due alla volta

Questo comando riavvia tutte le VM nel gruppo, due alla volta. Nota che nessun nuovo specificato per il modello di istanza.

gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \
    --max-unavailable=2 \
    [--zone=ZONE | --region=REGION]

Esegui un riavvio in sequenza di tutte le VM il più rapidamente possibile

gcloud compute instance-groups managed rolling-action restart INSTANCE_GROUP_NAME \
    --max-unavailable=100% \
    [--zone=ZONE | --region=REGION]

Esegui una sostituzione in sequenza di tutte le VM il più rapidamente possibile

gcloud compute instance-groups managed rolling-action replace INSTANCE_GROUP_NAME  \
    --max-unavailable=100% \
    [--zone=ZONE | --region=REGION]

Preservare i nomi delle istanze

Se devi conservare i nomi delle istanze VM durante un aggiornamento, imposta il valore Da replacementMethod a RECREATE. Devi anche impostare maxUnavailable su un valore maggiore di 0 e maxSurge su 0. Ricreare le istanze anziché sostituirle il completamento dell'aggiornamento richiede più tempo, mentre le istanze aggiornate mantenere i loro nomi.

Se non specifichi un metodo di sostituzione, viene utilizzato il valore updatePolicy.replacementMethod corrente del gruppo di istanze gestite. Se non è configurata, l'impostazione predefinita viene utilizzato il valore substitute, che sostituisce le istanze VM con nuove che hanno nomi generati casualmente.

gcloud

Quando invii un comando rolling-action, includono il flag --replacement-method=recreate.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --replacement-method=recreate \
    --version=template=NEW_TEMPLATE \
    --max-unavailable=5 \
    [--zone=ZONE | --region=REGION]

REST

Chiama il metodo patch su una risorsa MIG regionale o di zona. Nel corpo della richiesta, includi il parametro Campo updatePolicy.replacementMethod:

PATCH /compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
{
    "updatePolicy": {
        "type": "PROACTIVE",
        "maxUnavailable": { "fixed": 5 },
        "replacementMethod": "RECREATE"
    },
    "versions": [ {
        "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
    } ]
}

Dopo aver effettuato una richiesta, puoi monitorare l'aggiornamento per sapere quando è terminato.

Aggiornamento di un gruppo di istanze gestite regionale

Un gruppo di istanze gestite a livello di regione contiene istanze VM distribuite in più zone all'interno di una regione, diversamente da un gruppo di istanze gestite a livello di zona, che contiene solo istanze in una zona. MIG a livello di regione di distribuire le istanze in più zone per migliorare la disponibilità dell'applicazione e a supportare casi estremi in cui una zona si arresta o un intero gruppo di istanze smette di rispondere.

Eseguire un aggiornamento su un gruppo di istanze gestite a livello di regione equivale a eseguire un aggiornamento su un un gruppo di istanze gestite a livello di zona, con alcune eccezioni descritte di seguito. Quando avvii un aggiornamento di un gruppo di istanze gestite a livello di regione, il programma di aggiornamento aggiorna sempre le istanze in modo proporzionale in modo uniforme in ogni zona. Non puoi scegliere quali istanze e zone vengono aggiornati prima né puoi scegliere di aggiornare le istanze in una sola zona.

Differenze tra l'aggiornamento dei MIG a livello di regione e a livello di zona

I MIG a livello di area geografica hanno i seguenti valori di aggiornamento predefiniti:

  • maxUnavailable=NUMBER_OF_ZONES
  • maxSurge=NUMBER_OF_ZONES

NUMBER_OF_ZONES è il numero di zone associate al gruppo di istanze gestite a livello di regione. Per impostazione predefinita, il numero di zone per un gruppo di istanze gestite a livello di regione è 3. Ma puoi selezionare uno numero diverso.

Se utilizzi numeri fissi quando specifichi un aggiornamento, il numero fisso deve essere 0 o uguale o maggiore del numero di zone associate con il gruppo di istanze gestite a livello di regione. Ad esempio, se il gruppo è distribuito su tre zone, non puoi impostare maxSurge su 1 o 2 perché l'Updater deve creare un'istanza aggiuntiva in ciascuna delle tre zone.

Utilizzo di un numero fisso o di una percentuale nelle richieste di aggiornamento

Se specifichi un numero fisso nelle richieste di aggiornamento, questo viene diviso per il numero di zone nel gruppo di istanze gestite a livello di regione e distribuito in modo uniforme. Per Ad esempio, se specifichi maxSurge=10, il programma di aggiornamento divide 10 tra di zone nella regione e crea istanze in base a quel numero. Se il numero di istanze non si suddivide equamente tra le zone, l'aggiornamento aggiunge le istanze rimanenti a una zona casuale. Pertanto, per 10 istanze su tre zone, due delle zone ricevono 3 istanze e una zona ne riceve 4. La stessa logica viene applicato ai parametri maxUnavailable e targetSize per la versione canary aggiornamenti.

Puoi specificare una percentuale solo se il MIG contiene almeno 10 istanze VM. Le percentuali vengono gestite in modo leggermente diverso a seconda della situazione:

  • Se specifichi una percentuale di istanze VM per un aggiornamento canary, Updater tenta di distribuire le istanze in modo uniforme tra le zone. Il resto viene arrotondato per eccesso o per difetto in ogni zona, ma la differenza totale non è superiore a 1 istanza VM per gruppo. Ad esempio, per un gruppo di istanze gestite con 10 istanze e una percentuale di dimensioni target del 25%, l'aggiornamento viene implementato su 2-3 istanze VM.

  • Se specifichi una percentuale per le opzioni di aggiornamento, come maxSurge e maxUnavailable, le percentuali vengono arrotondate in modo indipendente per zona.

Passaggi successivi