Come funzionano i MIG stateful

Un gruppo di istanze gestite stateful (MIG stateful) conserva lo stato univoco di ogni istanza di macchina virtuale (VM), tra cui il nome della VM, i dischi permanenti collegati, gli indirizzi IP e/o i metadati, in caso di riavvio, ricreazione, ripristino automatico o aggiornamento della macchina.

Questa pagina descrive il funzionamento dei MIG stateful. Consulta la sezione Configurazione dei MIG stateful per scoprire come configurarne uno.

Panoramica del funzionamento dei MIG stateful

Un MIG è considerato stateful se hai creato una configurazione stateful.

Una configurazione stateful si crea impostando una policy stateful non vuota e/o una o più configurazioni per istanza non vuote:

La configurazione diventa effettiva dopo che tu o il MIG la applicate:

  • Un MIG applica automaticamente la configurazione delle policy stateful alle istanze nuove ed esistenti.
  • Quando crei o aggiorni le configurazioni per istanza, puoi scegliere se applicare la nuova configurazione manualmente o automaticamente.

Dopo aver applicato la configurazione stateful (policy stateful e/o configurazioni per istanza), puoi verificarla controllando lo stato conservato di ogni istanza gestita.

Le modifiche successive alle dimensioni o alla configurazione stateful del MIG (ad esempio, la riduzione delle dimensioni del MIG o l'eliminazione o l'abbandono di istanze dal MIG) possono influire sugli stati conservati delle istanze.

Come viene applicata la configurazione stateful alle istanze gestite

La configurazione stateful diventa effettiva dopo che tu o il MIG la applicate. L'applicazione della configurazione stateful alle istanze di un MIG dipende dalla configurazione:

  • Policy stateful: il MIG applica automaticamente la configurazione delle policy stateful alle istanze nuove ed esistenti.
  • Configurazioni per istanza: quando crei o aggiorni configurazioni per istanza, puoi scegliere se applicare la nuova configurazione manualmente o automaticamente.

Applicazione della configurazione stateful alle istanze gestite.

Come vengono applicati gli aggiornamenti della policy stateful alle istanze

Quando crei o aggiorni una policy stateful, ad esempio aggiungi o rimuovi un disco stateful, il MIG applica la configurazione della policy stateful a tutte le istanze gestite del gruppo automaticamente e in modo asincrono. Un MIG applica automaticamente la configurazione delle policy stateful alle nuove istanze durante la loro creazione, ad esempio quando viene aumentata la dimensione di un MIG o quando crei manualmente le istanze nel MIG.

Dopo aver applicato la configurazione, puoi vedere l'effetto dell'aggiornamento nello stato conservato dalla policy di ogni istanza gestita.

Gli aggiornamenti a una policy stateful non interrompono le VM in esecuzione.

Quando aggiorni una policy stateful per aggiungere un disco stateful, il MIG aggiorna ogni risorsa VM, modificando il valore del flag autoDelete del disco (instances.disks[].autoDelete):

  • Il MIG imposta autoDelete su FALSE per i dischi configurati come stateful. In questo modo si impedisce che il disco venga eliminato durante la ricreazione dell'istanza tramite ripristino automatico, aggiornamento o ricreazione manuale.
  • Il MIG imposta autoDelete in modo che corrisponda alla configurazione del template di istanza (instanceTemplates.disks[].autoDelete) per tutti i dischi che devono essere stateless.

La modifica del valore del flag autoDelete non interrompe una VM in esecuzione.

Come vengono applicati gli aggiornamenti della configurazione per istanza alle istanze

Quando crei o aggiorni una configurazione per istanza, puoi scegliere se applicare la nuova configurazione manualmente o automaticamente. Per saperne di più, consulta la sezione Applicazione di una configurazione stateful a partire da configurazioni per istanza.

La tabella seguente mostra i livelli di interruzione richiesti per applicare diversi aggiornamenti di configurazione per istanza a una VM:

Aggiornamento della configurazione per istanza Interruzione della VM richiesta per l'applicazione
Configura un disco, definito dal template di istanza, in modo che sia stateful (aggiunto alla configurazione per istanza) AGGIORNA
Configura un disco, definito dal template di istanza, in modo che sia stateless (rimosso dalla configurazione per istanza) AGGIORNA
Aggiungi un disco, non definito dal template di istanza, e collegalo alla VM AGGIORNA
Rimuovi un disco, non definito dal template di istanza, e scollegalo dalla VM AGGIORNA
Aggiungi una coppia chiave-valore dei metadati AGGIORNA
Rimuovi una coppia chiave-valore dei metadati AGGIORNA
Aggiungi un disco di avvio esterno, non creato dal template di istanza, e collegalo alla VM SOSTITUISCI
Rimuovi un disco di avvio esterno, non creato dal template di istanza, scollegalo dalla VM e crea un disco di avvio dal template di istanza SOSTITUISCI
Imposta un indirizzo IP interno SOSTITUISCI
Rimuovi un indirizzo IP interno SOSTITUISCI

Quando viene applicata una configurazione per istanza aggiornata alla VM corrispondente, il MIG esegue le seguenti azioni a seconda degli elementi stateful aggiornati:

  • Aggiunge (o rimuove) dischi, indirizzi IP o metadati allo stato conservato dalla configurazione nell'istanza gestita corrispondente.
  • Collega (o scollega) alla VM i dischi non definiti dal template di istanza.
  • Imposta (o rimuove) coppie chiave-valore dei metadati specifiche per la VM.
  • Assegna (o rimuove) gli indirizzi IP specificati all'istanza VM.

Dopo aver applicato una configurazione per istanza a una VM gestita corrispondente, puoi vedere l'effetto dell'aggiornamento nello stato conservato dalla configurazione dell'istanza.

Stato conservato di un'istanza gestita

Quando viene applicato, il MIG traduce il template di istanza e la configurazione stateful in uno "stato conservato" per ogni istanza gestita.

Puoi visualizzare lo stato conservato ispezionando un'istanza gestita.

Il MIG gestisce automaticamente gli stati conservati e li applica in automatico e in modo asincrono a ogni istanza VM effettiva corrispondente nel MIG.

Stato conservato delle VM gestite generate dall'applicazione di una configurazione stateful.

Lo stato conservato descrive quali singoli elementi (dischi permanenti, indirizzi IP, metadati) sono stateful per una determinata istanza:

Stato conservato generato dalla configurazione stateful applicata.

Lo stato conservato generato in base a una policy stateful viene archiviato separatamente rispetto allo stato conservato generato in base a una configurazione per istanza. Il MIG li combina entrambi durante la ricreazione di una VM, dando la priorità allo stato conservato da una configurazione per istanza.

Stato conservato in base alla policy stateful

Una policy stateful specifica gli elementi presenti in tutte le istanze e definiti nel template di istanza del MIG da conservare singolarmente per ogni istanza VM in un MIG.

Una volta applicata, il MIG traduce la policy stateful in stati conservati specifici per l'istanza (managedInstances[].preservedStateFromPolicy). Il MIG gestisce automaticamente gli stati conservati.

L'esempio seguente mostra un MIG con due istanze VM che utilizzano un disco stateful definito in una policy stateful applicata a ogni istanza. In questo esempio non sono presenti configurazioni per istanza.

Stato conservato generato solo dalla policy stateful.

La figura precedente mostra un MIG con due istanze:

  • Il template di istanza definisce un disco di avvio con nome dispositivo boot-disk, e un disco con nome di dispositivo data-disk per tutte le istanze nel MIG.
  • La policy stateful dichiara data-disk come stateful. Il disco di avvio rimane stateless. Tieni presente che il disco con il nome del dispositivo data-disk deve essere e viene definito dal template di istanza.
  • Dopo che viene applicata la configurazione, il MIG traduce la policy stateful in stati conservati specifici per ogni istanza gestita. Gli stati conservati chiedono al MIG di conservare il disco data-disk-1 per l'istanza VM node-1 e il disco data-disk-2 per l'istanza node-2, in quanto per entrambi i dischi è configurato il nome del dispositivo data-disk nella policy stateful.
  • Questo esempio non ha configurazioni per istanza.

Stato conservato in base alla configurazione per istanza

Una configurazione per istanza specifica gli elementi che devono essere conservati per una determinata VM. Questi elementi non devono essere definiti nel template di istanza del MIG.

Se applicato, il MIG traduce ogni configurazione per istanza in uno stato conservato (preservedStateFromConfig) per l'istanza corrispondente.

L'esempio seguente mostra un MIG con due istanze VM per le quali i metadati e i dischi stateful sono definiti nelle configurazioni per istanza (PIC) per ogni istanza. In questo esempio non è presente alcuna policy stateful.

Stato conservato generato solo dalle PIC.

Nella figura precedente:

  • Il template di istanza definisce un disco di avvio con il nome del dispositivo boot-disk per tutte le istanze del MIG. Il disco di avvio è stateless per tutte le VM nel MIG.
  • Le configurazioni per istanza definiscono gli stati da conservare per due istanze nel MIG: node-1 e node-2.
    • per l'istanza node-1, la configurazione per istanza definisce un disco my-legacy-1 con il nome di dispositivo legacy-disk e i metadati node-id:xyz273
    • per l'istanza node-2, la configurazione per istanza definisce un disco my-logs-1 con il nome di dispositivo logs-disk e i metadati node-id:pqr851
  • Dopo l'applicazione della configurazione, il MIG traduce automaticamente le configurazioni per istanza in stati conservati per ogni istanza gestita. Gli stati conservati ordinano al MIG di collegare e conservare quanto segue:
    • disco permanente my-legacy-1 e metadati node-id:xyz273 per la VM node-1
    • disco permanente my-logs-1 e metadati node-id:pqr851 per la VM node-2
  • Questo esempio non ha policy stateful.

Tieni presente che i dischi e i metadati nello stato conservato delle configurazioni per istanza non sono definiti dal template di istanza in questo esempio, ma solo dalle configurazioni per istanza. Questo perché la configurazione indicata in una configurazione per istanza è specifica per una determinata VM, il che significa che non deve essere presente nel template di istanza.

Le configurazioni per istanza hanno la priorità sulla policy stateful e sul template di istanza

In un MIG puoi configurare sia una policy stateful sia una o più configurazioni per istanza. Ad esempio, in una policy stateful puoi definire dischi stateful presenti in tutte le istanze e, nelle configurazioni per istanza, puoi definire metadati specifici per istanza.

La configurazione per istanza di un'istanza gestita ha la priorità sulla configurazione in conflitto nel template di istanza o in una policy stateful.

Se applichi una configurazione per istanza per aggiungere un disco o un'interfaccia di rete che è già definita in una policy stateful, il MIG memorizza la configurazione stateful per quel disco o quell'interfaccia di rete nello stato conservato dell'istanza gestita dalla configurazione per istanza (preservedStateFromConfig) e rimuove le voci in conflitto dal suo stato conservato dalla policy (preservedStateFromPolicy). Il MIG deve aggiornare la VM se il nuovo stato conservato è diverso da quello precedente. L'aggiornamento potrebbe comportare la modifica dei metadati, dell'indirizzo IP esterno o lo scambio del disco, per cui viene scollegato il disco dall'ultima configurazione dello stato conservato e si collega il disco specificato alla nuova configurazione dello stato conservato.

Nell'esempio seguente, la configurazione per istanza per l'istanza VM node-1 ridefinisce:

  • lo stato conservato per il disco con nome di dispositivo logs-disk, originariamente definito nella policy stateful
  • il valore per la chiave dei metadati logmonth, originariamente definito nel template di istanza.

La configurazione a partire dalle configurazioni per istanza ha la priorità sul template di istanza e sulla policy stateful.

Nella figura precedente:

  • Il template di istanza definisce:
    • Tre dischi per tutte le istanze del MIG, con nomi di dispositivo boot-disk, data-disk, logs-disk.
    • Metadati comuni a tutte le istanze: logmonth:jan.
  • La policy stateful dichiara che i dischi con i nomi di dispositivi data-disk e logs-disk sono stateful; il disco di avvio rimane stateless.
  • Una configurazione per istanza per l'istanza node-1 ridefinisce:
    • Configurazione stateful per un disco con nome di dispositivo logs-disk: indica al MIG di collegare il disco pd-logs-feb a node-1 sotto il nome di dispositivo logs-disk.
    • Metadati, definiti nel template di istanza, con la coppia chiave-valore logmonth:jan: indica al MIG di impostare il valore logmonth:feb su node-1.
  • Dopo aver applicato la configurazione, il MIG traduce automaticamente la policy stateful e la configurazione per istanza in uno stato conservato specifico per l'istanza, archiviato nell'istanza gestita.
    • Lo stato conservato dalla policy indica al MIG di conservare il disco data-disk-1 per la VM node-1. Tieni presente che lo stato conservato dalla policy non include la configurazione stateful per il disco con il nome di dispositivo logs-disk perché questa configurazione viene ignorata dalla configurazione per logs-disk nella configurazione per istanza.
    • Lo stato conservato dalla configurazione indica al MIG di collegare e conservare il disco permanente logs-disk e di impostare e conservare i metadati logmonth:feb per l'istanza VM node-1. Tieni presente che lo stato conservato dalla configurazione sostituisce la configurazione per logs-disk dalla policy stateful e i metadati logmonth:jan dal template di istanza.

In che modo la rimozione di una risorsa da una policy stateful influisce sullo stato conservato

Se rimuovi una configurazione della risorsa dalla policy stateful, il MIG rimuove in automatico il preservedStateFromPolicy corrispondente per tutte le istanze gestite. Le risorse di calcolo rimangono collegate alle istanze, ma non sono più stateful.

Nell'esempio seguente, la rimozione di un disco dalla policy stateful ne comporta la rimozione dagli stati conservati dalla policy in tutte le VM gestite. I dischi rimangono collegati alle VM, ma non sono più stateful e potrebbero essere eliminati e ricreati alla successiva ricreazione della VM.

Rimozione di un disco da una policy stateful.

Se lo stesso elemento, ad esempio un disco permanente stateful, è presente sia nella policy stateful sia in una configurazione per istanza e rimuovi la relativa configurazione stateful solo dalla policy stateful, il MIG non lo rimuove dalla configurazione per istanza. Per la VM corrispondente, la risorsa configurata rimane stateful.

Nel seguente esempio, la rimozione del disco dalla policy stateful non comporta la rimozione del disco dalla configurazione per istanza. Il disco rimane stateful perché fa ancora parte dello stato conservato dalla configurazione.

Rimozione di un disco da una policy stateful quando esiste anche una configurazione per istanza.

In che modo la rimozione di elementi dalle configurazioni per istanza influisce sullo stato conservato

Se rimuovi la configurazione stateful da una configurazione per istanza e applichi la modifica, il MIG rimuove automaticamente la configurazione stateful dallo stato conservato dalla configurazione (preservedStateFromConfig) nell'istanza gestita corrispondente. Le risorse di calcolo che non fanno più parte di alcuno stato conservato diventano stateless.

In che modo la rimozione della configurazione dei dischi stateful dalle configurazioni per istanza influisce sullo stato conservato

Se rimuovi un disco stateful da una configurazione per istanza e applichi la modifica all'istanza VM associata, il MIG esegue le seguenti operazioni:

  • La configurazione del disco viene rimossa dallo stato conservato dalla configurazione dell'istanza.
  • Se un disco con lo stesso nome di dispositivo è definito nel template di istanza, ma non è configurato in una policy stateful, il disco rimane collegato alla VM in questione. Tuttavia, il disco diventa stateless per la VM indicata e potrebbe essere ricreato in base alla configurazione del template di istanza alla successiva ricreazione, ripristino automatico o evento di aggiornamento della VM.
  • Se nel template di istanza non è definito un disco con lo stesso nome di dispositivo, viene scollegato in automatico dalla VM immediatamente dopo che viene applicata alla VM associata la configurazione per istanza aggiornata, indipendentemente dalla configurazione di eliminazione automatica.
  • Se un disco con lo stesso nome di dispositivo è configurato in una policy stateful, la relativa configurazione viene tradotta nello stato conservato dalla policy per suddetta istanza gestita e il disco rimane stateful.

Nell'esempio seguente, la rimozione di un disco blu e di uno verde dalla configurazione per istanza di node-1 comporta la rimozione di entrambi i dischi dallo stato conservato dell'istanza gestita node-1 dalla configurazione.

  • Il disco blu rimane collegato all'istanza VM node-1, ma ora è stateless e può essere ricreato alla successiva ricreazione della VM in base alla configurazione del template di istanza.
  • Il disco verde è scollegato dall'istanza VM node-1 perché il template di istanza non definisce un disco con lo stesso nome del dispositivo.

Rimozione dei dischi da una configurazione per istanza.

In che modo la rimozione dei metadati stateful dalle configurazioni per istanza influisce sullo stato conservato

La rimozione dei metadati stateful da una configurazione per istanza e l'applicazione della modifica fanno sì che il MIG rimuova immediatamente i metadati stateful dallo stato conservato dell'istanza gestita corrispondente:

  • Se hai definito i metadati con la stessa chiave nel template di istanza, il MIG applica immediatamente il valore del template all'istanza.
  • Se i metadati con la stessa chiave non sono definiti nel template di istanza, il MIG rimuove immediatamente la coppia chiave-valore dall'istanza.

Nell'esempio seguente, la rimozione dei metadati mode:dev e id:xyz273 dalla configurazione per istanza di node-1 comporta la rimozione di entrambe le coppie chiave-valore dallo stato conservato dell'istanza gestita node-1 dalla configurazione.

  • mode:dev viene sostituito da mode:test del template di istanza nella VM.
  • id:xyz273 viene rimosso immediatamente dalla VM perché il template di istanza non contiene metadati con la stessa chiave id con cui sostituirlo.

Rimozione dei metadati da una configurazione per istanza.

In che modo la rimozione della configurazione IP stateful dalle configurazioni per istanza influisce sullo stato conservato

La rimozione della configurazione IP interno dalla configurazione per istanza rende stateless l'indirizzo IP della VM. Non vengono apportate modifiche automatiche a questa VM, ma l'indirizzo IP può cambiare dopo la sua ricreazione, aggiornamento o ripristino automatico.

Ripristino della policy stateful

Se rimuovi la configurazione stateful di una risorsa da una configurazione per istanza e hai configurato la stessa risorsa nella policy stateful, la risorsa rimane stateful nel rispetto della policy stateful.

Il MIG rimuove automaticamente la configurazione stateful dell'elemento da preservedStateFromConfig e la aggiunge a preservedStateFromPolicy per l'istanza gestita corrispondente.

Nell'esempio seguente, la rimozione di un disco dalla configurazione per istanza di node-1 non comporta la rimozione del disco dalla policy stateful. Il disco rimane stateful in base alla policy stateful:

  • Il MIG rimuove automaticamente il disco dal preserveStateFromConfig per l'istanza gestita node-1 perché il disco non fa più parte della configurazione per istanza.
  • Il MIG aggiunge automaticamente il disco al preserveStateFromPolicy per l'istanza gestita node-1 perché la configurazione delle policy stateful è ancora in vigore e non è più in conflitto con la configurazione per istanza di node-1.

Rimozione di un disco da una configurazione per istanza, ma non dalla policy stateful.

Feedback

Vogliamo conoscere i tuoi casi d'uso, le tue sfide e i tuoi feedback sui MIG stateful. Condividi il tuo feedback con il nostro team all'indirizzo mig-discuss@google.com.

Passaggi successivi