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

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

Compute Engine gestisce le VM in un gruppo di istanze gestite in base ai componenti di configurazione utilizzati: modello di istanza, configurazione facoltativa di 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 impostare un aggiornamento automatico, chiamato anche tipo di aggiornamento proattivo. Il gruppo di istanze gestite implementa automaticamente gli aggiornamenti della configurazione in tutte o in un sottoinsieme delle VM del gruppo. Puoi controllare la velocità di deployment, il livello di interruzione del servizio e, 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 ulteriori input e l'aggiornamento verrà completato automaticamente.

In alternativa, se vuoi applicare selettivamente una nuova configurazione solo a istanze nuove o specifiche in un gruppo di istanze gestite, consulta Applicare selettivamente 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 aggiorni un gruppo di istanze gestite stateful, consulta la sezione Applicazione, visualizzazione e rimozione della configurazione stateful nei gruppi di istanze gestite.
  • 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.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    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

Limitazioni

  • Se disponi di un gruppo di istanze gestite stateful e vuoi utilizzare aggiornamenti in sequenza automatici, devi mantenere i nomi delle istanze quando sostituisci le istanze o, equivalentemente, impostare 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 configurazione prevista. L'aggiornamento in sequenza ignora automaticamente le istanze già nell'ultima configurazione.

Puoi controllare vari aspetti di un aggiornamento in sequenza, come il numero di istanze che è possibile mettere offline per l'aggiornamento, il tempo di attesa tra un aggiornamento e l'altro, se il nuovo modello interessa tutte o solo una parte delle istanze e così via.

Quando esegui un aggiornamento in sequenza, tieni presente quanto segue:

  • Gli aggiornamenti sono basati sull'intent. Quando effettui la richiesta di aggiornamento iniziale, l'API Compute Engine restituisce una risposta riuscita per confermare che la richiesta sia valida, ma non indica che l'aggiornamento è riuscito. Devi controllare lo stato del gruppo per determinare se il deployment dell'aggiornamento è stato eseguito correttamente.

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

  • Gli aggiornamenti automatici supportano fino a due versioni di modelli di istanza nel gruppo di istanze gestite. Ciò significa che puoi specificare due diverse versioni dei modelli 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 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 a cui eseguire l'aggiornamento. La dimensione di destinazione viene impostata automaticamente su 100%, a indicare 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, specifica la zona
  • REGION: per i MIG a livello di regione, specifica la regione

REST

Chiama il metodo patch su una risorsa MIG a livello di regione o a livello di zona.

Ad esempio, per un gruppo di istanze gestite a livello di regione, la richiesta seguente mostra la configurazione minima necessaria per l'aggiornamento automatico del 100% delle istanze al 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 è terminato.

Per le configurazioni avanzate, includi altre opzioni di aggiornamento. Se non specifichi diversamente, le opzioni maxSurge e maxUnavailable vengono impostate automaticamente su 1 moltiplicate per il numero di zone interessate. Ciò significa che solo un'istanza viene scollegata in ogni zona interessata e il gruppo di istanze gestite crea solo un'istanza aggiuntiva 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 automatici o proattivi
  • Aggiornamenti selettivi oppure opportunistici

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

In alternativa, se un aggiornamento automatico è potenzialmente troppo fastidioso, puoi scegliere di eseguire un aggiornamento opportunistico. Il gruppo di istanze gestite applica un aggiornamento opportunistico solo quando avvii manualmente l'aggiornamento sulle 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, ridimensiona il gruppo di istanze gestite. Compute Engine non avvia attivamente le richieste di applicazione di aggiornamenti opportunistici sulle istanze esistenti.

Per saperne di più 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 al di sopra del relativo targetSize durante un aggiornamento automatico. Ad esempio, se imposti maxSurge su 5, il gruppo di istanze gestite utilizza il nuovo modello di istanza per creare fino a cinque nuove istanze oltre la dimensione di destinazione. L'impostazione di un valore maxSurge più elevato velocizza l'aggiornamento, a discapito di istanze aggiuntive, fatturate in base al listino prezzi di Compute Engine. prezzi di

Puoi specificare un numero fisso o, se il gruppo ha 10 o più istanze, una percentuale. Se imposti una percentuale, il programma di aggiornamento arrotonda per eccesso il numero di istanze, se necessario.

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

maxSurge funziona solo se disponi di quota o risorse sufficienti per supportare le 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 su 5, solo 5 istanze alla volta vengono scollegate per l'aggiornamento. Utilizza questa opzione per controllare il livello di disturbo dell'aggiornamento per il tuo servizio e per controllare la frequenza con cui viene eseguito il deployment dell'aggiornamento.

Questo numero include anche le istanze non disponibili per altri motivi. Ad esempio, se il gruppo è in fase di ridimensionamento, le istanze in fase di creazione potrebbero non essere disponibili. Queste istanze vengono conteggiate ai fini del numero di maxUnavailable.

Puoi specificare un numero fisso o, se il gruppo ha 10 o più istanze, una percentuale. Se imposti una percentuale, il programma di aggiornamento arrotonda per difetto il numero di istanze, se necessario.

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

Se non imposti il valore maxUnavailable, viene utilizzato il valore predefinito. Per i gruppi di istanze gestite a livello di zona, il valore predefinito è 1. Per i gruppi di istanze gestite a livello di regione, il valore predefinito è il numero di zone associate al gruppo (per impostazione predefinita 3).

Tempo di attesa minimo

Utilizza l'opzione minReadySec per specificare il tempo di attesa prima di considerare aggiornata un'istanza nuova o riavviata. Utilizza questa opzione per controllare la frequenza con cui viene eseguito il deployment dell'aggiornamento automatico. Il timer si avvia quando vengono 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à restituisca uno 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à venga restituito come HEALTHY.
  2. Successivamente, attende il periodo di tempo specificato da minReadySec.

Se il controllo di integrità non restituisce HEALTHY nell'intervallo initialDelaySec, il programma di aggiornamento dichiara l'istanza VM come non integro e potenzialmente arresta l'aggiornamento. Mentre l'istanza VM è in attesa di verifica durante il periodo di tempo initialDelaySec e minReadySec, 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 del campo minReadySec è 3600 secondi (1 ora).

Il seguente diagramma mostra in che modo le opzioni relative a dimensione di destinazione, numero massimo non disponibile, picco massimo e tempo di attesa minimo influiscono sulle istanze. Per scoprire di più sulle dimensioni di destinazione, consulta gli 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 il più possibile le interruzioni o per applicare un'azione più di disturbo di quella strettamente necessaria. Ad esempio, Compute Engine non ha bisogno di riavviare una VM per modificare i relativi metadati. Tuttavia, se l'applicazione legge i metadati dell'istanza solo al riavvio di una VM, puoi impostare l'azione minima per il riavvio in modo da raccogliere 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 programma di aggiornamento tenta di riavviare le istanze per applicare l'aggiornamento. Tuttavia, se cambi il sistema operativo, operazione che non può essere eseguita riavviando l'istanza, il programma di aggiornamento sostituisce le istanze nel gruppo con nuove istanze VM.

Per maggiori informazioni, incluse le opzioni valide, consulta Controllare il livello di interruzione durante un aggiornamento in sequenza.

Azione consentita più invasiva

Utilizza l'opzione di azione consentita più di disturbo per evitare un aggiornamento se richiede più interruzioni di quanto tu possa permetterti. Se non è possibile completare un aggiornamento a causa di questa impostazione, l'aggiornamento non va a buon fine e le VM mantengono la configurazione precedente.

Per maggiori informazioni, consulta Controllare il livello di interruzione durante un aggiornamento in sequenza.

Metodo di sostituzione

Per impostazione predefinita, quando aggiorni proattivamente un gruppo di istanze gestite, il gruppo elimina le istanze VM e le scambia con nuove istanze con nuovi nomi. Se devi conservare i nomi delle istanze VM, utilizza l'opzione replacementMethod.

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

Per mantenere i nomi delle istanze, imposta il metodo sostitutivo 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 più velocemente le istanze VM durante gli aggiornamenti perché le nuove VM vengono create prima dell'arresto di quelle vecchie. Tuttavia, i nomi delle istanze non vengono conservati perché sono ancora utilizzati dalle istanze precedenti.

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

Per ulteriori informazioni, consulta Conservazione dei nomi delle istanze.

Altri esempi di aggiornamento

Di seguito sono riportati alcuni esempi della riga di comando con opzioni di configurazione comuni.

Esegui un aggiornamento in sequenza di tutte le istanze VM, ma crea fino a 5 nuove istanze contemporaneamente superiori alla dimensione di destinazione

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 tempo di attesa 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 crea fino al 10% di nuove istanze contemporaneamente superiori alla dimensione di destinazione

Ad esempio, se hai 1000 istanze ed esegui il comando seguente, il programma di aggiornamento crea fino a 100 istanze prima di iniziare a rimuovere le istanze 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 un sottoinsieme casuale di istanze, anziché implementare un aggiornamento potenzialmente dannoso in tutte le tue istanze. Se un aggiornamento non va a buon fine, devi solo eseguire il rollback del sottoinsieme di istanze, riducendo al minimo l'interruzione per i tuoi utenti.

Un aggiornamento canary è uguale a un aggiornamento in sequenza standard, ad eccezione del fatto che il numero di istanze da aggiornare è inferiore alla dimensione totale del gruppo di istanze. Come nel caso di un aggiornamento in sequenza standard, puoi configurare opzioni aggiuntive per controllare il livello di interruzione del tuo servizio.

Avvio di un aggiornamento canary

Per avviare un aggiornamento canary, specifica fino a due versioni di un modello di istanza, in genere un nuovo modello di istanza per la versione canary e il modello di istanza corrente per le altre istanze. Ad esempio, puoi specificare che il 20% delle istanze verrà creato in base a NEW_INSTANCE_TEMPLATE, mentre il resto delle istanze continuerà a essere eseguito su 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 del gruppo di istanze gestite o un modello di istanza globale.

Devi sempre specificare una dimensione di destinazione (targetSize) per la versione canary. Non puoi avviare un aggiornamento canary se ometti la dimensione di destinazione per la versione canary. Ad esempio, se hai specificato che il 10% delle istanze deve essere utilizzato per la canary, il restante 90% 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 come canary.
  5. In Dimensione target, inserisci la percentuale o il numero fisso di istanze che vuoi utilizzare per la versione 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 il comando rolling-action start-update. Fornisci sia il modello attuale sia il nuovo modello per esprimere esplicitamente quante istanze devono utilizzare ciascun 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: nome del gruppo di istanze.
  • CURRENT_INSTANCE_TEMPLATE_NAME: il modello di 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 l'aggiornamento. Devi applicare la proprietà target-size al modello --canary-version. Puoi impostare una percentuale solo se il gruppo contiene 10 o più istanze.
  • ZONE: per i gruppi di istanze gestite a livello di zona, specifica la zona.
  • REGION: per i MIG a livello di regione, specifica la regione.

Ad esempio, il seguente comando esegue un aggiornamento canary che implementa example-template-B al 10% delle istanze nel 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 a livello di regione o a livello di zona. Nel corpo della richiesta, includi sia il modello di istanza corrente sia 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 la percentuale di istanze canary questo aggiornamento. Puoi impostare una percentuale solo se il gruppo contiene 10 o più istanze. Altrimenti, fornisci un numero fisso.
  • CURRENT_INSTANCE_TEMPLATE_NAME: il nome del modello di istanza corrente che il gruppo è in esecuzione.

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

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

Roll forwarding di un aggiornamento canary

Dopo aver eseguito un aggiornamento canary, puoi decidere se eseguire il commit dell'aggiornamento sul 100% del gruppo di istanze gestite o eseguirne 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 le dimensioni di destinazione del modello canary a 100% per inoltrare il modello a tutte le istanze. In alternativa, puoi sostituire il modello principale con quello canary e rimuovere il 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 inviando 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 una risorsa MIG a livello di regione o a livello di zona. Nel corpo della richiesta, specifica il nuovo modello di istanza come version e ometti il modello di istanza precedente dal corpo della richiesta. Ometti le specifiche delle dimensioni di destinazione per implementare l'aggiornamento al 100% delle istanze. 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 di Monitoring

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

Stato del gruppo

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

Console

Puoi monitorare un aggiornamento in sequenza per un gruppo accedendo alla pagina dei 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. La pagina 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 visualizzare il numero attuale e quello di destinazione di istanze per ogni modello, 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 che status.versionTarget.isReached sia 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 una risorsa MIG a livello di regione o a livello di zona.

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

Verifica del completamento dell'implementazione di un aggiornamento

Verifica se l'implementazione di un aggiornamento è completa controllando il valore del campo status.versionTarget.isReached del gruppo di istanze gestite:

  • status.versionTarget.isReached impostato su true indica che tutte le istanze VM sono state o sono in fase di creazione utilizzando la versione di destinazione.

  • status.versionTarget.isReached impostato su false indica che almeno una VM non utilizza ancora la versione di destinazione. Oppure, in caso di aggiornamento canary, false indica che il numero di VM che utilizzano una versione di destinazione non corrisponde alla dimensione di destinazione.

Verifica della stabilità di un gruppo di istanze gestite

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 è in fase di modifica.

status.isStable impostato su true indica quanto segue:

  • Nessuna delle istanze nel gruppo di istanze gestite è in fase di modifica di alcun tipo e il valore currentAction per tutte le istanze è NONE.
  • Nessuna modifica in attesa per le istanze nel gruppo di istanze gestite.
  • Il gruppo di istanze gestite non è in fase di modifica.

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

  • Effettua una richiesta per implementare un nuovo modello di istanza.
  • Effettua una richiesta di creazione, eliminazione, ridimensionamento o aggiornamento delle istanze nel gruppo di istanze gestite.
  • Un gestore della scalabilità automatica richiede il ridimensionamento del gruppo di istanze gestite.
  • Una risorsa di riparazione automatica 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.

Al termine di tutte le azioni, il criterio status.isStable viene impostato di nuovo su true per quel gruppo di istanze gestite.

Azioni attuali sulle istanze

Utilizza Google Cloud CLI o REST per visualizzare i dettagli sulle 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 verificare lo stato e le azioni correnti su tutte le istanze del gruppo, utilizza 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, incluso lo stato, le azioni correnti 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 configurato il controllo di integrità.

Un'istanza gestita specifica

Per controllare lo stato e l'azione corrente per un'istanza specifica nel gruppo, utilizza il 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 attuale e, per i MIG stateful, lo stato conservato:

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 a livello di regione o a livello di zona. Ad esempio, per visualizzare i dettagli delle istanze in una risorsa MIG a livello di zona, 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, inclusi instanceStatus e currentAction di ogni istanza.

{
 "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 validi dei campi instanceStatus, consulta Ciclo di vita delle istanze VM.

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

I possibili valori di currentAction 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 tenterà di sostituire nuovamente l'istanza.
  • DELETING. L'istanza è in fase di eliminazione.
  • RECREATING. L'istanza è in fase di sostituzione.
  • REFRESHING. L'istanza viene rimossa dai pool di destinazione attuali e aggiunta nuovamente all'elenco dei pool di destinazione attuali (questo elenco potrebbe essere uguale o diverso da quello dei pool di destinazione esistenti).
  • RESTARTING. È in corso il riavvio dell'istanza utilizzando i metodi stop e start.
  • RESUMING. L'istanza è in fase di ripresa dopo la sospensione.
  • STARTING. L'istanza è in fase di avvio dopo l'arresto.
  • STOPPING. L'istanza è in fase di arresto.
  • SUSPENDING. L'istanza è in fase di sospensione.
  • VERIFYING. L'istanza è stata creata ed è in corso la verifica.
  • NONE. Non è in corso l'esecuzione di alcuna azione sull'istanza.

Rollback di un aggiornamento

Non esiste un comando esplicito per eseguire 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 passando il modello di istanza a cui vuoi eseguire il rollback.

gcloud

Ad esempio, il seguente comando gcloud CLI esegue il rollback di un aggiornamento il più rapidamente possibile. Sostituisci OLD_INSTANCE_TEMPLATE con il nome del modello di istanza 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 una risorsa MIG a livello di regione o a livello di zona.

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 a livello di regione con meno di 10 istanze, devi utilizzare un valore fisso per maxUnavailable e impostare il valore sul numero di istanze nel gruppo.

Il programma di aggiornamento tratta una richiesta di rollback come una normale richiesta di aggiornamento, quindi puoi specificare ulteriori opzioni di aggiornamento.

Interruzione di un aggiornamento

Non sono presenti metodi o comandi espliciti per interrompere un aggiornamento. Puoi modificare un aggiornamento da proattivo ad opportunistico e, se il gruppo non viene ridimensionato da altri servizi come il gestore della scalabilità automatica, la modifica in opportunistico interrompe in modo efficace l'aggiornamento.

Per modificare un aggiornamento da proattivo a opportunistico, utilizzando l'interfaccia a riga di comando gcloud, 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 averlo convertito da proattivo ad opportunistico, procedi nel seguente modo:

  1. Effettua 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 istanze nel gruppo e i relativi stati attuali:

    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 per eseguire un nuovo aggiornamento, ma trasmetti il numero di istanze già 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 il programma di aggiornamento, questo aggiornamento sembra completo, quindi non viene aggiornata nessun'altra istanza, interrompendo di fatto l'aggiornamento.

Controllo della velocità di un aggiornamento in sequenza

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

  1. Avvia un aggiornamento canary anziché un aggiornamento completo.
  2. Imposta un valore minReadySec grande. L'impostazione di questo valore fa sì che il programma di aggiornamento attenda questo numero di secondi prima di considerare l'aggiornamento dell'istanza correttamente e di passare all'istanza successiva.
  3. Abilita il controllo di integrità per far sì che il programma di aggiornamento attenda l'avvio dell'applicazione e segnali un segnale integro prima di considerare l'aggiornamento dell'istanza correttamente e di passare all'istanza successiva.
  4. Imposta valori maxUnavailable e maxSurge bassi. Ciò garantisce che venga aggiornato solo un numero minimo di istanze alla volta.
  5. Aggiorna le istanze in modo selettivo in un gruppo di istanze gestite anziché utilizzare un aggiornamento automatico.

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

Controllare il livello di interruzione durante un aggiornamento in sequenza

A seconda della natura di un aggiornamento, potrebbe interrompere lo stato del ciclo di vita di un'istanza. Ad esempio, per modificare il disco di avvio di un'istanza è necessario sostituire l'istanza. Puoi controllare il livello di interruzione durante un aggiornamento in sequenza impostando le seguenti opzioni:

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

    • Per limitare il più possibile le interruzioni, imposta l'azione minima su REFRESH. Se l'aggiornamento richiede un'azione più invasiva, Compute Engine esegue l'azione necessaria per eseguirlo.
    • Per applicare un'azione più invasiva di quella strettamente necessaria, imposta l'azione minima su RESTART o REPLACE. Ad esempio, Compute Engine non ha bisogno di riavviare una VM per modificarne i metadati. Tuttavia, se l'applicazione legge i metadati dell'istanza solo al riavvio di una VM, puoi impostare l'azione minima su RESTART per recuperare le modifiche ai metadati.
  • Azione consentita più di disturbo: utilizza questa opzione per evitare un aggiornamento se richiede più interruzioni di quanto puoi permetterti. Se l'aggiornamento richiede un'azione più invasiva rispetto a quella impostata con questo flag, la richiesta di aggiornamento non va a buon fine. Ad esempio, se imposti RESTART l'azione consentita più invasiva, significa che un tentativo di aggiornamento dell'immagine del disco di avvio non va a buon fine perché l'aggiornamento richiede la sostituzione dell'istanza, un'azione più invasiva rispetto al riavvio.

Entrambe le opzioni accettano i seguenti valori:

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

L'azione consentita più di disturbo non può essere meno fastidiosa dell'azione minima.

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

  • L'azione minima predefinita è REPLACE. Se vuoi evitare interruzioni non necessarie, imposta l'azione minima in modo che sia meno fastidiosa.
  • L'azione predefinita più invasiva consentita è REPLACE. Se non puoi tollerare tali interruzioni, imposta l'azione consentita più di disturbo in modo che sia meno invasiva.

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 specifiche autorizzate ad aggiornare le VM 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 quanto consentito. In tal caso, puoi riprovare a eseguire l'aggiornamento con un'azione consentita più di disturbo oppure puoi aggiornare selettivamente l'istanza. Compute Engine esegue la convalida secondo il criterio del "best effort" per verificare se le istanze possono essere aggiornate con il limite di interruzione specificato. Tuttavia, a causa di cambiamenti contemporanei nel sistema, la situazione può cambiare dopo l'avvio dell'aggiornamento. Se un'operazione su una determinata istanza ha esito negativo, elenca gli errori dell'istanza per visualizzarli.

Esecuzione di una sostituzione o di un riavvio in sequenza

Un riavvio in sequenza arresta e riavvia tutte le istanze, mentre una sostituzione in sequenza sostituisce le istanze in base all'opzione del metodo di sostituzione. Un riavvio o una sostituzione in sequenza non cambiano nulla sul gruppo, incluso il modello di istanza.

Ci sono molti motivi per cui potresti volere un riavvio in sequenza o una sostituzione in sequenza. Ad esempio, di tanto in tanto potresti voler riavviare o sostituire le tue istanze VM per uno dei seguenti motivi:

  • Libera la tua memoria.
  • Riavvia l'applicazione in modo che possa essere eseguita da un nuovo computer.
  • Applica una sostituzione periodica come best practice per testare le tue 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 contenente le VM da riavviare o sostituire.
  3. Fai clic su Riavvia/sostituisci 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 una alla volta tutte le istanze nel gruppo di istanze gestite:

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 una risorsa MIG a livello di regione o a livello di zona.

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

Per attivare l'azione, devi anche aggiornare il campo versions.name, ad esempio aggiungendolo con un timestamp. In seguito, 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 a livello di zona, 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 in sequenza di tutte le VM, due alla volta

Questo comando riavvia tutte le VM nel gruppo, due alla volta. Tieni presente che non viene specificato nessun nuovo 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]

Conservazione dei nomi delle istanze

Se devi conservare i nomi delle istanze VM durante un aggiornamento, imposta replacementMethod su RECREATE. Devi anche impostare maxUnavailable in modo che sia maggiore di 0 e maxSurge in modo che sia 0. Se si ricreano le istanze invece di sostituirle, l'aggiornamento richiede più tempo, ma le istanze aggiornate mantengono i rispettivi nomi.

Se non specifichi un metodo sostitutivo, viene utilizzato l'attuale valore updatePolicy.replacementMethod del gruppo di istanze gestite. Se non è impostato, viene utilizzato il valore predefinito di substitute, che sostituisce le istanze VM con nuove istanze con nomi generati in modo casuale.

gcloud

Quando invii un comando rolling-action, includi 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 a livello di regione o a livello di zona. Nel corpo della richiesta, includi il 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 a livello di regione

Un gruppo di istanze gestite a livello di regione contiene istanze VM distribuite in più zone all'interno di una regione, a differenza di un gruppo di istanze gestite a livello di zona, che contiene solo istanze in una zona. I gruppi di istanze gestite a livello di regione consentono di distribuire le istanze in più zone per migliorare la disponibilità dell'applicazione e supportare casi estremi in cui una zona non funziona 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 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 e uniforme in ogni zona. Non puoi scegliere per prime le istanze in cui aggiornare le zone, né aggiornare le istanze in una sola zona.

Differenze tra l'aggiornamento dei gruppi di istanze gestite a livello di regione e di zona

I gruppi di istanze gestite a livello di regione 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. Tuttavia, puoi selezionare un numero diverso.

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

Utilizzare un numero fisso o una percentuale nelle richieste di aggiornamento.

Se specifichi un numero fisso nelle richieste di aggiornamento, il numero specificato viene diviso per il numero di zone nel gruppo di istanze gestite a livello di regione e viene distribuito in modo uniforme. Ad esempio, se specifichi maxSurge=10, il programma di aggiornamento divide il numero 10 tra il numero di zone nella regione e crea le istanze in base a questo numero. Se il numero di istanze non è diviso in modo uniforme tra le zone, il programma di aggiornamento aggiunge le istanze rimanenti a una zona casuale. Quindi, per 10 istanze in tre zone, due zone ricevono 3 istanze e una zona ne riceve 4. La stessa logica viene applicata ai parametri maxUnavailable e targetSize per gli aggiornamenti canary.

Puoi specificare una percentuale solo se il gruppo di istanze gestite contiene 10 o più 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, il programma di aggiornamento 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 un'istanza VM per gruppo. Ad esempio, per un gruppo di istanze gestite con 10 istanze e una percentuale di dimensione target del 25%, l'aggiornamento viene implementato in 2-3 istanze VM.

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

Passaggi successivi