Puoi creare deployment ad alta disponibilità di carichi di lavoro stateful su istanze VM utilizzando gruppi di istanze gestite stateful. I workload stateful includono applicazioni con dati o configurazioni stateful, come database, applicazioni monolitiche legacy e calcoli batch a lunga esecuzione con checkpoint.
Con i MIG stateful, puoi migliorare l'uptime e la resilienza di queste applicazioni stateful con la riparazione automatica (recupero automatico dei workload non riusciti), i deployment multizona e gli aggiornamenti in sequenza automatizzati.
Un gruppo di istanze gestite stateful conserva lo stato univoco di ogni istanza (inclusi nome dell'istanza, dischi permanenti collegati, indirizzi IP e metadati) in caso di riavvio, ricreazione, riparazione automatica o aggiornamento della VM.
Questa pagina descrive quando utilizzare i MIG stateful e fornisce una panoramica di alto livello del loro funzionamento. Per saperne di più, consulta Come funzionano i MIG stateful.
Per scoprire come configurare un MIG stateful, vedi Configurazione dei MIG stateful.
Differenze tra i carichi di lavoro stateful e stateless
Puoi utilizzare i gruppi di istanze gestite per supportare workload stateful e stateless. La differenza principale tra i workload stateful e stateless è che i workload stateful conservano lo stato della singola VM (ad esempio, uno shard di database o la configurazione dell'app) sui dischi della VM, mentre i workload stateless, come un frontend web, non conservano alcuno stato sulle singole VM.
Tratti le VM con carichi di lavoro stateful come macchinari personalizzati: ti interessano l'identità (nome), l'indirizzo IP, i metadati e i dati di ogni singola macchina. Non puoi scalare facilmente i workload stateful orizzontalmente perché lo scaling potrebbe richiedere la replica dei dati, la creazione o l'eliminazione di shard di dati o la modifica della configurazione generale dell'applicazione. Quando ricrei o aggiorni una macchina con un workload stateful, devi conservare lo stato univoco della VM. Alcuni esempi di applicazioni stateful sono Cassandra, ElasticSearch, mongoDB, MySQL, PostgreSQL e Kafka.
Consideri le VM con carichi di lavoro stateless come intercambiabili e ti interessa solo il numero di VM di serving che hai. Nessuna VM viene trattata in modo diverso dalle altre. Puoi scalare rapidamente i carichi di lavoro stateless orizzontalmente aggiungendo o rimuovendo VM. Quando aggiorni l'applicazione, puoi eliminare le macchine e sostituirle con nuove macchine con nomi, indirizzi IP, metadati e dischi diversi. Quando una VM stateless viene eliminata o ricreata, tutti i dati sulla macchina vengono persi: i dischi vengono eliminati o ricreati da zero. Un front-end web è un esempio di applicazione stateless.
MIG stateful | MIG stateless | |
---|---|---|
Workload | Workload stateful in cui dischi, indirizzi IP e/o metadati vengono conservati nelle operazioni di ricreazione della VM. | Workload stateless scalabili e ad alta disponibilità, in cui dischi e indirizzi IP vengono ricreati da zero in caso di scalabilità orizzontale, riparazione automatica, aggiornamento automatico e ricreazione della VM. |
Funzionalità dei MIG |
|
|
Elementi preservabili |
|
Nomi delle istanze |
Tutti i MIG supportano nomi di istanze personalizzati e conservabili.
Quando utilizzare i MIG stateful
Prendi in considerazione l'utilizzo di gruppi di istanze gestite stateful (MIG stateful) ogni volta che esegui il deployment di un'applicazione o di un cluster stateful in Compute Engine e vuoi migliorarne la disponibilità con la riparazione automatica e i deployment multizona oppure vuoi semplificare gli aggiornamenti delle istanze stateful orchestrando i rollout degli aggiornamenti e controllando il livello di interruzione consentito per le istanze.
I MIG stateful sono destinati ad applicazioni con dati o configurazioni stateful, ad esempio:
- Database. Ad esempio: Cassandra, ElasticSearch, mongoDB e ZooKeeper. Prima di decidere di utilizzare i MIG stateful, valuta la possibilità 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 i MIG con stato, valuta la possibilità 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 archiviano 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.
- Carichi di lavoro batch con checkpoint. Con questa configurazione, puoi conservare i risultati con checkpoint di calcoli di lunga durata in previsione di errori del workload o della VM o del prerilascio dell'istanza. I MIG stateful possono ricreare una macchina non riuscita, conservando il disco di dati, in modo che il calcolo possa continuare dall'ultimo checkpoint.
Per ottenere resilienza contro gli errori a livello di zona, la tua applicazione deve replicare i dati su più istanze a livello di applicazione. Ad esempio, ElasticSearch e Cassandra supportano questa funzionalità. Puoi utilizzare un MIG a livello di regione per rendere un'applicazione di questo tipo resiliente agli errori a livello di zona eseguendo il deployment di 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 MIG stateful soddisfa completamente i tuoi requisiti.
Cosa rende stateful un MIG
Un MIG è considerato stateful se hai creato una configurazione stateful.
Puoi creare una configurazione stateful quando crei il MIG oppure puoi convertire un gruppo da stateless a stateful dopo la sua creazione aggiungendo una configurazione.
Crea una configurazione stateful impostando una policy stateful non vuota o una o più configurazioni per istanza non vuote:
- Un criterio stateful definisce gli elementi che vuoi conservare per tutte le istanze nel MIG.
- Una configurazione per istanza definisce gli elementi da conservare per una specifica istanza VM.
La configurazione è effettiva dopo che tu o il MIG l'avete applicata:
- Un MIG applica automaticamente la configurazione della 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 o configurazioni per istanza), puoi verificarla esaminando lo stato conservato di ogni istanza gestita.
Le modifiche successive alla configurazione stateful o alle dimensioni del MIG (ad esempio, la riduzione delle dimensioni del MIG o l'eliminazione o l'abbandono delle istanze dal MIG) possono influire sugli stati conservati delle istanze.
Configurazione stateful
Un gruppo di istanze gestite (MIG) stateful prende la configurazione delle istanze da una combinazione di modello di istanza, configurazione per tutte le istanze facoltativa, policy stateful facoltativa e configurazioni per istanza facoltative che imposti. Dopo aver impostato la configurazione per il gruppo, il MIG la utilizza durante la creazione delle VM. Per applicare una configurazione aggiornata alle VM esistenti, vedi Applica nuove configurazioni delle VM in un MIG.
Policy stateful
Una policy stateful definisce gli elementi stateful comuni per tutte le istanze di un gruppo di istanze gestite. Ogni elemento incluso nella policy stateful deve essere definito nel modello di istanza del MIG.
Puoi apportare le seguenti modifiche a un criterio stateful:
- Configura i dischi in modo che diventino stateful aggiungendoli alla policy stateful.
- Configura i dischi in modo che diventino stateless rimuovendoli dalla policy stateful.
- Specifica che gli indirizzi IP devono essere stateful aggiungendo la configurazione dell'interfaccia di rete alla policy stateful.
- Specifica che gli indirizzi IP devono essere trattati come stateless rimuovendo la configurazione dalla policy stateful.
Configurazioni per istanza
Una configurazione per istanza definisce gli elementi stateful univoci per una istanza gestita specifica, come dischi, coppie chiave-valore dei metadati e indirizzi IP specifici dell'istanza. I dischi e i metadati 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 stateful per l'istanza (aggiungendoli alla configurazione per istanza) o stateless (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 (aggiungendo questi dischi alla configurazione per istanza) o scollegati dall'istanza (rimuovendo i dischi dalla configurazione per istanza).
- Aggiungi o rimuovi coppie chiave/valore dei metadati stateful specifiche per l'istanza.
- Configurazione degli indirizzi IP singolarmente per le istanze in un MIG in modo che diventino stateful o stateless. Le configurazioni per istanza per gli indirizzi IP non sono supportate per le interfacce di rete dinamiche.
Esempio di configurazione stateful
Ecco un esempio di configurazione stateful:
In questo grafico:
- Il modello di istanza definisce una configurazione comune per tutte le istanze VM in un MIG
- La policy stateful definisce una configurazione stateful comune per i dischi
con nome dispositivo,
data-disk
, definiti dal template di istanza e creati e collegati singolarmente a ogni istanza VM nel MIG. - La configurazione per istanza definisce una configurazione stateful per una VM specifica denominata
node-1
. Specifica di collegare un disco esistente,my-legacy-1
, all'istanzanode-1
e di considerarlo stateful. Specifica anche un valore della chiave dei metadati per preservare l'individualità dell'istanzanode-1
:node-id:xyz273
.
Quando crei la VM node-1
, il MIG esegue le seguenti operazioni:
- Utilizza il tipo di macchina
n2-standard-2
, in base al modello di istanza. - Crea e collega un disco di avvio con un nome disco generato automaticamente,
boot-node-1
e un nome dispositivoboot-disk
, utilizzando un'immagine Debian GNU/Linux, in base al modello di istanza. Il MIG considera il disco di avvioboot-node-1
stateless perché non è configurato nelle norme stateful o nella configurazione per istanza. - Crea e collega un disco aggiuntivo con un nome di disco generato automaticamente,
data-disk-1
, e un nome di dispositivo,data-disk
, utilizzando un'immagine personalizzata, in base al modello di istanza. Il MIG considera il disco aggiuntivodata-disk-1
stateful perché il nome del dispositivo è specificato nella policy stateful. - Collega un disco esistente con il nome del disco,
my-legacy-1
, e utilizza il nome del dispositivo,legacy-disk
, in base alla configurazione per istanza. Il MIG considera il disco aggiuntivomy-legacy-1
stateful perché il nome del dispositivo è specificato nella configurazione per istanza. - 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 considera la coppia chiave/valorenode-id:xyz273
stateful perché è specificata nella configurazione per istanza.
Quando ricrea la VM node-1
, supponendo che la stessa configurazione sia ancora
effettiva, il MIG ricrea gli elementi stateless e conserva quelli stateful:
Ricrea il disco di avvio dall'immagine originale:
Innanzitutto, elimina il disco di avvio
boot-node-1
e poi lo ricrea dall'immagine Debian GNU/Linux, come specificato nel modello di istanza.Conserva i dischi aggiuntivi,
data-disk-1
emy-legacy-1
:Scollega i dischi aggiuntivi prima di eliminare la VM e poi li collega alla VM dopo la ricreazione.
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 del modello di istanza (
app:example-stateful-app
eversion:1.0
).
Feedback
Vogliamo conoscere i tuoi casi d'uso, le tue sfide e i tuoi feedback sui MIG stateful. Ti invitiamo a condividere il tuo feedback con il nostro team all'indirizzo [email protected].
Passaggi successivi
- Leggi l'articolo Configurazione dei MIG stateful per scoprire come supportare i workload stateful conservando i nomi delle istanze, i dischi permanenti e i metadati nelle istanze gestite.
- Scopri come eseguire la migrazione di un workload esistente a un MIG stateful.
- Scopri di più su come funzionano i MIG stateful.
- Scopri di più sui gruppi di istanze gestite.
- Scopri di più sull'utilizzo delle istanze gestite.