Configurazione di dischi permanenti stateful nei gruppi di istanze gestite

La configurazione dei dischi permanenti come stateful consente di trarre vantaggio dalla riparazione automatica delle istanze VM e dagli aggiornamenti automatici, mantenendo lo stato dei dischi.

Puoi configurare qualsiasi disco definito nel modello di istanza in modo che sia stateful per tutte le istanze di un gruppo di istanze gestite aggiungendo il nome del dispositivo del disco al criterio stateful del gruppo di istanze gestite.

Puoi anche configurare i dischi permanenti stateful singolarmente per le istanze in un gruppo di istanze gestite impostando le configurazioni per istanza. Non è necessario definire questi dischi nel modello di istanza.

Prima di iniziare

  • Esamina quando utilizzare i MIG stateful e come funzionano i MIG stateful.
  • 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.

    Terraform

    Per utilizzare gli esempi Terraform in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    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

Un gruppo di istanze gestite con dischi stateful presenta le seguenti limitazioni:

Un gruppo di istanze gestite con configurazione stateful, ovvero un gruppo di istanze gestite, ha le seguenti limitazioni:

  • Non puoi utilizzare la scalabilità automatica se il gruppo di istanze gestite ha una configurazione stateful.
  • Se vuoi utilizzare aggiornamenti in sequenza automatici, devi impostare il metodo di sostituzione su RECREATE.
  • Per i MIG a livello di regione stateful, devi disabilitare la ridistribuzione proattiva (imposta il tipo di ridistribuzione su NONE) per impedire l'eliminazione delle istanze stateful tramite la ridistribuzione automatica tra zone.
  • Se utilizzi una configurazione per tutte le istanze per eseguire l'override delle proprietà del modello di istanza, non puoi specificare queste proprietà in nessuna configurazione per istanza e contemporaneamente nella configurazione di tutte le istanze del gruppo.

  • Un gruppo di istanze gestite a livello di regione stateful non orchestra automaticamente il failover tra zone. Quando utilizzi un gruppo di istanze gestite a livello di regione, puoi rendere la tua applicazione stateful 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.

Quando utilizzare i dischi permanenti stateful

Utilizza i dischi permanenti stateful per sfruttare la autohealing e gli aggiornamenti automatici delle VM, mantenendo al contempo i dati sui dischi. Per ulteriori informazioni, consulta i casi d'uso per i MIG stateful.

Quando configuri i dischi stateful, questi vengono conservati tramite riparazione automatica, aggiornamenti e ricreazione delle istanze VM. Inoltre, i dischi stateful non possono essere ricreati dall'immagine originale o aggiornati con una nuova immagine.

Come best practice, ti consigliamo di mantenere i dischi di avvio stateless.

Mantenere il disco di avvio stateless offre i seguenti vantaggi:

  • Puoi riparare un disco di avvio danneggiato ricreandolo dall'immagine originale. La riparazione automatica esegue automaticamente queste operazioni.
  • Puoi aggiornare un disco di avvio all'immagine più recente con nuove versioni e patch di sicurezza.

Per maggiori informazioni, scopri in che modo la autohealing e l'aggiornamento gestiscono lo stato conservato.

Configurazione di dischi permanenti stateful per tutte le VM in un gruppo di istanze gestite

Configura qualsiasi disco definito in un modello di istanza in modo che sia stateful aggiungendo il nome del dispositivo del disco al criterio stateful del gruppo di istanze gestite. Il gruppo di istanze gestite tratta i dischi con quel nome dispositivo come stateful per tutte le istanze VM esistenti e future.

Configurazione dei dischi stateful durante la creazione di un gruppo di istanze gestite

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Seleziona il progetto e fai clic su Continua.

  3. Fai clic su Crea gruppo di istanze.

  4. Seleziona Nuovo gruppo di istanze gestite (stateful).

  5. Specifica un nome per il gruppo di istanze.

  6. Seleziona un modello di istanza. Se non sono disponibili modelli, crea un modello di istanza.

  7. In Numero di istanze, specifica il numero di istanze per il gruppo di istanze.

  8. La sezione Configurazione stateful mostra i dischi specificati nel modello di istanza. Fai clic su un disco per modificarne la configurazione stateful.

    1. In Stateful, seleziona .
    2. Dal menu a discesa All'eliminazione definitiva dell'istanza, seleziona l'azione da eseguire sul disco stateful quando l'istanza VM viene eliminata. Le opzioni disponibili sono:

      • Scollega disco: (valore predefinito) Non eliminare mai il disco; scollegalo quando la VM viene eliminata.
      • Elimina disco: elimina il disco stateful quando la relativa VM viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza gestita viene eliminata manualmente o quando le dimensioni del gruppo vengono ridotte.
    3. Al termine della configurazione stateful, fai clic su Fine.

  9. Fai clic su Crea.

gcloud

Per specificare quali dischi di un modello di istanza devono essere stateful al momento della creazione di un gruppo di istanze gestite, utilizza il flag --stateful-disk con il comando gcloud compute instance-groups managed create:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Sostituisci quanto segue:

  • INSTANCE_GROUP_NAME: il nome del gruppo di istanze gestite da creare.
  • INSTANCE_TEMPLATE: il nome del modello di istanza da utilizzare durante la creazione delle istanze.
  • SIZE: il numero iniziale di VM necessarie in questo gruppo.
  • DEVICE_NAME: il nome dispositivo di un disco specificato nel modello di istanza.
  • DELETE_RULE: un valore che indica cosa deve succedere a un disco stateful quando viene eliminata una VM. Le opzioni disponibili sono:

    • never: (valore predefinito) Non eliminare mai il disco, ma scollegalo quando la relativa VM viene eliminata.
    • on-permanent-instance-deletion: elimina il disco quando la relativa istanza VM viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza gestita viene eliminata manualmente o quando le dimensioni del gruppo vengono diminuite.

    Indipendentemente dal valore della regola di eliminazione, i dischi stateful vengono sempre conservati per le operazioni di riparazione automatica, aggiornamento e ricreazione delle VM.

Esempio

Vuoi eseguire il deployment di un database con 12 shard, ciascuno con un disco di avvio stateless contenente il sistema operativo e i file binari del database, ciascuno con un disco dati stateful. Segui questi passaggi:

  1. Crea un modello di istanza con un disco di avvio stateless basato sull'immagine img-example-db-v01, che ha un sistema operativo e un database preinstallati e un disco dati stateful:

    gcloud compute instance-templates create example-database-template-v01 \
        --image img-example-db-v01 \
        --create-disk device-name=data-disk,mode=rw,image=empty10GBext4
    

    Il flag --create-disk indica al gruppo di istanze gestite di:

    1. Crea un nuovo disco da 10 GB per ogni istanza VM a partire da un'immagine ext4 vuota, preparata in anticipo.
    2. Collega il disco alla relativa VM in modalità di lettura/scrittura utilizzando il nome dispositivo data-disk.
  2. Crea un gruppo di istanze gestite dal modello di istanza e definisci il disco dati come stateful:

    gcloud compute instance-groups managed create example-database-group \
      --template example-database-template-v01 \
      --base-instance-name shard \
      --size 12 \
      --stateful-disk device-name=data-disk,auto-delete=on-permanent-instance-deletion
    

    Il nome del dispositivo data-disk viene preso dal modello di istanza. Il disco dati è configurato per essere eliminato insieme all'istanza VM quando la VM viene eliminata definitivamente (a causa dell'eliminazione manuale dell'istanza o di una riduzione manuale della dimensione del gruppo). Il disco dati viene conservato in caso di riparazione automatica, aggiornamenti e creazione delle VM.

  3. Verifica che il disco dati sia configurato nel criterio stateful:

    gcloud compute instance-groups managed describe example-database-group
    
    
    baseInstanceName: shard
    ...
    name: example-database-group
    ...
    statefulPolicy:
      preservedState:
        disks:
          data-disk:
            autoDelete: ON_PERMANENT_INSTANCE_DELETION
    ...
    

    Puoi notare che il criterio stateful dichiara i dischi con il nome del dispositivo data-disk come stateful, con una regola per eliminarli con l'eliminazione definitiva della VM.

Terraform

Se non hai già creato un modello di istanza in cui specifichi il tipo di macchina, l'immagine del disco di avvio, la rete e altre proprietà delle VM che vuoi utilizzare per ogni VM nel tuo gruppo di istanze gestite, crea un modello di istanza.

L'esempio seguente crea un gruppo di istanze gestite a livello di zona con un disco stateful. Per specificare quale disco del modello di istanza deve essere stateful al momento della creazione del gruppo di istanze gestite, includi il blocco stateful_disk. Per ulteriori informazioni sulla risorsa utilizzata nell'esempio, consulta google_compute_instance_group_manager risorsa. Per creare un gruppo di istanze gestite a livello di regione, utilizza la risorsa google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "example-database-group"
  base_instance_name = "shard"
  target_size        = 12
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  stateful_disk {
    device_name = "data-disk"
    delete_rule = "ON_PERMANENT_INSTANCE_DELETION"
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

Per specificare quali dischi del modello di istanza devono essere stateful al momento della creazione di un gruppo di istanze gestite, includili nel campo statefulPolicy nel corpo della richiesta del metodo instanceGroupManagers.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Sostituisci quanto segue:

  • PROJECT: l'ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite da creare.
  • TEMPLATE: il nome del modello di istanza da utilizzare durante la creazione delle istanze.
  • SIZE: il numero iniziale di istanze necessarie in questo gruppo.
  • DEVICE_NAME: il nome dispositivo di un disco specificato nel modello di istanza.
  • DELETE_RULE: un valore che indica cosa deve succedere al disco stateful quando l'istanza VM viene eliminata. Le opzioni disponibili sono:

    • never: (valore predefinito) Non eliminare mai il disco; scollegalo quando la VM viene eliminata.
    • on_permanent_instance_deletion: elimina il disco stateful quando la relativa VM viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza gestita viene eliminata manualmente o quando le dimensioni del gruppo vengono ridotte.

Esempio

Vuoi eseguire il deployment di un database con 12 shard, ciascuno con un disco di avvio stateless contenente il sistema operativo e i file binari del database, ciascuno con un disco dati stateful. Segui questa procedura.

  1. Crea un modello di istanza con un disco di avvio stateless basato sull'immagine img-example-db-v01, con sistema operativo e database preinstallati e con un disco dati stateful, utilizzando il metodo instanceTemplates.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates
    
    {
      "name": "example-database-template-v01",
      "properties": {
        "machineType":"e2-standard-2",
        "disks": [
          {
            "boot": true,
            "deviceName": "boot-disk",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/mg-example-db-v01"
            }
          },
          {
            "deviceName": "data-disk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/empty10GBext4"
            }
          }
        ],
        "networkInterfaces": [
          {
            "network": "global/networks/default"
          }
        ]
      }
    }
    

    Il disco dati nel modello di istanza ha un nome dispositivo data-disk ed è configurato per essere creato a partire da un'immagine ext4 vuota, preparata in anticipo, e per essere collegato in modalità di lettura/scrittura.

  2. Crea un gruppo di istanze gestite dal modello di istanza e definisci il disco dati come stateful utilizzando il metodo instanceGroupManagers.insert:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      "versions": [
        {
          "instanceTemplate": "global/instanceTemplates/example-database-template-v01"
        }
      ],
      "targetSize": 12,
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
    }
    

    Il gruppo di istanze gestite crea 12 istanze, ciascuna con un disco con le seguenti proprietà:

    • Il nome di un dispositivo, data-disk, preso dal modello di istanza.
    • Una regola di eliminazione per eliminare il disco dati quando la VM viene eliminata (a causa dell'eliminazione manuale dell'istanza o di una riduzione manuale della dimensione del gruppo).
    • Una voce nello stato conservato dal criterio (preservedStateFromPolicy) di ogni istanza gestita in modo che il disco dati venga conservato durante la riparazione automatica, gli aggiornamenti e la nuova creazione delle istanze.
  3. Utilizza il metodo instanceGroupManagers.get per verificare che il disco dati sia configurato nel criterio stateful della nuova risorsa instanceGroupManagers:

    GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      ...
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
      ...
    }
    

    Puoi vedere che il criterio stateful dichiara i dischi con il nome del dispositivo data-disk come stateful con la regola per eliminarli se l'istanza è stata eliminata definitivamente.

Impostazione e aggiornamento della configurazione stateful per i dischi in un gruppo di istanze gestite esistente

Se esegui un'applicazione stateful su un gruppo di istanze gestite stateless (un gruppo di istanze gestite senza configurazione stateful), puoi configurare i dischi esistenti definiti nel modello di istanza in modo che siano stateful per tutte le istanze in questo gruppo di istanze gestite. In questo modo puoi conservare i dischi durante le operazioni di ricreazione, riparazione automatica e aggiornamento delle istanze, nonché durante le operazioni di eliminazione.

Puoi effettuare le seguenti operazioni:

  • Aggiungi dischi definiti nel modello di istanza al criterio stateful di un gruppo di istanze gestite esistente per dichiararli come stateful. I dischi con il nome del dispositivo specificato vengono contrassegnati come stateful per tutte le istanze esistenti e future nel gruppo di istanze gestite.
  • Aggiorna il criterio stateful per modificare la configurazione stateful per i dischi.

Il gruppo di istanze gestite applica la configurazione aggiornata nel criterio stateful in modo automatico e asincrono a tutte le istanze. Gli aggiornamenti alle configurazioni del disco in un criterio stateful non interrompono le VM in esecuzione. Per maggiori informazioni, consulta la pagina relativa all'applicazione di aggiornamenti dei criteri stateful.

Per un gruppo di istanze gestite a livello di regione, devi disabilitare la ridistribuzione proattiva delle istanze tra zone prima di poter configurare i dischi stateful. Per maggiori informazioni, consulta In che modo i gruppi a livello di regione gestiscono lo stato conservato.

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic sul nome del gruppo di istanze in cui vuoi specificare la configurazione stateful per il disco.

  3. Fai clic su Modifica per modificare il gruppo di istanze gestite.

  4. In Configurazione stateful, espandi il disco che vuoi rendere stateful.

    1. In Stateful, seleziona .
    2. Dal menu a discesa All'eliminazione definitiva dell'istanza, seleziona l'azione da eseguire sul disco stateful quando l'istanza viene eliminata.

      • Scollega disco: (valore predefinito) Non eliminare mai il disco; scollegalo quando la VM viene eliminata.
      • Elimina disco: elimina il disco stateful quando la relativa VM viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza gestita viene eliminata manualmente o quando le dimensioni del gruppo vengono ridotte.

    3. Dopo aver aggiornato la configurazione stateful, fai clic su Fine.

  5. Fai clic su Salva per completare l'aggiornamento.

gcloud

Per specificare quali dischi del modello di istanza devono essere stateful o per aggiornare la configurazione del disco stateful per un gruppo di istanze gestite esistente, utilizza uno o più flag --stateful-disk con il comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite da aggiornare.
  • DEVICE_NAME: il nome dispositivo di un disco specificato nel modello di istanza.
  • DELETE_RULE: un valore che indica cosa deve succedere al disco stateful quando viene eliminata un'istanza VM. Le opzioni disponibili sono:

    • never: (valore predefinito) Non eliminare mai il disco, scollegalo quando la relativa istanza viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando l'istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza gestita viene eliminata manualmente o quando le dimensioni del gruppo vengono diminuite.

Se il nome di un dispositivo specificato è già configurato nel criterio stateful, il comando aggiorna la configurazione.

Esempio

Esegui un database con più shard su un gruppo di istanze gestite denominato example-database- group. Ogni VM nel gruppo di istanze gestite archivia uno shard su un disco aggiuntivo con il nome del dispositivo data-disk, definito dal modello di istanza. Il gruppo di istanze gestite non ha una configurazione stateful e vuoi conservare i dischi dati durante la ricreazione, la riparazione automatica e gli aggiornamenti delle istanze. Vuoi anche proteggere i dischi dati dall'eliminazione quando viene eliminata una VM.

  1. Aggiorna il gruppo di istanze gestite per definire il disco dati come stateful utilizzando il seguente comando:

    gcloud compute instance-groups managed update example-database-group \
      --stateful-disk device-name=data-disk,auto-delete=never
    

    Di conseguenza, il gruppo di istanze gestite applica gli aggiornamenti della configurazione dei criteri stateful automaticamente e in modo asincrono ai dischi dati per tutte le istanze. I dischi dati vengono ora conservati in caso di riparazione automatica, aggiornamenti e creazione delle istanze e i dischi dei dati vengono scollegati al momento dell'eliminazione dell'istanza perché la regola auto-delete è impostata su never.

  2. Verifica che il disco dati sia configurato nel criterio stateful eseguendo il comando gcloud compute instance-groups managed describe example-database-group.

REST

Per specificare quali dischi del modello di istanza devono essere stateful o per aggiornare la configurazione del disco stateful per un gruppo di istanze gestite esistente, configura i dischi nel criterio stateful del gruppo di istanze gestite utilizzando il metodo instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Sostituisci quanto segue:

  • PROJECT: l'ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite da aggiornare.
  • DEVICE_NAME: il nome dispositivo di un disco, specificato nel modello di istanza, per il quale vuoi aggiornare la configurazione stateful.
  • DELETE_RULE: un valore che indica cosa deve succedere al disco stateful quando viene eliminata un'istanza VM. Le opzioni disponibili sono:

    • never: (valore predefinito) Non eliminare mai il disco, scollegalo quando la relativa istanza viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando l'istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza viene eliminata manualmente o quando la dimensione del gruppo viene ridotta.

Se il nome del dispositivo specificato è già configurato nel criterio stateful, il metodo patch aggiorna la sua configurazione.

Esempio

Esegui un database con più shard su un gruppo di istanze gestite denominato example-database- group. Ogni VM nel gruppo di istanze gestite archivia uno shard su un disco aggiuntivo con il nome del dispositivo data-disk, definito dal modello di istanza. Il gruppo di istanze gestite non ha una configurazione stateful e vuoi conservare i dischi dati durante la ricreazione, la riparazione automatica e gli aggiornamenti delle istanze. Vuoi anche proteggere i dischi dati dall'eliminazione quando viene eliminata una VM.

  1. Applica una patch al gruppo di istanze gestite in modo da definire il disco dati come stateful:

    PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    {
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "NEVER" }
          }
        }
      }
    }
    

    Il gruppo di istanze gestite applica questa configurazione stateful in modo automatico e asincrono ai dischi dati per tutte le istanze. I dischi dati verranno conservati durante la riparazione automatica, gli aggiornamenti e la nuova creazione delle istanze. I dischi dati verranno scollegati al momento dell'eliminazione dell'istanza perché la regola autoDelete è impostata su NEVER.

  2. Verifica che il disco dati sia configurato nel criterio stateful visualizzando la risorsa instanceGroupManagers, restituita dal metodo instanceGroupManagers.get.

Dichiarazione di dischi permanenti stateful in precedenza come stateless

Potrebbe essere necessario configurare un disco stateful affinché venga trattato come stateless. Ad esempio:

  • Se cambi l'architettura dell'app in modo da spostare lo stato dal disco.
  • Se hai configurato per errore il disco come stateful e vuoi ripristinarlo.

Per dichiarare come stateless tutti i dischi con un determinato nome dispositivo, rimuovi la configurazione del disco dal criterio stateful.

Il gruppo di istanze gestite applica la modifica al criterio stateful in modo automatico e asincrono a tutte le istanze. Gli aggiornamenti alla configurazione del disco in un criterio stateful non interrompono l'esecuzione delle istanze VM.

Per maggiori informazioni, consulta Applicare aggiornamenti dei criteri stateful.

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic sul nome del gruppo di istanze da cui vuoi rimuovere la configurazione stateful per i dischi.

  3. Fai clic su Modifica per modificare il gruppo di istanze gestite.

  4. In Configurazione stateful, espandi i dischi stateful che vuoi rendere stateless.

    1. Imposta l'opzione Stateful su No.
    2. Fai clic su Fine.
  5. Dopo aver apportato le modifiche, fai clic su Salva.

gcloud

Per specificare quali dischi del criterio stateful di un gruppo di istanze gestite rendere stateless, utilizza il flag --remove-stateful-disks con il comando gcloud compute instance-groups managed update:

gcloud compute instance-groups managed update NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite da aggiornare.
  • DEVICE_NAME: il nome del dispositivo di un disco da rimuovere dal criterio stateful e da considerare come stateless. Puoi fornire uno o più nomi di dispositivo nell'elenco.

Esempio

Esegui un'applicazione legacy con più nodi in un gruppo di istanze gestite denominato example-legacy-group. Ogni VM nel gruppo di istanze gestite archivia i dati dell'applicazione su un disco di avvio con nome del dispositivo boot-disk, che hai configurato come stateful nel criterio stateful del gruppo di istanze gestite. Hai spostato i dati dell'applicazione su un disco aggiuntivo e ora vuoi rendere il disco di avvio stateless per semplificare l'aggiornamento a nuove immagini.

Per rimuovere la configurazione stateful del disco di avvio, aggiorna il gruppo di istanze gestite:

gcloud compute instance-groups managed update example-legacy-group \
  --remove-stateful-disks boot-disk

Il gruppo di istanze gestite rimuove la configurazione stateful per il nome del dispositivo boot-disk in modo automatico e asincrono per i dischi di avvio di tutte le istanze del gruppo. I dischi di avvio rimangono collegati alle istanze, ma non sono più stateful. Quando ricrei o aggiorni le istanze, oppure quando le istanze vengono riparate automaticamente, il gruppo di istanze gestite ricrea i dischi di avvio dall'immagine specificata nel modello di istanza.

REST

Per specificare quali dischi del criterio stateful di un gruppo di istanze gestite rendono stateless, rimuovi la configurazione di ogni disco dal criterio stateful del gruppo di istanze gestite utilizzando il metodo instanceGroupManagers.patch:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": null,
        ...
      }
    }
  }
}

Sostituisci quanto segue:

  • PROJECT: l'ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite da aggiornare.
  • DEVICE_NAME: il nome dispositivo di un disco che vuoi rimuovere dal criterio stateful. Se specifichi un valore null, verrà rimossa la configurazione stateful per il disco in questione. Puoi fornire uno o più nomi di dispositivi da rimuovere.

Esempio

Esegui un'applicazione legacy con più nodi in un gruppo di istanze gestite denominato example-legacy-group. Ogni VM nel gruppo di istanze gestite archivia i dati dell'applicazione su un disco di avvio con nome del dispositivo boot-disk, che hai configurato come stateful nel criterio stateful del gruppo di istanze gestite. Hai spostato i dati dell'applicazione su un disco aggiuntivo e ora vuoi rendere il disco di avvio stateless per semplificare l'aggiornamento a nuove immagini.

Per rimuovere la configurazione stateful del disco di avvio, applica una patch al gruppo di istanze gestite:

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "boot-disk": null
      }
    }
  }
}

Il gruppo di istanze gestite rimuove la configurazione stateful per il nome del dispositivo boot-disk in modo automatico e asincrono per i dischi di avvio di tutte le istanze del gruppo. I dischi di avvio rimangono collegati alle istanze, ma non sono più stateful. Quando ricrei o aggiorni le istanze, oppure quando le istanze vengono riparate automaticamente, il gruppo di istanze gestite ricrea i dischi di avvio dall'immagine specificata nel modello di istanza.

Rimozione di dischi permanenti stateful da un gruppo di istanze gestite

Potrebbe essere necessario rimuovere completamente un disco stateful dalle istanze in un gruppo di istanze gestite, ad esempio se hai riprogettato l'architettura dell'applicazione e hai spostato lo stato fuori dal disco.

I gruppi di istanze gestite non consentono la rimozione dei dischi stateful, quindi devi seguire questi passaggi:

  1. Rimuovi la configurazione stateful del disco dal criterio stateful. In questo modo i dischi con il nome del dispositivo specificato sono stateless.
  2. Scollega i dischi dalle VM se vuoi ancora conservarli.
  3. Implementa un nuovo modello di istanza che non definisce più il disco con il nome dispositivo specificato.

Configurazione di dischi permanenti stateful singolarmente per una VM in un gruppo di istanze gestite

Configura i dischi permanenti stateful per una VM specifica in un gruppo di istanze gestite aggiungendo il nome del dispositivo del disco alla configurazione per istanza di quella VM. Aggiorna la VM per applicare la configurazione per istanza e renderla efficace.

La configurazione individuale dei dischi permanenti stateful per VM specifiche in un gruppo di istanze gestite è utile se devi:

  • Esegui la migrazione dei carichi di lavoro esistenti (portando i dischi esistenti) da VM autonome a MIG stateful per sfruttare la riparazione automatica e gli aggiornamenti semplici.
  • Ripristina backup dei dischi, configurati singolarmente per le VM.
  • Collega temporaneamente altri dischi stateful a una VM specifica per testare, eseguire il debug o copiare i dati.

Aggiunta di dischi stateful esistenti a nuove VM in un gruppo di istanze gestite

Puoi aggiungere dischi stateful esistenti a nuove istanze create manualmente in un gruppo di istanze gestite. Questo è utile per eseguire la migrazione di un'applicazione stateful da VM autonome esistenti a un gruppo di istanze gestite stateful, ad esempio:

  1. Crea un modello di istanza con una configurazione comune per tutte le istanze VM.
  2. Scollega i dischi dati dalle istanze autonome ed elimina queste istanze. Puoi anche scollegare i dischi di avvio se contengono stato da conservare.
  3. Crea un gruppo di istanze gestite vuoto utilizzando il modello di istanza creato in precedenza.
  4. Crea le istanze nel gruppo di istanze gestite con i nomi appropriati e i dischi associati del passaggio precedente. Il gruppo di istanze gestite risponde alla tua richiesta con le seguenti azioni:

    1. Crea una VM dal modello di istanza utilizzando il nome dell'istanza fornito.
      • Un gruppo di istanze gestite a livello di regione crea la VM nella stessa zona in cui si trova il disco. Se il disco è a livello di regione, il gruppo di istanze gestite a livello di regione crea la VM in una delle zone di replica del disco.
    2. Crea una configurazione per istanza con la configurazione stateful fornita per i dischi.
    3. Collega i dischi alla nuova istanza.

Aggiungi dischi stateful esistenti quando crei manualmente istanze specifiche in un gruppo di istanze gestite mediante gcloud CLI o REST. Il gruppo di istanze gestite applica la configurazione immediatamente alla creazione delle VM.

gcloud

Per creare una VM con un nome personalizzato e collegare uno o più dischi stateful esistenti alla VM, utilizza il comando gcloud compute instance-groups managed create-instance con uno o più flag --stateful-disk.

gcloud compute instance-groups managed create-instance NAME \
  --instance VM_NAME \
  [--zone ZONE | --region REGION] \
  --stateful-disk device-name=DEVICE_NAME,source=DISK[,mode=MODE][,auto-delete=DELETE_RULE]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite in cui devi creare un'istanza.
  • VM_NAME: il nome della nuova istanza da creare.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
  • REGION: la regione in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di regione).
  • DEVICE_NAME: il nome del dispositivo da utilizzare per collegare il disco.
  • DISK: l'URI di un disco permanente esistente da collegare in DEVICE_NAME specificato nel formato projects/project-id/zones/zone/disks/disk-name per un disco di zona e projects/project-id/regions/region/disks/disk-name per un disco di regione.
  • MODE: specifica la modalità del disco. Le opzioni supportate sono:
    • ro: sola lettura.
    • rw: (valore predefinito) Lettura/scrittura.
  • DELETE_RULE: un valore che indica cosa deve succedere a un disco stateful quando viene eliminata un'istanza VM. Le opzioni disponibili sono:

    • never: (valore predefinito) Non eliminare mai il disco; scollega il disco quando la relativa istanza viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando l'istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza viene eliminata manualmente o quando la dimensione del gruppo viene ridotta.

    Indipendentemente dal valore della regola di eliminazione, i dischi stateful vengono sempre conservati per le operazioni di riparazione automatica, aggiornamento e ricreazione delle istanze.

Esempio

Vuoi disporre della riparazione automatica per un server di database attualmente in esecuzione su una VM autonoma denominata db-instance che archivia i dati su un disco denominato db-data-disk-1.

Crea un gruppo di istanze gestite con riparazione automatica, crea una VM simile all'interno del gruppo di istanze gestite e collega il disco dati esistente db-data-disk-1 alla nuova istanza come disco stateful:

  1. Arresta la VM db-instance durante un periodo di manutenzione.
  2. Crea un modello di istanza denominato db-template utilizzando la configurazione db-instance.
  3. Scollega db-data-disk-1 da db-instance ed elimina db-instance.
  4. Crea un gruppo di istanze gestite vuoto, example-database-mig, da db-template e configura la riparazione automatica.
  5. Crea un'istanza gestita con il nome db-instance originale e associa db-data-disk-1 come disco stateful:

    gcloud compute instance-groups managed create-instance example-database-mig \
      --instance db-instance \
      --zone us-east1-c \
      --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/db-data-disk-1,auto-delete=never
    

    Il comando crea un'istanza, db-instance, nel gruppo di istanze gestite, crea una configurazione per istanza corrispondente con il disco stateful db-data-disk-1 e collega il disco alla nuova VM, utilizzando data-disk come nome del dispositivo.

REST

Per creare una o più istanze in un gruppo di istanze gestite, impostare nomi personalizzati delle VM e collegare uno o più dischi stateful esistenti a queste istanze, utilizza il metodo instanceGroupManagers.createInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances

{
  "instances": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      }
    },
    ...
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite in cui creare un'istanza.
  • VM_NAME: il nome dell'istanza da creare.
  • DEVICE_NAME: il nome del dispositivo da utilizzare per il collegamento del disco.
  • DISK: l'URI di un disco permanente esistente da collegare nel valore DEVICE_NAME specificato nel formato projects/project-id/zones/zone/disks/disk-name per un disco di zona o projects/project-id/regions/region/disks/disk-name per un disco di regione.
  • MODE: specifica la modalità del disco. Le opzioni supportate sono:
    • READ_ONLY: sola lettura.
    • READ_WRITE: (valore predefinito) Lettura/scrittura.
  • DELETE_RULE: un valore che indica cosa deve succedere a un disco stateful quando viene eliminata una VM. Le opzioni disponibili sono le seguenti:

    • never: (valore predefinito) Non eliminare mai il disco, ma scollegalo quando la relativa VM viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando l'istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza viene eliminata manualmente o quando la dimensione del gruppo viene ridotta.

    Indipendentemente dal valore della regola di eliminazione, i dischi stateful vengono sempre conservati per le operazioni di riparazione automatica, aggiornamento e ricreazione delle istanze.

Esempio

Vuoi disporre della riparazione automatica per un server di database attualmente in esecuzione su una VM autonoma denominata db-instance che archivia i dati su un disco denominato db-data-disk-1.

Crea un gruppo di istanze gestite stateful con riparazione automatica, crea un'istanza simile all'interno del gruppo di istanze gestite e collega il disco dati esistente db-data-disk-1 alla nuova VM come disco stateful:

  1. Arresta la VM db-instance durante un periodo di manutenzione.
  2. Crea un modello di istanza denominato db-template utilizzando la configurazione db-instance.
  3. Scollega db-data-disk-1 da db-instance ed elimina db-instance.
  4. Crea un gruppo di istanze gestite vuoto, example-database-mig, da db-template e configura la riparazione automatica.
  5. Crea un'istanza con il nome db-instance originale e collega la db-data-disk-1 come disco stateful:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/createInstances
    
    {
      "instances": [
        {
          "name": "db-instance",
          "preservedState" : {
            "disks": {
              "data-disk" : {
                "source": "projects/example-project/zones/us-east1-c/disks/db-data-disk-1",
                "mode": "READ_WRITE",
                "autoDelete": "never"
              }
            }
          }
        }
      ]
    }
    

    Il metodo crea un'istanza, db-instance, nel gruppo di istanze gestite, crea una configurazione per istanza corrispondente con il disco stateful db-data-disk-1 e collega il disco alla nuova istanza, utilizzando data-disk come nome del dispositivo.

Aggiunta, dichiarazione e sostituzione di dischi stateful singolarmente per le VM in un gruppo di istanze gestite

Configura i dischi stateful singolarmente per un'istanza gestita aggiungendo o aggiornando una configurazione del disco stateful nella configurazione per istanza associata. Quindi aggiorna l'istanza per applicare la configurazione per istanza alla VM.

La configurazione individuale dei dischi stateful è utile per le attività seguenti:

  • Aggiunta di un disco stateful dall'esterno di un gruppo di istanze gestite a una VM nel gruppo di istanze gestite.
  • Dichiarazione di un disco precedentemente stateless come stateful per una VM in un gruppo di istanze gestite.
  • Sostituzione di un disco stateful con un disco diverso per una VM in un gruppo di istanze gestite.

Aggiunta di un disco stateful dall'esterno di un gruppo di istanze gestite a una VM del gruppo di istanze gestite. Puoi collegare qualsiasi disco esterno a un gruppo di istanze gestite a un'istanza gestita aggiungendo la configurazione stateful per il disco alla configurazione per istanza associata. Dopo aver applicato la configurazione, il gruppo di istanze gestite collega automaticamente il disco all'istanza e lo tratta come stateful.

Dichiarazione di un disco permanente stateless in precedenza come stateful. Puoi dichiarare come stateful un disco precedentemente stateless, attualmente collegato a una VM, aggiungendo la configurazione stateful per questo disco, inclusi l'URI e il nome del dispositivo, alla configurazione per istanza associata. Dopo aver applicato la configurazione, il gruppo di istanze gestite inizia a conservare il disco come stateful.

Sostituzione di un disco stateful con un disco diverso. La sostituzione di un disco stateful con un altro stateful può essere utile, ad esempio, se hai bisogno di accedere a un backup recuperato. Puoi scambiare un disco stateful con un altro aggiornando l'URI del disco mantenendo lo stesso nome del dispositivo nella configurazione per istanza. Dopo aver applicato la configurazione per istanza aggiornata, il gruppo di istanze gestite scollega il vecchio disco e collega quello nuovo utilizzando lo stesso nome di dispositivo. Quando esegui l'applicazione dell'aggiornamento, scegli se mantenere l'istanza in esecuzione, riavviarla o ricrearla. La sostituzione di un disco di avvio richiede almeno il riavvio della VM.

gcloud

Per configurare i dischi stateful singolarmente per una VM in un gruppo di istanze gestite, aggiungi o aggiorna la configurazione del disco stateful nella configurazione per istanza associata. Quindi, aggiorna l'istanza per applicare la configurazione.

Se non esiste ancora una configurazione per istanza per l'istanza, utilizza il comando gcloud compute instance-groups managed instance-configs create con uno o più flag --stateful-disk:

gcloud compute instance-groups managed instance-configs create NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Se esiste già una configurazione per istanza per l'istanza, utilizza il comando gcloud compute instance-groups managed instance-configs update con uno o più flag --stateful-disk.

Il flag --update-instance (predefinito) applica le modifiche immediatamente all'istanza. Se utilizzi --no-update-instance, le modifiche non vengono applicate e vengono applicate alla successiva creazione o aggiornamento dell'istanza.

gcloud compute instance-groups managed instance-configs update NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite.
  • VM_NAME: il nome dell'istanza VM per cui configurare i dischi stateful.
  • DEVICE_NAME: il nome del dispositivo utilizzato per collegare il disco.
  • DISK: l'URI di un disco permanente esistente da collegare nel valore DEVICE_NAME specificato, nel formato projects/project-id/zones/zone/disks/disk-name per un disco di zona e projects/project-id/regions/region/disks/disk-name per un disco di regione.

    Il flag secondario source=DISK è facoltativo se il dispositivo è già definito nella configurazione per istanza dell'istanza. In caso contrario, è obbligatorio.

    Se omesso, l'URI del disco attualmente configurato rimane invariato.

  • MODE: specifica la modalità del disco. Puoi specificare solo mode se specifichi anche source. Le opzioni supportate sono:

    • ro: sola lettura.
    • rw: (valore predefinito) Lettura/scrittura.

    Se omesso, il valore predefinito viene impostato per una nuova configurazione del disco stateful. Il valore rimane invariato in una configurazione esistente.

  • DELETE_RULE: un valore che indica cosa deve succedere a un disco stateful quando viene eliminata una VM. Le opzioni disponibili sono le seguenti:

    • never: (valore predefinito) Non eliminare mai il disco; scollega il disco quando la relativa istanza viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando la relativa istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza viene eliminata manualmente o quando le dimensioni del gruppo diminuiscono.

    Se omesso, il valore predefinito viene impostato per una nuova configurazione del disco stateful. Il valore rimane invariato in una configurazione esistente.

    Indipendentemente dal valore della regola di eliminazione, i dischi stateful vengono sempre conservati per le operazioni di riparazione automatica, aggiornamento e ricreazione delle istanze.

  • MINIMAL_ACTION: esegui almeno l'azione specificata quando applichi l'aggiornamento della configurazione per istanza all'istanza. Da utilizzare insieme al flag --update-instance. Il valore deve essere uno dei seguenti:

    • none: nessuna azione.
    • refresh: applica gli aggiornamenti che è possibile applicare senza arrestare la VM.
    • restart: arresta la VM e riavviala.
    • replace: ricrea la VM.

    Se omessa, viene usata l'azione meno invasiva richiesta dall'aggiornamento.

Esempio

I dati su un disco stateful attualmente collegato, data-disk-1, sono stati danneggiati e vuoi ripristinarli dall'ultimo backup. Hai creato un disco, data-disk-2, da uno snapshot per sostituire il disco danneggiato nell'istanza, db-instance-1, gestito da un gruppo di istanze gestite stateful, example-database-mig. Il disco originale data-disk-1 è collegato sotto il nome del dispositivo data-disk con una regola di eliminazione automatica per non eliminare mai il disco.

Per sostituire data-disk-1 con data-disk-2, esegui questo comando:

gcloud compute instance-groups managed instance-configs update example-database-mig \
  --instance db-instance-1 \
  --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/data-disk-2 \
  --update-instance \
  --instance-update-minimal-action restart

Il comando esegue quanto segue:

  1. Aggiorna la configurazione per istanza per db-instance-1:
    1. Aggiorna l'origine del disco con nome del dispositivo data-disk da data-disk-1 (ultima configurazione) a data-disk-2 (nuova configurazione).
    2. Conserva la regola di eliminazione automatica per non eliminare mai il disco perché il parametro auto-delete viene omesso nel flag --stateful-disk e, per impostazione predefinita, la regola di eliminazione è never.
  2. Applica immediatamente l'aggiornamento della configurazione per istanza alla VM db-instance-1 perché è incluso il flag --update-instance. Il gruppo di istanze gestite scollega data-disk-1 e collega data-disk-2 sotto lo stesso nome di dispositivo, data-disk.
  3. Poiché l'azione minima è impostata su restart, il gruppo di istanze gestite riavvia l'istanza db-instance-1 per aggiornare la VM, in modo che l'applicazione del database possa iniziare a utilizzare il nuovo disco.

Terraform

Per configurare i dischi stateful singolarmente per una VM in un gruppo di istanze gestite, aggiungi la configurazione del disco stateful nella configurazione per istanza associata. Quindi, aggiorna l'istanza per applicare la configurazione.

Per aggiungere la configurazione per istanza di una VM, utilizza la risorsa google_compute_per_instance_config e includi il blocco preserved_state come mostrato nell'esempio seguente.

resource "google_compute_per_instance_config" "default" {
  instance_group_manager = google_compute_instance_group_manager.default.name
  zone                   = google_compute_instance_group_manager.default.zone
  name                   = "db-instance"
  preserved_state {
    disk {
      device_name = "data-disk"
      source      = google_compute_disk.default.id
      delete_rule = "NEVER"
    }
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

REST

Per configurare i dischi stateful singolarmente per le VM in un gruppo di istanze gestite, aggiungi o aggiorna la configurazione del disco stateful nelle configurazioni per istanza associate. Poi aggiorna le istanze per applicare la configurazione.

Se non esistono ancora configurazioni per istanza per le VM specificate, utilizza il metodo instanceGroupManagers.updatePerInstanceConfigs o il metodo regionInstanceGroupManagers.updatePerInstanceConfigs con configurazione stateful per uno o più dischi:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Se esistono già configurazioni per istanza per le VM specificate, utilizza il metodo instanceGroupManagers.patchPerInstanceConfigs o il metodo regionInstanceGroupManagers.patchPerInstanceConfigs con configurazione stateful per uno o più dischi:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite.
  • VM_NAME: il nome della VM per cui configurare i dischi stateful.
  • DEVICE_NAME: il nome del dispositivo utilizzato per collegare il disco.
  • DISK: l'URI di un disco permanente esistente da collegare nel valore DEVICE_NAME specificato, nel formato projects/project-id/zones/zone/disks/disk-name per un disco di zona e projects/project-id/regions/region/disks/disk-name per un disco di regione.

    Il campo "source": "DISK" è facoltativo se il dispositivo è già definito nella configurazione per istanza dell'istanza. In caso contrario, è obbligatorio.

    Se il campo source viene omesso, l'URI del disco attualmente configurato rimane invariato.

  • MODE: (facoltativo) Specifica la modalità del disco. mode può essere specificato solo se viene specificato source. Le opzioni supportate sono:

    • READ_ONLY: sola lettura.
    • READ_WRITE: (valore predefinito) Lettura/scrittura.

    Se omesso, il valore predefinito viene impostato per una nuova configurazione del disco stateful. Il valore rimane invariato in una configurazione esistente.

  • DELETE_RULE: (facoltativo) Valore che indica cosa deve succedere a un disco stateful quando viene eliminata una VM. Le opzioni disponibili sono le seguenti:

    • mai: (valore predefinito) Non eliminare mai il disco; scollega il disco quando la relativa istanza viene eliminata.
    • on-permanent-instance-deletion: elimina il disco stateful quando l'istanza viene eliminata definitivamente dal gruppo di istanze, ad esempio quando l'istanza viene eliminata manualmente o quando la dimensione del gruppo diminuisce.

    Se il campo autoDelete viene omesso, il valore predefinito viene impostato per una nuova configurazione di un disco stateful; il valore rimane invariato in una configurazione esistente.

    Indipendentemente dal valore della regola di eliminazione, i dischi stateful vengono sempre conservati per le operazioni di riparazione automatica, aggiornamento e ricreazione delle istanze.

  • FINGERPRINT: (facoltativo). L'impronta digitale della configurazione specificata, se già esistente. Utilizzato per il blocco ottimistico. Per visualizzare l'ultima fingerprint, effettua una richiesta get() per recuperare la risorsa.

I metodi updatePerInstanceConfigs e patchPerInstanceConfigs aggiornano le configurazioni per istanza specificate, ma non applicano gli aggiornamenti della configurazione alle VM gestite associate. Le modifiche vengono applicate a un'istanza quando al gruppo di istanze gestite viene chiesto di ricreare o aggiornare l'istanza. Puoi anche aggiornare selettivamente l'istanza per applicare le modifiche.

Esempio

I dati su un disco stateful attualmente collegato, data-disk-1, sono stati danneggiati e vuoi ripristinarli dall'ultimo backup. Hai creato un disco, data-disk-2, da uno snapshot per sostituire il disco danneggiato nell'istanza, db-instance-1, gestito da un gruppo di istanze gestite stateful, example-database-mig. Il disco originale data-disk-1 è collegato sotto il nome del dispositivo data-disk con una regola di eliminazione automatica per non eliminare mai il disco.

Per aggiornare la configurazione per istanza per db-instance-1 con il nuovo disco, chiama il metodo patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "db-instance-1",
      "preservedState" : {
        "disks": {
          "data-disk" : {
            "source": "projects/example-project/zones/us-east1-c/disks/data-disk-2"
          }
        }
      }
    }
  ]
}

Il metodo corregge la configurazione per istanza per db-instance-1:

  1. Aggiorna source per un disco con nome dispositivo data-disk da data-disk-1 (ultima configurazione) a data-disk-2 (nuova configurazione).
  2. Mantiene invariati i parametri mode e autoDelete perché i parametri sono omessi nella richiesta.

L'aggiornamento della configurazione non è ancora stato applicato alla VM db-instance-1. Il gruppo di istanze gestite applica l'aggiornamento della configurazione quando ricrei o aggiorni l'istanza.

Per applicare l'aggiornamento della configurazione per istanza alla VM db-instance-1, chiama il metodo instanceGroupManagers.applyUpdatesToInstances per l'istanza:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/applyUpdatesToInstances
{
  "instances": ["/zones/us-east1-c/instances/db-instance-1"],
  "minimalAction": "RESTART"
}

Il metodo aggiorna lo stato conservato dell'istanza gestita, scollegando data-disk-1 e collegando data-disk-2 con lo stesso nome dispositivo data-disk. Poiché minimalAction è impostato su RESTART, il metodo riavvia la VM db-instance-1, consentendo all'applicazione di database di iniziare a utilizzare il nuovo disco.

Dichiarazione di un disco stateful o dichiarazione stateless per una singola VM

Potrebbe essere necessario scollegare un disco stateful o configurarlo in modo che venga trattato come stateless per una singola VM. Ad esempio:

  • Se cambi l'architettura dell'app in modo da spostare lo stato dal disco.
  • Se configuri per sbaglio il disco come stateful e vuoi ripristinarlo.

Scollega un disco stateful o rendilo stateless per una singola VM rimuovendo la configurazione stateful del disco dalla configurazione per istanza associata o eliminando l'intera configurazione per istanza. Quando applichi la modifica:

  • Se il disco non è definito nel modello di istanza, il gruppo di istanze gestite scollega il disco.
    • Il gruppo di istanze gestite non elimina il disco quando ne elimini la configurazione dalla configurazione per istanza, indipendentemente dalla regola di eliminazione automatica nella configurazione.
  • Se il disco è definito dal modello di istanza, il gruppo di istanze gestite lo considera come stateless, il che significa che il gruppo di istanze gestite ricrea il disco dalla sua origine nel modello di istanza alla successiva ricreazione, aggiornamento o riparazione automatica dell'istanza.

La rimozione di una configurazione di disco da una configurazione per istanza non riavvia un'istanza VM in esecuzione, a meno che tu non scelga di farlo esplicitamente.

Per maggiori informazioni, consulta Applicare gli aggiornamenti delle configurazioni per istanza.

gcloud

Per scollegare i dischi stateful o dichiararli singolarmente per una VM in un gruppo di istanze gestite, rimuovi quest'ultima dalla configurazione per istanza associata o elimina l'intera configurazione per istanza se non contiene altri stati. Aggiorna l'istanza per applicare la configurazione.

Per rimuovere la configurazione di un disco stateful dalla configurazione per istanza associata, utilizza il comando gcloud compute instance-groups managed instance-configs update con il flag --remove-stateful-disks. Il flag --update-instance (predefinito) applica le modifiche immediatamente all'istanza. Se utilizzi --no-update-instance, le modifiche non vengono applicate e vengono applicate alla successiva creazione o aggiornamento dell'istanza.

gcloud compute instance-groups managed instance-configs update NAME \
  --instance VM_NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite.
  • VM_NAME: nome della VM da cui rimuovere la configurazione stateful.
  • DEVICE_NAME: il nome del dispositivo utilizzato per collegare il disco.
  • MINIMAL_ACTION: esegui almeno l'azione specificata durante l'aggiornamento della VM con la sua configurazione per istanza. Può essere utilizzato solo insieme a --update-instance. Il valore deve essere uno dei seguenti:

    • none: nessuna azione.
    • refresh: applica gli aggiornamenti che è possibile applicare senza arrestare la VM.
    • restart: arresta la VM e riavviala.
    • replace: ricrea la VM.

    Se omessa, viene usata l'azione meno invasiva richiesta dall'aggiornamento.

Esempio

Esegui un'applicazione legacy su un gruppo di istanze gestite denominato example-legacy-group. Ogni VM nel gruppo di istanze gestite archivia i dati dell'applicazione su un disco di avvio con nome dispositivo boot-disk. Tramite le configurazioni per istanza, hai configurato ogni disco di avvio come stateful. Ora che hai spostato i dati dell'applicazione su un disco aggiuntivo e vuoi rendere il disco di avvio stateless per ogni VM per facilitare l'aggiornamento a nuove immagini.

Per ogni istanza, ad esempio, per node-1, esegui il comando:

gcloud compute instance-groups managed instance-configs update example-legacy-group \
  --instance node-1 \
  --remove-stateful-disks boot-disk \
  --update-instance

Il comando esegue quanto segue:

  1. Rimuove la configurazione per il disco con nome dispositivo boot-disk dalla configurazione per istanza di node-1.
  2. Applica immediatamente l'aggiornamento della configurazione per istanza alla VM node-1 perché è incluso il flag --update-instance. Il gruppo di istanze gestite rimuove il disco di avvio dall'istanza preservedStateFromConfig dell'istanza gestita e tratta il disco di avvio come stateless, il che significa che il gruppo di istanze gestite ricrea il disco dalla propria immagine di avvio nel modello di istanza agli eventi successivi di ricreazione, aggiornamento o riparazione automatica delle istanze.

REST

Per scollegare i dischi stateful o dichiararli singolarmente per una VM in un gruppo di istanze gestite, rimuovi quest'ultima dalla configurazione per istanza associata o elimina l'intera configurazione per istanza se non contiene altri stati. Quindi aggiorna l'istanza per applicare la configurazione.

Per rimuovere la configurazione di un disco stateful dalla configurazione per istanza associata, utilizza il metodo instanceGroupManagers.patchPerInstanceConfigs o regionInstanceGroupManagers.patchPerInstanceConfigs:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : null
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
      ...
    }
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto della richiesta.
  • ZONE: la zona in cui si trova il gruppo di istanze gestite (si applica a un gruppo di istanze gestite a livello di zona).
    • Per un gruppo di istanze gestite a livello di regione, sostituisci zones/ZONE con regions/REGION e specifica la regione del gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite.
  • VM_NAME: il nome della VM da cui rimuovere la configurazione stateful.
  • DEVICE_NAME: il nome del dispositivo utilizzato per collegare il disco.
  • FINGERPRINT: l'impronta della configurazione specificata, se esiste già. Utilizzato per il blocco ottimistico. Per visualizzare l'ultima fingerprint, effettua una richiesta get() per recuperare la risorsa.

Il metodo patchPerInstanceConfigs corregge le configurazioni per istanza specificate, ma non applica le modifiche alle VM associate. Le modifiche vengono applicate a una VM quando ricrei o aggiorni l'istanza. Puoi applicare le modifiche manualmente o utilizzare gli aggiornamenti automatici in sequenza.

Esempio

Esegui un'applicazione legacy su un gruppo di istanze gestite denominato example-legacy-group. Ogni VM nel gruppo di istanze gestite archivia i dati dell'applicazione su un disco di avvio con nome dispositivo boot-disk. Hai configurato il disco di avvio come stateful nelle configurazioni per istanza del gruppo di istanze gestite durante la migrazione delle VM autonome nel gruppo di istanze gestite. Hai spostato i dati dell'applicazione su un disco aggiuntivo e ora vuoi rendere il disco di avvio stateless per ogni VM per semplificare l'aggiornamento a nuove immagini.

  1. Chiama il metodo patchPerInstanceConfigs per le istanze, ad esempio per node-1 con un valore null per il disco di avvio:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/patchPerInstanceConfigs
    
    {
      "perInstanceConfigs": [
        {
          "name": "node-1",
          "preservedState" : {
            "disks": {
              "boot-disk" : null
            }
          }
        }
      ]
    }
    

    Questo metodo rimuove la configurazione del disco con nome dispositivo boot- disk dalla configurazione per istanza di node-1. L'aggiornamento della configurazione non è ancora stato applicato all'istanza VM node-1. L'aggiornamento della configurazione verrà applicato alla successiva ricreazione o aggiornamento dell'istanza.

  2. Per applicare l'aggiornamento della configurazione per istanza all'istanza VM node-1, chiama il metodo instanceGroupManagers.applyUpdatesToInstances per l'istanza:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/applyUpdatesToInstances
    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

    Il gruppo di istanze gestite rimuove il disco di avvio da preservedStateFromConfig per l'istanza node-1 e tratta il disco come stateless. In altre parole, il gruppo di istanze gestite ricrea il disco dall'immagine di avvio nel modello di istanza al successivo evento di ricreazione, aggiornamento o riparazione automatica dell'istanza.

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