Configurazione dei metadati stateful nei MIG


I metadati dell'istanza sono utili per impostare le proprietà e comunicare con le applicazioni tramite il server metadati. Ad esempio, puoi utilizzare i metadati per configurare l'identità dell'istanza della macchina virtuale (VM), le variabili di ambiente informazioni sull'architettura del cluster o sull'intervallo di dati responsabile di una VM. .

Configurando i metadati stateful in un gruppo di istanze gestite, assicurati che i metadati specifici dell'istanza vengano conservati negli eventi di riparazione automatica, aggiornamento e ricreazione della istanza gestita.

Configura i metadati stateful singolarmente per le istanze VM in un gruppo di istanze gestite impostandoli nelle configurazioni per istanza e applicando la configurazione. Puoi impostare una configurazione per istanza sull'istanza o su istanze gestite esistenti. Dopo l'applicazione della configurazione per istanza, il gruppo MIG memorizza i metadati stateful nel campo stato conservato dalla configurazione (preservedStateFromConfig) di un'istanza gestita.

Prima di iniziare

  • Scopri quando utilizzare i gruppi di istanze gestite stateful e come funzionano i gruppi di istanze gestite stateful.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Per ulteriori informazioni, consulta Set up authentication for a local development environment.

      REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Limitazioni

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

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

  • Non puoi utilizzare la scalabilità automatica se il gruppo di istanze gestite ha una configurazione stateful.
  • Se vuoi utilizzare gli aggiornamenti in sequenza automatici, devi impostare il valore metodo di sostituzione a RECREATE.
  • Per i gruppi di istanze gestite regionali stateful, devi disattivare 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 specificarle in nessuna configurazione per istanza e contemporaneamente nella configurazione per tutte le istanze del gruppo.

  • Quando elimini definitivamente un'istanza (manualmente o modificandone le dimensioni), il gruppo di istanze gestite non conserva i metadati stateful dell'istanza.

Impostazione dei metadati stateful al momento della creazione dell'istanza

Imposta i metadati stateful quando crei manualmente le istanze in un gruppo di istanze gestite. Questo è utile per la migrazione di un'applicazione stateful su VM autonome a un MIG stateful e durante la creazione di istanze stateful.

Quando crei manualmente un'istanza in un gruppo di istanze gestite e fornisci metadati stateful, il gruppo di istanze gestite esegue le seguenti attività:

  1. Crea un'istanza gestita dal modello di istanza utilizzando il nome dell'istanza fornito.
  2. Crea una configurazione per istanza con i metadati stateful forniti e imposta questi metadati sull'istanza.
  3. Archivia i metadati stateful nello stato conservato dalla configurazione (preservedStateFromConfig) dell'istanza gestita associata.

gcloud

Per creare un'istanza gestita con un nome personalizzato e impostare metadati stateful su quella VM, utilizza il comando gcloud compute instance-groups managed create-instance con il flag --stateful-metadata.

gcloud compute instance-groups managed create-instance NAME \
  --instance INSTANCE_NAME \
  --stateful-metadata KEY=VALUE[,KEY=VALUE,...]

Sostituisci quanto segue:

  • NAME: il nome del gruppo di istanze gestite in cui per creare un'istanza
  • INSTANCE_NAME: il nome dell'istanza da creare
  • KEY e VALUE: coppie chiave-valore dei metadati stateful da impostare singolarmente per le istanze, oltre ai metadati definiti nel modello di istanza
    • Le coppie chiave-valore qui impostate hanno la priorità sulle eventuali le coppie chiave-valore del modello di istanza

Esempio

Devi eseguire il deployment di un cluster di nodi, example-cluster, che può funzionare in una delle due modalità: active o standby. Imposti la modalità singolarmente per ogni VM in un cluster utilizzando i metadati, ad esempio: mode:active. Inoltre, configuri il livello di dettaglio della registrazione per ogni nodo utilizzando una chiave di metadati logging che può essere impostata su basic o elaborate. La sull'applicazione sul nodo sia configurata con i valori dei metadati dell'istanza.

Per creare un nodo attivo, node-12, con un logging elaborato, esegui il seguente comando:

gcloud compute instance-groups managed create-instance example-cluster \
  --instance node-12 \
  --stateful-metadata mode=active,logging=elaborate

Il comando crea una VM, node-12, nel gruppo di istanze gestite example-cluster e imposta due coppie chiave-valore di metadati, mode:active e logging:elaborate, per la nuova istanza.

Terraform

Creare un'istanza gestita con un nome personalizzato e impostare metadati stateful. su quella VM, utilizza google_compute_per_instance_config risorsa.

L'esempio seguente utilizza un gruppo di istanze gestite a livello di zona. Se non hai ancora un gruppo di istanze gestite a livello di zona, e poi crea un gruppo di istanze gestite a livello di zona con VM confinate in una singola zona.

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                   = "node-12"
  preserved_state {
    metadata = {
      mode    = "active"
      logging = "elaborate"
    }
  }
}

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

REST

Creazione di una o più istanze gestite in un gruppo di istanze gestite con nomi di VM personalizzate e per impostare singolarmente i metadati stateful su queste VM, utilizza Metodo instanceGroupManagers.createInstances. Per un gruppo di istanze gestite a livello di regione, utilizza il metodo regionInstanceGroupManagers.createInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances
{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY" : "VALUE",
          ...
        }
      }
    },
    ...
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per la richiesta
  • ZONE: il 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 specificare la regione il gruppo di istanze gestite
  • NAME: il nome del gruppo di istanze gestite in cui creare un'istanza
  • INSTANCE_NAME: il nome del per creare un'istanza
  • KEY e VALUE: coppie chiave-valore dei metadati stateful da impostare singolarmente per le istanze, oltre ai metadati definiti nel modello di istanza
    • Le coppie chiave-valore qui impostate hanno la priorità sulle eventuali le coppie chiave-valore del modello di istanza

Esempio

Devi eseguire il deployment di un cluster di nodi, example-cluster, che può funzionare in una delle due modalità: active o standby. Imposti la modalità singolarmente per ogni VM in un cluster utilizzando i metadati, ad esempio: mode:active. Inoltre, configurerai la modalità di elaborazione del logging per ciascun nodo, utilizzando una Chiave dei metadati logging che può essere impostata su basic o elaborate. L'applicazione sul nodo viene configurata utilizzando i valori dei metadati dell'istanza.

Per creare un nodo attivo, node-12, con un logging elaborato, esegui il seguente metodo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/createInstances

{
  "instance": [
    {
      "name": "node-12",
      "preservedState" : {
        "metadata": {
          "mode":"active",
          "logging":"elaborate"
        }
      }
    }
  ]
}

Il metodo crea una VM, node-12, nel gruppo di istanze gestite example-cluster e imposta due coppie chiave-valore dei metadati, mode:active e logging:elaborate, per la nuova istanza.

Impostazione, modifica e rimozione individuale dei metadati stateful per le istanze VM esistenti

Imposta, modifica o rimuovi i metadati stateful per un'istanza esistente in un MIG impostandoli in una configurazione per istanza associata e poi applicando la configurazione aggiornando l'istanza.

gcloud

Per configurare singolarmente i metadati stateful per un'istanza VM in un gruppo di istanze gestite, imposta oppure rimuovi i metadati stateful nella configurazione per istanza associata. Se per applicare la configurazione all'istanza contemporaneamente (--update-instance), puoi scegliere se mantenere l'istanza in esecuzione, riavviarlo o ricrearlo. Se non applichi la configurazione (--no-update-instance), le modifiche avranno effetto solo dopo di ricreare o aggiornare l'istanza.

Se per una determinata istanza non esiste una configurazione per istanza, utilizza il comando gcloud compute instance-groups managed instance-configs create con uno dei seguenti flag:

gcloud compute instance-groups managed instance-configs create NAME \
  --instance INSTANCE_NAME \
  --stateful-metadata KEY=VALUE[,KEY=VALUE,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Se per una determinata istanza esiste già una configurazione per istanza, utilizza il gcloud compute instance-groups managed instance-configs update comando con:

  • Il flag --stateful-metadata per impostare o modificare i metadati oppure
  • Flag --remove-stateful-metadata per la rimozione di un'istanza specifica o metadati stateful,
gcloud compute instance-groups managed instance-configs update NAME \
  --instance INSTANCE_NAME \
  [--stateful-metadata KEY=VALUE[,KEY=VALUE,...]] \
  [--remove-stateful-metadata KEY[,KEY,...]] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Sostituisci quanto segue:

  • NAME: il nome dell'account gestito gruppo di istanze gestite.
  • INSTANCE_NAME: il nome del per la quale configurare i metadati stateful.
  • KEY=VALUE: metadati stateful coppie chiave-valore da impostare singolarmente per l'istanza in aggiunta metadati definiti nel modello di istanza. I valori chiave impostati qui hanno la precedenza su eventuali valori chiave in conflitto del modello di istanza.
  • KEY: chiavi di metadati stateful specifiche dell'istanza per dalla configurazione per istanza.
    • Se un valore della chiave non è definito dal modello di istanza, la coppia chiave-valore viene rimossa completamente dall'istanza quando la modifica applicata.
    • Se un valore per la chiave è definito dal modello di istanza, il valore del modello di istanza viene impostato sull'istanza quando viene applicata la modifica.
  • MINIMAL_ACTION: esegui almeno il valore specificato quando applichi l'aggiornamento della configurazione per istanza all'istanza. Un MINIMAL_ACTION può essere impostato solo quando viene utilizzato il flag --update-instance. Il valore deve essere uno dei seguenti:

    • none: nessuna azione.
    • refresh: applica aggiornamenti che è possibile applicare senza l'arresto dell'istanza.
    • restart: arresta l'istanza e riavviala.
    • replace: ricrea l'istanza.

    Se omesso, viene utilizzata l'azione meno invasiva richiesta dall'aggiornamento.

Esempio

Hai un cluster di nodi, example-cluster, che può funzionare in una di due modalità: active o standby. Puoi impostare la modalità singolarmente per ogni VM nel cluster utilizzando i metadati, ad esempio: mode:active. Inoltre, configura il livello di dettaglio della registrazione per ogni nodo utilizzando una chiave di metadati logging che può essere impostata su basic o elaborate. L'applicazione Ogni nodo consuma i valori dei metadati dell'istanza.

Il modello di istanza definisce i metadati mode:active e logging:basic per da utilizzare come predefinita per tutte le istanze. Hai impostato logging:elaborate in configurazione per istanza per la VM node-12 nel cluster. Ora vuoi che passa node-12 alla modalità standby e passa il logging a basic per questa operazione VM.

Per impostare l'istanza node-12 in standby e il relativo logging in base, esegui il seguente comando:

gcloud compute instance-groups managed instance-configs update example-cluster \
  --instance node-12 \
  --stateful-metadata mode=standby \
  --remove-stateful-metadata logging

Il comando esegue queste operazioni:

  1. Imposta i metadati mode:standby nella configurazione per istanza associata alla VM node-12 nel gruppo di istanze gestite example-cluster.
  2. Rimuove i metadati logging:elaborate dalla configurazione per istanza per l'istanza node-12.
  3. Applica la modifica della configurazione per istanza alla VM node-12:
    • Imposta i metadati mode:standby in base alla configurazione.
    • Imposta i metadati logging:basic dal modello di istanza perché l'elemento per la chiave logging non è più definito dal valore per istanza configurazione.
  4. Per impostazione predefinita, la modifica viene applicata immediatamente alla VM il flag --no-update-instance è omesso.
  5. La VM rimane in esecuzione durante l'aggiornamento perché Il flag --instance-update-minimal-action è omesso e il valore minimo per l'aggiornamento viene scelta per impostazione predefinita un'azione di disturbo, in questo caso: refresh.

REST

Per configurare singolarmente i metadati stateful per le istanze VM esistenti in un gruppo di istanze gestite, impostare o rimuovere i metadati nelle configurazioni per istanza associate. Aggiorna quindi l'istanza per applicare la configurazione.

Se non esistono ancora configurazioni per istanza per le istanze specificate, utilizza instanceGroupManagers.updatePerInstanceConfigs method con i metadati stateful:

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

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY": "VALUE",
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Se esistono già configurazioni per istanza per le istanze specificate, utilizza il metodo Metodo instanceGroupManagers.patchPerInstanceConfigs

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

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY": "VALUE",
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per la 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 specificare la regione il gruppo di istanze gestite.
  • NAME: il nome del gruppo di istanze gestite.
  • INSTANCE_NAME: il nome del VM per la quale configurare i metadati stateful.
  • KEY e VALUE: stateful coppie chiave-valore dei metadati da impostare singolarmente per le istanze in oltre a eventuali metadati definiti nel modello di istanza.
    • Valori dei metadati stateful definiti per le chiavi già definite esistenti nel modello di istanza sostituiscono i valori della modello di istanza.
    • Le altre voci di metadati del modello di istanza rimangono non interessate e disponibili.
    • Se specifichi null come valore, la chiave viene rimossa dal configurazione per istanza.
  • FINGERPRINT: (facoltativo) L'impronta digitale per la configurazione specificata, se esiste già. Utilizzato per il blocco ottimistico.

I metodi updatePerInstanceConfigs e patchPerInstanceConfigs aggiornano le configurazioni per istanza specificate, ma non applicano gli aggiornamenti della configurazione alle istanze VM associate. Le modifiche vengono applicate a una VM quando aggiornate o ricrei l'istanza. Per applicare le modifiche a una VM, puoi applicare l'aggiornamento manualmente oppure usare il programma di aggiornamento in modalità proattiva o opportunistica.

Esempio

Hai un cluster di nodi, example-cluster, che può funzionare in una di due modalità: active o standby. Puoi impostare la modalità singolarmente per ogni VM nel cluster utilizzando i metadati, ad esempio: mode:active. Inoltre, configura il livello di dettaglio della registrazione per ogni nodo utilizzando una chiave di metadati logging che può essere impostata su basic o elaborate. L'applicazione Ogni nodo consuma i valori dei metadati dell'istanza.

Il modello di istanza definisce i metadati mode:active e logging:basic da utilizzare come predefiniti per tutte le istanze. Hai impostato logging:elaborate in configurazione per istanza per la VM node-12 nel cluster. Ora vuoi impostare node-12 in modalità standby e impostare il logging su basic per questa istanza.

Per impostare la VM node-12 su standby e il relativo logging su di base, esegui la patch della configurazione per istanza associata utilizzando il metodo patchPerInstanceConfigs:

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

{
  "perInstanceConfigs": [
    {
      "name": "node-12",
      "preservedState" : {
        "metadata": {
          "mode": "standby",
          "logging": null
        }
      }
    }
  ]
}

Il metodo esegue le seguenti operazioni:

  1. Imposta i metadati mode:standby nella configurazione per istanza associata con la VM node-12 nel gruppo di istanze gestite example-cluster.
  2. Rimuove i metadati logging:elaborate dalla configurazione per istanza perché il valore fornito è null.

L'aggiornamento della configurazione non è ancora stato applicato all'istanza VM node-12. La l'aggiornamento della configurazione verrà applicato la prossima volta che ricrei o aggiorni l'istanza o se utilizzi proattiva che si aggiorna automaticamente.

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

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-c/instances/node-12"],
  "minimalAction": "NONE"
}

Il metodo applica la configurazione per istanza aggiornata alla VM node-12:

  1. Imposta i metadati mode:standby in base alla configurazione per istanza.
  2. Imposta i metadati logging:basic dal modello di istanza perché il valore della chiave logging non è più definito dal configurazione per istanza.
  3. La VM continua a funzionare durante l'aggiornamento perché minimalAction è impostato su NONE, il che consente al gruppo di istanze gestite di utilizzare l'azione meno invasiva richiesta per l'aggiornamento. Un aggiornamento dei metadati dell'istanza richiede REFRESH, che non interrompe un'istanza in esecuzione.

Feedback

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

Passaggi successivi