Esegui la migrazione di un carico di lavoro esistente a un gruppo di istanze gestite stateful


Se hai un'applicazione stateful esistente in modalità autonoma (non gestita) di Compute Engine, puoi eseguirne la migrazione a un gruppo di istanze gestite stateful.

Configurando un gruppo di istanze gestite stateful e utilizzando le istanze gestite, puoi ottenere i seguenti vantaggi:

  • Stato conservato: conservazione dei nomi delle istanze, dei dischi e dei metadati anche se viene ricreata un'istanza.
  • Riparazione automatica: ricreazione automatica di VM con carichi di lavoro non riusciti all'interno nella stessa zona.
  • Aggiornamenti automatici: deployment agevoli di nuove configurazioni di istanze o alle VM in un gruppo di istanze gestite.
di Gemini Advanced.

Limitazioni

  • Devi arrestare le VM esistenti per eseguirne la migrazione dei dischi esistenti oppure per creare snapshot coerenti per l'utilizzo da parte della nuova di Compute Engine.
  • Devi eliminare le VM esistenti se vuoi riutilizzarne i nomi.
  • L'applicazione deve essere in grado di essere eseguita su VM con lo stesso tipo di macchina. Se l'applicazione esistente richiede più istanze di diversi tipi di macchina, crea più modelli di istanza e MIG, uno per tipo di macchina.
  • L'applicazione deve essere avviata all'avvio della VM. Puoi usare un'immagine personalizzata o uno script di avvio. Ciascuna opzione è illustrata di seguito.
  • Se scegli di creare un gruppo di istanze gestite, non puoi aggiornare il sistema operativo o il software implementando gli aggiornamenti delle immagini di avvio in un gruppo di istanze gestite i dischi di avvio stateful.
  • Puoi ottenere un'alta disponibilità multizona solo creando repliche ridondanti in più zone e configurando la replica dei dati a livello di applicazione. Il MIG stateful corregge automaticamente le istanze solo all'interno della stessa zona e non orchestra il failover tra zone.
  • Non puoi utilizzare la scalabilità automatica con un gruppo di istanze gestite stateful.
  • Esamina le limitazioni del MIG stateful.

Costi

Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:

  • Compute Engine

Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Prima di iniziare

Questa guida utilizza gcloud CLI. Puoi accedere a questo strumento utilizzando Cloud Shell. Oppure, se vuoi eseguire gcloud CLI sul tuo computer locale scaricare e installare la versione più recente di gcloud CLI.

Panoramica della migrazione

  1. Comprendere i componenti che compongono un gruppo di istanze gestite stateful.
  2. Esamina la configurazione esistente per determinare le specifiche comuni della VM.
  3. Facoltativamente, crea un'immagine personalizzata da usare come immagine disco di avvio comune.
  4. Crea un modello di istanza per specificare una configurazione VM comune per il gruppo di istanze gestite.
  5. Crea un gruppo di istanze gestite vuoto.
  6. Converti le VM esistenti in istanze gestite nel gruppo di istanze gestite, ad esempio configurazioni per istanza.
  7. Configura la riparazione automatica per il gruppo di istanze gestite per migliorare la resilienza della tua applicazione.
  8. Facoltativamente, per ridurre l'overhead della configurazione, sostituisci per istanza configurazioni con un criterio stateful.

Componenti

Puoi configurare le istanze gestite del tuo gruppo di istanze gestite tramite diversi componenti:

  • Un modello di istanza contiene elementi comuni per le VM nel gruppo di istanze gestite, tra cui il tipo di macchina, l'immagine disco di avvio specifiche facoltative per i dischi aggiuntivi e un script di avvio.
  • Un'immagine personalizzata facoltativa contiene della tua applicazione e funge da immagine disco di avvio comune.
  • R configurazione per istanza contiene elementi stateful specifici dell'istanza. Ad esempio, puoi allegare disco esistente a un'istanza specifica del gruppo. Questo disco potrebbe essere scollegato da un'istanza autonoma esistente, recuperata da uno snapshot o da un'istanza disco. Non è necessario definire il nome del dispositivo del disco nella tua istanza modello.
  • Un'intestazione facoltativa norme stateful contiene elementi stateful comuni. Ad esempio, definisce tutti i dischi con un nome specifico del dispositivo (come definito nel modello di istanza) come stateful per tutti più istanze del gruppo.

Quali componenti devi utilizzare?

I componenti da utilizzare dipendono dalla configurazione esistente. La la seguente tabella fornisce un riepilogo generale di alcune possibili configurazioni per un'applicazione eseguita su una o più istanze. Più avanti tutorial: esaminerai la configurazione esistente per determinare quale di queste configurazioni che devi utilizzare.

Sono presenti dati o configurazioni stateful sui dischi di avvio che devi mantenere? Come viene avviata la richiesta di partecipazione?
L'applicazione è configurata su un disco di avvio esistente L'applicazione è configurata con uno script di avvio
No: i dischi di avvio sono stateless
  1. Utilizza un modello di istanza con un'immagine personalizzata
  2. Aggiungi configurazioni per istanza (o un criterio stateful) per i dati stateful dischi
  1. Utilizza un modello di istanza con uno script di avvio
  2. Aggiungi configurazioni per istanza (o un criterio stateful) per i dati stateful dischi
Sì: almeno un disco di avvio è stateful
  1. Utilizza un modello di istanza con un'immagine personalizzata
  2. Aggiungi configurazioni per istanza (o un criterio stateful) per l'avvio stateful dischi dati
  1. Utilizza un modello di istanza con uno script di avvio
  2. Aggiungi configurazioni per istanza (o un criterio stateful) per l'avvio stateful dischi dati

Rivedi la configurazione esistente

Esamina le istanze autonome esistenti per ispezionare la macchina di ciascuna istanza tipo di oggetto, dischi e metadati.

Utilizza la Comando instances describe per ciascuna delle tue istanze.

gcloud compute instances describe INSTANCE_NAME

Rispondi alle seguenti domande per prepararti ai passaggi successivi di questa guida.

Domande Implicazioni
Proprietà VM
Qual è il tipo di macchina che vuoi utilizzare per il tuo gruppo? Specifica questo tipo di macchina nel modello di istanza del gruppo di istanze gestite.
Come si avvia l'applicazione: è preconfigurata su un disco di avvio o è installato, configurato e avviato da uno script di avvio? Se l'applicazione è preconfigurata su un disco di avvio, crea un'immagine personalizzata e specificare l'immagine nel modello di istanza del gruppo di istanze gestite.

Se l'applicazione viene avviata da uno script di avvio, specifica tale script di avvio nel modello di istanza del gruppo di istanze gestite.

Se la tua applicazione richiede sia un'immagine disco di avvio personalizzata sia un avvio nello script, specifica entrambi nel modello di istanza.
Vuoi conservare i nomi delle istanze esistenti? Devi eliminare le istanze autonome esistenti per liberare i nomi delle istanze.

Se i tuoi dischi di avvio rimangono stateless e vuoi utilizzare le soluzioni aggiornamenti in sequenza nel gruppo di istanze gestite, rivedi la documentazione per Conservazione dei nomi delle istanze.
Elementi stateful
Per ogni istanza, sono necessari metadati specifici dell'istanza mantenere? Specifica i metadati specifici dell'istanza utilizzando le configurazioni per istanza.
I dischi di avvio sono stateful? In altre parole, ci sono dati che su qualsiasi disco di avvio di cui devi conservare lo stato? Per conservare lo stato dei dischi di avvio, non puoi aggiornare il sistema operativo o il software implementando gli aggiornamenti delle immagini del disco di avvio.
Le istanze hanno tutte gli stessi tipi di dischi? Ad esempio, tutti hanno un solo disco dati? Oppure hanno e richiedono un disco univoco configurazioni? Se tutte le istanze hanno una configurazione del disco comune, definisci quelle comuni nomi dei dispositivi nel modello di istanza, ad esempio "data-disk". Questo consente di utilizza un criterio stateful per dichiarare quei dischi come stateful nel gruppo di istanze gestite, con meno overhead rispetto alle configurazioni per istanza.
Se dovessi espandere il gruppo, le dimensioni dei dischi attuali sono sufficienti? Specifica le dimensioni del disco necessarie nel modello di istanza. Nuove istanze otterrà i dischi specificati, a condizione che questi non siano ridefiniti in un criteri stateful o configurazioni per istanza.

Questa guida inizia creando configurazioni per istanza per le configurazioni stateful esistenti i dischi permanenti. Ma puoi convertire queste configurazioni in un criterio stateful in un secondo momento a condizione che i dischi abbiano nomi di dispositivi comuni che hai dichiarato nel modello di istanza.

Esempio di impostazione

Questa guida utilizza il seguente esempio di base per illustrare i passaggi della migrazione. Supponi di avere un'applicazione stateful in esecuzione su tre di Compute Engine. Supponi di avere le seguenti specifiche della VM:

  • Ogni VM ha lo stesso tipo di macchina.
  • Ogni VM esiste nello stesso progetto e nella stessa zona.
  • Il disco di avvio di ogni VM ha la stessa applicazione, che è configurata al momento dell'avvio l'avvio del disco all'avvio della VM.
  • Il disco di avvio di ogni VM non contiene altri dati o configurazioni devono conservare.
  • Ogni VM ha un disco permanente secondario con dati stateful, ovvero di cui devi mantenere lo stato attuale.

Modifica i valori riportati di seguito per utilizzarli durante questo tutorial.

- Machine type: n2-standard-2
- Project: my-project
- Zone: europe-west1-c
- Name of one of the VMs to migrate: my-instance-1

Creare un'immagine personalizzata

Se la tua applicazione o i suoi requisiti sono già configurati su un disco di avvio esistente, crea un'immagine personalizzata da riutilizzare. In alternativa, se l'applicazione viene installata, configurata e avviata esclusivamente tramite un script di avvio, salta questo passaggio e procedi con Crea un modello di istanza.

Nello scenario di esempio discusso in precedenza, il disco di avvio di ogni la VM autonoma contiene l'applicazione configurata. Quindi puoi seguire i passaggi a crea un'immagine personalizzata in base a una qualsiasi di queste VM.

  1. Arresta una delle istanze.

    gcloud compute instances stop my-instance-1
  2. Determina l'origine del disco descrivendo l'istanza.

    gcloud compute instances describe my-instance-1

    L'output è simile al seguente:

    ...
    disks:
    – autoDelete: true
      boot: true
      ...
      source: https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
      ...
    

    Individua il campo source nell'output e prendi nota dell'URL completo dell'avvio disco in questo campo.

  3. Utilizza la Comando images create per prepara un'immagine personalizzata che utilizza la stessa origine.

    gcloud compute images create my-boot-image \
        --source-disk=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
    

    L'output è simile al seguente:

    Created [https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image].
    

Crea un modello di istanza

Un modello di istanza è una risorsa Compute Engine immutabile per archiviare configurazione delle VM. Una volta creato un modello, non puoi aggiornarlo. Se hai bisogno per modificarlo in seguito, crea un nuovo modello e implementalo nel gruppo.

Segui i passaggi in Creazione di un nuovo modello di istanza, utilizzando le seguenti impostazioni.

  • Tipo di macchina: specifica un tipo di macchina che funzioni per tutte le tue di Compute Engine esistenti.

  • Script di avvio. Se avvii l'applicazione utilizzando uno script di avvio, e specificare tale script.

  • Disco di avvio:

    • Immagine: specifica un'immagine disco di avvio comune per tutte le VM nel gruppo di istanze gestite. Ad esempio, se hai creato un'immagine personalizzata basata sull'avvio di una VM esistente il disco, specificalo. Se devi utilizzare un disco di avvio esistente per un una specifica VM, puoi specificare in modo esplicito il disco di avvio per quella VM configurazione per istanza, quando converti la VM in un ambiente come spiegato più avanti in questo documento.
    • Nome dispositivo: specifica un nome del dispositivo che rifletta lo scopo del ad esempio boot-disk. Ciò consente di configurare un singolo stateful per conservare tutti i dischi nel gruppo di istanze gestite con quel nome dispositivo.
    • Dimensioni: specifica una dimensione del disco di avvio sufficiente per gli asset esistenti e quelle future, nel caso tu voglia aggiungerne qualcuna.
  • Dischi aggiuntivi: per impostazione predefinita, quando aggiungi istanze al gruppo di istanze gestite, il gruppo di istanze gestite crea dischi in base al modello. Tieni presente che un modello di istanza non supportano la configurazione di dischi a livello di regione, ma puoi configurarli in un secondo momento utilizzando invece configurazioni per istanza.

    • Nome dispositivo: per ogni disco, specifica un nome dispositivo che rispecchi il lo scopo del disco, ad esempio data-disk.
    • Dimensioni: specifica una dimensione del disco sufficiente per le istanze future, in se ne aggiungi uno qualsiasi.

Ai fini di questa migrazione, la specifica più importante per ogni disco aggiuntivo c'è il nome del dispositivo, che utilizzerai come chiave per specificare quali dischi sono stateful. Un nome dispositivo comune per simili consente di usare un criterio stateful comune per conservare tutti nel gruppo di istanze gestite. La specifica di dimensioni o immagine per ulteriori i dischi permanenti nel modello di istanza verranno utilizzati solo per creare nuovi dischi nuove istanze che potresti creare oltre a quelle che stai migrazione. Quando esegui la migrazione delle istanze esistenti, conservi e i dischi dati scollegandoli dalle istanze originali ricollegando gli stessi dischi alle nuove istanze gestite, come spiegato più avanti in questo documento.

Le seguenti Comando instance-templates create crea un modello per lo scenario di esempio. Il comando include un'istruzione --image un flag che punta all'immagine di avvio personalizzata creata in precedenza, nonché un un disco dati aggiuntivo.

gcloud compute instance-templates create my-instance-template \
 --machine-type=n2-standard-2 \
 --image=https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image \
 --boot-disk-device-name=boot-disk \
 --create-disk=mode=rw,size=100,type=pd-standard,device-name=data-disk

L'output è simile al seguente:

Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template].
NAME                     MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
my-instance-template  n2-standard-2               2021-04-27T11:02:07.552-07:00

Prendi nota dell'URL del modello, che puoi trovare nella prima riga del come output.

Creare un gruppo di istanze gestite

Il passaggio successivo prevede la creazione di un gruppo di istanze gestite. Per creare un un gruppo di istanze gestite a zona singola, segui le istruzioni per Crea un gruppo di istanze gestite in una singola zona. In alternativa, se vuoi proteggerti da errori a livello di zona utilizzando un gruppo di istanze gestite a livello di regione, segui le istruzioni per Crea un gruppo di istanze gestite con VM in più zone di una regione.

Quando crei il gruppo di istanze gestite, includi le seguenti specifiche:

  • Imposta la dimensione del gruppo su 0. Aggiungerai le istanze in un secondo momento.
  • Se crei un gruppo di istanze gestite a livello di regione, imposta il valore tipo di ridistribuzione delle istanze a NONE in modo che il gruppo di istanze gestite non ridistribuisca automaticamente le istanze diverse.

Le seguenti Comando instance-groups managed create crea un gruppo di istanze gestite a livello di zona per la configurazione di esempio descritta in precedenza. Per creare un gruppo di istanze gestite a livello di regione, sostituisci --zone=ZONE con --region=REGION.

gcloud compute instance-groups managed create my-mig \
    --size=0 \
    --template=https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template \
    --zone=europe-west1-c

L'output è simile al seguente:

Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/instanceGroupManagers/my-mig].
NAME    LOCATION        SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE         AUTOSCALED
my-mig  europe-west1-c  zone   my-mig              0     0            my-instance-template      no

Dopo aver creato la risorsa, puoi utilizzarla per interagire con il gruppo di istanze gestite, ad esempio esempio per impostare i criteri sul gruppo e aggiungere o rimuovere istanze gruppo.

Converti le VM esistenti in istanze gestite

Per ognuna delle VM non gestite esistenti, utilizza la seguente procedura per trasformarla in un'istanza gestita nel gruppo di istanze gestite. Questa procedura esegue la migrazione dei dischi esistenti le nuove istanze gestite. In alternativa, puoi creare snapshot di i dischi esistenti e quindi creare dischi basati su questi snapshot per l'utilizzo da parte delle istanze gestite.

  1. Descrivi la VM esistente.

    gcloud compute instances describe my-instance-1
    

    Prendi nota degli elementi che vuoi conservare dalla VM esistente, può includere:

    • Nome istanza
    • Disco di avvio
    • Dischi secondari
    • Metadati dell'istanza
  2. Arresta la VM esistente.

    gcloud compute instances stop my-instance-1
    
  3. Scollega tutti i dischi stateful, incluso il disco di avvio, se prevedi di riutilizzarlo.

    gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
    
  4. Elimina la VM esistente per poterne creare un'altra con lo stesso . Se non vuoi conservare i nomi delle istanze, puoi eliminare per la VM esistente in un secondo momento per interromperne il pagamento.

    gcloud compute instances delete my-instance-1
    
  5. Segui i passaggi per per creare un'istanza gestita.

    • Puoi riutilizzare il nome dell'istanza originale se hai eliminato il l'istanza originale. In alternativa, specifica un nuovo nome.
    • Specifica i dischi o i metadati stateful richiesti da questa istanza gestita. Il gruppo di istanze gestite archivia questi elementi specifici dell'istanza in una singola istanza configurazione:

      • Specifica uno o più dischi, ad esempio quelli che sono stati scollegati un'istanza VM originale.

      • Specifica i metadati dall'istanza VM originale.

    Ad esempio, il comando seguente crea un'istanza gestita con lo stesso come VM originale e riutilizza il disco dati originale. Il disco di avvio la VM viene creata dall'immagine specificata nell'istanza del gruppo modello.

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1    \
        --stateful-metadata=role=primary      \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --zone=europe-west1-c
    

    Se devi riutilizzare un disco di avvio da una vecchia VM, utilizza lo stesso comando con un flag --stateful-disk aggiuntivo. Utilizza lo stesso nome dispositivo per l'avvio disco come specificato nel modello di istanza, ad esempio:

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1 \
        --stateful-metadata=role=secondary    \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --stateful-disk=device-name=boot-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1-boot-disk \
        --zone=europe-west1-c
    
  6. Ripeti i passaggi per ciascuna delle VM non gestite esistenti.

Se vuoi visualizzare le configurazioni per istanza risultanti, esegui Comando instance-configs list.

gcloud compute instance-groups managed instance-configs list my-mig \
    --zone=europe-west1-c

Per visualizzare stato di conservazione di un'istanza, esegui il comando Comando describe-instance.

gcloud compute instance-groups managed describe-instance my-mig \
  --instance=my-instance-1 \
  --zone=europe-west1-c

Per ulteriori informazioni, vedi Applicazione, visualizzazione e rimozione della configurazione stateful nei gruppi di istanze gestite.

Configurazione della riparazione automatica

I gruppi di istanze gestite recuperano automaticamente le istanze gestite che si arrestano in esecuzione. Per un ulteriore miglioramento la disponibilità della tua applicazione e per verificare che sia in risposta, configurare un controllo di integrità basato sull'applicazione. Consulta le configurazione del controllo di integrità di esempio per i comandi di esempio.

Utilizzo di un criterio stateful anziché configurazioni per istanza

Un criterio stateful ti consente di dichiarare i dischi che hanno un nome dispositivo comune come stateful nel gruppo di istanze gestite. Un singolo criterio stateful richiede meno lavoro da gestire rispetto più configurazioni per istanza. Ad esempio, con un criterio stateful, può designare tutti i dischi con il nome dispositivo data-disk come stateful per tutti nel gruppo di istanze gestite.

Se il gruppo di istanze gestite soddisfa le seguenti condizioni, puoi sostituire un'istanza per istanza configurazioni con un criterio stateful:

  • Tutte le VM hanno lo stesso nome dispositivo (ad esempio data-disk) per un tipo di macchina i dischi permanenti. Questo nome dispositivo è definito nel modello di istanza del gruppo di istanze gestite.
  • Nessuna VM ha metadati stateful univoci specificati in una singola istanza configurazione. Se disponi di metadati stateful definiti a livello di istanza configurazione di servizio, puoi rimuovere il disco dalla richiesta ma devi mantenere la configurazione per istanza per mantenere i metadati stateful specifici dell'istanza.

Utilizza i seguenti passaggi per sostituire più configurazioni per istanza con una un unico criterio stateful.

  1. Configurare i dischi stateful in un criterio stateful. Segui le istruzioni in Impostazione e aggiornamento della configurazione stateful per i dischi in un gruppo di istanze gestite esistente.

    Per lo scenario di esempio, utilizza il comando seguente. Dichiara che tutti i dischi nel gruppo di istanze gestite che hanno un nome dispositivo specifico verranno conservati.

    gcloud compute instance-groups managed update my-mig \
      --stateful-disk=device-name=data-disk,auto-delete=never
    
  2. Se hai bisogno di conservare metadati specifici dell'istanza, aggiornare la configurazione per istanza. In caso contrario, elimina la configurazione per istanza. Applica immediatamente la modifica alla configurazione con il --update-instance flag. Ad esempio, per eliminare la configurazione per istanza, utilizza seguente comando:

    gcloud compute instance-groups managed instance-configs delete my-mig \
      --instances=my-instance-1 \
      --update-instance
    
  3. (Facoltativo) Verifica che gli elementi stateful siano ora archiviati nell'archivio conservato lo stato dal criterio (preservedStateFromPolicy) per ogni istanza gestita. Per ulteriori informazioni, vedi Visualizzazione degli stati conservati delle istanze gestite.

Aggiunta di altre VM

Se devi aggiungere VM per far crescere la tua applicazione, puoi aggiungere altre VM aumentando le dimensioni del gruppo di istanze gestite o per creazione manuale più istanze. Il gruppo di istanze gestite crea tutte le proprie VM, inclusi i dischi permanenti, in base al modello di istanza del gruppo. Se il gruppo ha un criterio stateful, gli elementi elencati nel criterio stateful vengono conservati durante il riavvio, la ricreazione la riparazione automatica e le operazioni di aggiornamento per tutte le istanze nuove ed esistenti gruppo. Se devi configurare dischi stateful o metadati solo per VM specifiche nel tuo gruppo, usa configurazioni per istanza.

Passaggi successivi