Gruppi di istanze gestite stateful


Puoi creare deployment ad alta disponibilità di carichi di lavoro stateful su istanze VM utilizzando gruppi di istanze gestite (stateful MIG) stateful. I carichi di lavoro stateful includono applicazioni con dati o configurazioni stateful, come database, applicazioni monolitiche legacy e calcoli batch a lunga esecuzione con checkpointing.

Con i gruppi di istanze gestite stateful, puoi migliorare l'uptime e la resilienza di queste applicazioni stateful con la riparazione automatica (recupero automatico dei carichi di lavoro non riusciti), i deployment multizona e gli aggiornamenti in sequenza automatici.

Un gruppo di istanze gestite stateful conserva lo stato univoco di ogni istanza (incluso il nome dell'istanza, i dischi permanenti collegati, gli indirizzi IP e i metadati) in caso di riavvio, ricreazione, riparazione automatica o aggiornamento della VM.

Questa pagina descrive quando utilizzare i MIG stateful e fornisce una panoramica generale del loro funzionamento. Per ulteriori informazioni, consulta la pagina Come funzionano i MIG stateful.

Per scoprire come configurare un gruppo di istanze gestite stateful, consulta Configurazione dei gruppi di istanze gestite stateful.

Differenze tra i carichi di lavoro stateful e quelli stateless

Puoi utilizzare i gruppi di istanze gestite per supportare i workload sia stateful che stateless. La differenza principale tra i carichi di lavoro con stato e senza stato è che i carichi di lavoro con stato preservano lo stato delle singole VM (ad esempio uno shard di database o la configurazione dell'app) sui dischi della VM, mentre i carichi di lavoro senza stato, come un frontend web, non mantengono alcun stato sulle singole VM.

Tratta le VM con carichi di lavoro stateful come macchine personalizzate: ti preoccupi per l'identità (nome), l'indirizzo IP, i metadati e i dati di ciascuna singola macchina. Non puoi scalare facilmente i workload stateful in orizzontale perché il scaling potrebbe richiedere la replica dei dati, la creazione o l'eliminazione di shard di dati o la modifica della configurazione complessiva dell'applicazione. Quando ricrei o aggiorni una macchina con un carico di lavoro stateful, devi conservare lo stato univoco della VM. Alcuni esempi di applicazioni stateful sono Cassandra, ElasticSearch, MongoDB, MySQL, PostgreSQL e Kafka.

Tratti le VM con carichi di lavoro stateless come intercambiabili e ti preoccupi solo del numero di VM di servizio di cui disponi. Nessuna VM viene trattata in modo diverso rispetto alle altre. Puoi scalare facilmente i carichi di lavoro stateless in orizzontale aggiungendo o rimuovendo le VM. Quando aggiorni l'applicazione, puoi eliminare le macchine e sostituirle con altre con nomi, indirizzi IP, metadati e dischi diversi. Quando una VM senza stato viene eliminata o ricreata, tutti i dati della macchina vengono persi: i dischi vengono eliminati o ricreati da zero. Un frontend web è un esempio di applicazione stateless.

Gruppo di istanze gestite statefulGruppo di istanze gestite stateless
Carico di lavoro Carichi di lavoro stateful in cui i dischi, gli indirizzi IP e/o i metadati vengono conservati nelle operazioni di ricreazione delle VM. Carichi di lavoro stateless altamente disponibili e scalabili, in cui i dischi e gli indirizzi IP vengono ricreati da zero con la scalabilità orizzontale, la riparazione automatica, l'aggiornamento automatico e la ricreazione delle VM.
Funzionalità di MIG
  • Riparazione automatica
  • Aggiornamenti incrementali automatici
  • Deployment multizona
  • Riparazione automatica
  • Aggiornamenti incrementali automatici
  • Deployment multizona
  • Scalabilità automatica
Elementi che possono essere conservati
  • Nomi delle istanze
  • Dischi permanenti, incluso il supporto per i dischi non definiti nel modello di istanza
  • Metadati specifici dell'istanza
  • Indirizzi IP
Nomi delle istanze

Tutti i gruppi di istanze gestite supportano nomi di istanze personalizzati e preservabili.

Quando utilizzare i MIG stateful

Valuta la possibilità di utilizzare gruppi di istanze gestite stateful ogni volta che esegui il deployment di un'applicazione o un cluster stateful in Compute Engine e vuoi migliorare la relativa disponibilità con la riparazione automatica e i deployment multi-zona oppure vuoi semplificare gli aggiornamenti delle istanze stateful orchestrando gli implementazioni degli aggiornamenti e controllando il livello consentito di interruzione delle istanze.

I gruppi di istanze gestite stateful sono destinati alle applicazioni con dati o configurazione stateful, ad esempio:

  • Database. Ad esempio: Cassandra, ElasticSearch, mongoDB e ZooKeeper. Prima di decidere di utilizzare gli IGM con stato, ti consigliamo di utilizzare servizi completamente gestiti, ad esempio MySQL e PostgreSQL sono disponibili in Cloud SQL, per concentrarti sulle tue applicazioni e non dover gestire le VM.
  • Applicazioni di elaborazione dei dati. Ad esempio: Kafka e Flink. Prima di decidere di utilizzare gli MIG con stato, ti consigliamo di utilizzare servizi completamente gestiti, ad esempio Dataflow o Dataproc, per concentrarti sulle attività di elaborazione dei dati e non dover gestire le VM.
  • Altre applicazioni stateful. Ad esempio: TeamCity, Jenkins, Bamboo, server DNS con indirizzo IP stateful e carichi di lavoro stateful personalizzati.
  • Applicazioni monolitiche legacy. Queste applicazioni memorizzano lo stato dell'applicazione su un disco di avvio o su dischi permanenti aggiuntivi oppure si basano su una configurazione stateful, ad esempio nomi di istanze VM, indirizzi IP o valori delle chiavi dei metadati specifici.
  • Esegui i carichi di lavoro in batch con il checkpointing. Con questa configurazione, puoi conservare i risultati sottoposti a checkpoint dei calcoli a lunga esecuzione in previsione di un errore del carico di lavoro o della VM o di un prerilascio dell'istanza. I gruppi di istanze gestite con stato possono rielaborare una macchina in stato di errore, preservando il relativo disco di dati, in modo che il calcolo possa continuare dall'ultimo checkpoint.

Per garantire la resilienza contro i guasti zonali, l'applicazione deve replicare i dati su più istanze a livello di applicazione. Ad esempio, ElasticSearch e Cassandra supportano questa funzionalità. Puoi utilizzare un MIG regionale per rendere un'applicazione resiliente ai guasti zonali implementando repliche ridondanti in più zone e facendo affidamento sulla funzionalità di replica dei dati dell'applicazione. In caso di errore a livello di zona, i dati vengono pubblicati dalle repliche disponibili nelle zone rimanenti.

Esamina le limitazioni per verificare se un gruppo di istanze gestite stateful soddisfa completamente i tuoi requisiti.

Che cos'è un gruppo di istanze gestite stateful

Un gruppo di istanze gestite è considerato stateful se hai creato una configurazione stateful.

Puoi creare una configurazione stateful quando crei il gruppo di istanze gestite o puoi eseguire la conversione da un gruppo stateless a uno stateful dopo la creazione aggiungendo una configurazione.

Puoi creare una configurazione stateful impostando un criterio stateful non vuoto e/o una o più configurazioni per istanza non vuote:

  • Un criterio stateful definisce gli elementi che vuoi conservare per tutte le istanze del tuo MIG.
  • Una configurazione per istanza definisce gli elementi da conservare per un'istanza VM specifica.

La configurazione diventa effettiva dopo che tu o il gruppo di istanze gestite la applicate:

  • Un gruppo di istanze gestite applica automaticamente la configurazione dei criteri 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 con stato (criteri con stato e/o configurazioni per istanza), puoi verificarla controllando lo stato preservato di ogni istanza gestita.

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

Configurazione stateful

La configurazione di un gruppo di istanze gestite (MIG) stateful viene ricavata da una combinazione del modello di istanza, della configurazione facoltativa per tutte le istanze, del criterio stateful facoltativo e delle configurazioni per istanza facoltative che imposti. Dopo aver impostato la configurazione per il gruppo, il gruppo di istanze gestite la utilizza per creare le VM. Per applicare una configurazione aggiornata alle VM esistenti, consulta Applicare nuove configurazioni VM in un gruppo di istanze gestite.

Criterio con stato

Un criterio con stato definisce elementi con stato comuni per tutte le istanze di un gruppo di istanze gestite. Ogni elemento incluso nel criterio con stato deve essere definito nel modello di istanza del gruppo di istanze gestite.

Puoi apportare le seguenti modifiche a un criterio stateful:

  • Configura i dischi in modo che diventino stateful aggiungendoli al criterio stateful.
  • Configura i dischi in modo che non siano stateful rimuovendoli dal criterio stateful.
  • Specifica che gli indirizzi IP devono essere stateful aggiungendo la configurazione dell'interfaccia di rete al criterio stateful.
  • Specifica che gli indirizzi IP devono essere trattati come senza stato rimuovendo la configurazione dal criterio con stato.

Configurazioni per istanza

Una configurazione per istanza definisce elementi con stato univoci per una istanza gestita specifica, come dischi specifici per l'istanza, coppie chiave-valore dei metadati e indirizzi IP. I metadati e i dischi specifici dell'istanza non devono essere definiti nel modello di istanza del MIG. Tuttavia, le interfacce di rete per gli IP stateful devono essere definite nel modello di istanza del MIG.

Puoi apportare le seguenti modifiche a una configurazione per istanza per un'istanza specifica in un MIG:

  • Configura i dischi definiti nel modello di istanza in modo che diventino con stato per l'istanza (aggiungendoli alla configurazione per istanza) o senza stato (rimuovendoli dalla configurazione per istanza).
  • Configura i dischi esistenti, non definiti nel modello di istanza, in modo che vengano collegati e diventino stateful per l'istanza (aggiungendoli alla configurazione per istanza) o in modo che vengano scollegati dall'istanza (rimuovendoli dalla configurazione per istanza).
  • Aggiungi o rimuovi coppie chiave-valore dei metadati stateful specifici per l'istanza.
  • Configurare gli indirizzi IP individualmente per le istanze di un gruppo di istanze gestite in modo che diventino stateful o stateless.

Esempio di configurazione stateful

Ecco un esempio di configurazione con stato:

Modello di istanza + criterio stateful + configurazione per istanza = configurazione dell'istanza gestita.

In questo grafico:

  • Il modello di istanza definisce una configurazione comune per tutte le istanze VM in un gruppo di istanze gestite
  • Il criterio stateful definisce una configurazione stateful comune per i dischi con nome dispositivo data-disk, che sono definiti dal modello di istanza e che vengono creati e collegati singolarmente a ogni istanza VM nel gruppo di istanze gestite.
  • La configurazione per istanza definisce una configurazione con stato per un'istanza VM specifica denominata node-1. Specifica di collegare un disco esistente, my-legacy-1, all'istanza node-1 e di trattarlo come stateful. Specifica anche un valore della chiave dei metadati per preservare l'individualità per l'istanza node-1: node-id:xyz273.

Durante la creazione della VM node-1, il gruppo di istanze gestite esegue le seguenti operazioni:

  1. Utilizza il tipo di macchina n2-standard-2, in base al modello di istanza.
  2. Crea e collega un disco di avvio con un nome disco generato automaticamente,boot-node-1 e un nome dispositivo boot-disk, utilizzando un'immagine Debian GNU/Linux, in base al modello di istanza. Il gruppo di istanze gestite tratta il disco di avvio boot-node-1 come stateless perché non è configurato nel criterio stateful o nella configurazione per istanza.
  3. Crea e collega un disco aggiuntivo con un nome disco data-disk-1 e un nome dispositivo data-disk generati automaticamente utilizzando un'immagine personalizzata, in base al modello di istanza. Il MIG tratta il disco aggiuntivo data-disk-1 come stateful perché il nome del dispositivo è specificato nel criterio stateful.
  4. Collega un disco esistente con il nome my-legacy-1 e utilizza il nome del dispositivo legacy-disk in base alla configurazione per istanza. MIG considera il disco aggiuntivo my-legacy-1 come con stato perché il suo nome del dispositivo è specificato nella configurazione per istanza.
  5. Imposta tre coppie chiave-valore dei metadati: due dal modello di istanza (app:example-stateful-app, version:1.0) e una dalla configurazione per istanza (node-id:xyz273). Il MIG tratta la coppia chiave-valore node-id:xyz273 come stateful perché è specificata nella configurazione per istanza.

Quando viene ricreata la VM node-1, supponendo che la stessa configurazione sia ancora vigente, il gruppo di istanze gestite ricrea gli elementi stateless e conserva quelli stateful:

  1. Ricrea il disco di avvio dall'immagine originale:

    Innanzitutto, elimina il boot-node-1 disco di avvio e poi lo ricrea dall'immagine Debian GNU/Linux, come specificato nel modello di istanza.

  2. Conserva i dischi aggiuntivi data-disk-1 e my-legacy-1:

    Scollega i dischi aggiuntivi prima di eliminare la VM, quindi ricollegali alla VM dopo che è stata ricreata.

  3. Conserva la singola coppia chiave/valore dei metadati, node-id:xyz273:

    Imposta i metadati dopo la ricreazione della VM. Imposta anche le coppie chiave-valore comuni dal modello di istanza (app:example-stateful-app e version:1.0).

Feedback

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

Passaggi successivi