Zustandsorientierte Metadaten in MIGs konfigurieren


Mit Instanz-Metadaten können Sie Attribute für Ihre Anwendungen festlegen und über den Metadatenserver mit diesen Anwendungen kommunizieren. Sie können mit Metadaten beispielsweise die Identität der VM-Instanz, Umgebungsvariablen, Informationen zur Clusterarchitektur oder den Datenbereich, den eine VM verwaltet, konfigurieren.

Durch das Konfigurieren der zustandsorientierten Metadaten in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) sorgen Sie dafür, dass die instanzspezifischen Metadaten auf diesen verwalteten Instanzen beibehalten werden, wenn automatische Reparaturen, Aktualisierungen und Neuerstellungen vorgenommen werden.

Konfigurieren Sie die zustandsorientierten Metadaten für jede VM-Instanz in einer MIG separat. Legen Sie die Metadaten dazu in der instanzspezifischen Konfiguration fest und wenden Sie die Konfiguration an. Sie können eine instanzspezifische Konfiguration bei der Instanzerstellung oder für vorhandene verwaltete Instanzen festlegen. Nachdem die instanzspezifische Konfiguration angewendet wurde, speichert die MIG die zustandsorientierten Metadaten im Feld für den beibehaltenen Status aus der Konfiguration (preservedStateFromConfig) der jeweiligen verwalteten Instanz.

Hinweise

  • Machen Sie sich damit vertraut, wann zustandsorientierte MIGs verwendet werden und wie zustandsorientierte MIGs funktionieren.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.

    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

      Wenn Sie die Terraform-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      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.

      Weitere Informationen unter Set up authentication for a local development environment.

      REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

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

        gcloud init

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Beschränkungen

Für eine MIG mit zustandsorientierten Metadaten gelten folgende Einschränkungen:

Für eine MIG mit einer zustandsorientierten Konfiguration – einer zustandsorientierten MIG – gelten folgende Einschränkungen:

  • Sie können Autoscaling nicht verwenden, wenn Ihre MIG eine zustandsorientierte Konfiguration hat.
  • Wenn Sie automatische Rolling Updates verwenden möchten, müssen Sie die Ersetzungsmethode auf RECREATE setzen.
  • Bei zustandsorientierten regionalen MIGs müssen Sie die proaktive Umverteilung deaktivieren. Setzen Sie dafür den Typ für die Umverteilung auf NONE. Damit wird verhindert, dass zustandsorientierte Instanzen durch die automatische zonenübergreifende Umverteilung gelöscht werden.
  • Wenn Sie eine instanzübergreifende Konfiguration zum Überschreiben der Attribute der Instanzvorlage verwenden, können Sie diese Attribute nicht in einer instanzspezifischen Konfiguration und gleichzeitig in der instanzübergreifenden Konfiguration der Gruppe konfigurieren.

  • Wenn Sie eine Instanz dauerhaft löschen (entweder manuell oder durch Verringern der Größe), behält die MIG die zustandsorientierten Metadaten der Instanz nicht bei.

Zustandsorientierte Metadaten bei der Instanzerstellung festlegen

Legen Sie die zustandsorientierten Metadaten fest, wenn Sie in einer MIG manuell Instanzen erstellen. Dies ist nützlich, um eine zustandsorientierte Anwendung von eigenständigen VMs zu einer zustandsorientierten MIG zu migrieren, und wenn Sie zustandsorientierte Instanzen erstellen.

Wenn Sie in einer MIG manuell eine Instanz erstellen und zustandsorientierte Metadaten bereitstellen, führt die MIG die folgenden Aufgaben aus:

  1. Erstellen einer verwalteten Instanz aus der Instanzvorlage mit dem angegebenen Instanznamen
  2. Erstellt eine instanzspezifischen Konfiguration mit den bereitgestellten zustandsorientierten Metadaten und legt diese Metadaten auf der Instanz fest.
  3. Speichert die zustandsorientierten Metadaten im beibehaltenen Status aus der Konfiguration (preservedStateFromConfig) der zugehörigen verwalteten Instanz.

gcloud

Verwenden Sie den Befehl gcloud compute instance-groups managed create-instance mit dem Flag --stateful-metadata, um eine verwaltete Instanz mit einem benutzerdefinierten Namen zu erstellen und zustandsorientierte Metadaten für diese VM festzulegen.

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

Ersetzen Sie Folgendes:

  • NAME: Name der MIG, in der eine Instanz erstellt werden soll
  • INSTANCE_NAME: Name der zu erstellenden Instanz
  • KEY und VALUE: zustandsorientierte Metadaten-Schlüssel/Wert-Paare, die zusätzlich zu den in der Instanzvorlage definierten Metadaten separat für die einzelnen Instanzen festgelegt werden.
    • Die hier festgelegten Schlüsselwerte haben Vorrang vor den eventuell abweichenden Schlüsselwerten aus der Instanzvorlage.

Beispiel

Sie müssen einen Cluster aus Knoten (example-cluster) bereitstellen, der in den Modi active und standby ausgeführt werden kann. Sie legen den Modus mit Metadaten für jede VM in einem Cluster individuell fest. Beispiel: mode:active. Außerdem konfigurieren Sie mit einem logging-Metadatenschlüssel, der auf basic oder elaborate gesetzt werden kann, wie aufwendig das Logging für die einzelnen Knoten betrieben werden soll. Die Anwendung auf dem Knoten wird mit Werten aus den Instanzmetadaten konfiguriert.

Mit diesem Befehl erstellen Sie den aktiven Knoten node-12 mit aufwendigem Logging:

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

Der Befehl erstellt in der MIG example-cluster die VM node-12 und legt die Metadaten-Schlüssel/Wert-Paare mode:active und logging:elaborate für die neue Instanz fest.

Terraform

Verwenden Sie die Ressource google_compute_per_instance_config, um eine verwaltete Instanz mit einem benutzerdefinierten Namen zu erstellen und zustandsorientierte Metadaten für diese VM festzulegen.

Im folgenden Beispiel wird eine zonale MIG verwendet. Wenn Sie noch keine zonale MIG haben, erstellen Sie eine zonale MIG mit VMs, die auf eine einzelne Zone beschränkt sind.

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"
    }
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

REST

Mit der Methode instanceGroupManagers.createInstances erstellen Sie in einer MIG eine oder mehrere verwaltete Instanzen mit benutzerdefinierten VM-Namen und legen für jede der VMs die zustandsorientierten Metadaten einzeln fest. Verwenden Sie für eine regionale MIG die Methode 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",
          ...
        }
      }
    },
    ...
  ]
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Projekt-ID für die Anfrage.
  • ZONE: die Zone, in der sich die MIG befindet (gilt für eine zonale MIG).
    • Ersetzen Sie bei einer regionalen MIG zones/ZONE durch regions/REGION und geben Sie die Region der MIG an.
  • NAME: Name der MIG, in der eine Instanz erstellt werden soll
  • INSTANCE_NAME: Name der zu erstellenden Instanz
  • KEY und VALUE: zustandsorientierte Metadaten-Schlüssel/Wert-Paare, die zusätzlich zu den in der Instanzvorlage definierten Metadaten separat für die einzelnen Instanzen festgelegt werden.
    • Die hier festgelegten Schlüsselwerte haben Vorrang vor den eventuell abweichenden Schlüsselwerten aus der Instanzvorlage.

Beispiel

Sie müssen einen Cluster aus Knoten (example-cluster) bereitstellen, der in den Modi active und standby ausgeführt werden kann. Sie legen den Modus mit Metadaten für jede VM in einem Cluster individuell fest. Beispiel: mode:active. Außerdem konfigurieren Sie mit einem logging-Metadatenschlüssel, der auf basic oder elaborate gesetzt werden kann, wie aufwendig das Logging für die einzelnen Knoten betrieben werden soll. Die Anwendung auf dem Knoten wird mit Werten aus den Instanzmetadaten konfiguriert.

Mit dieser Methode erstellen Sie den aktiven Knoten node-12 mit aufwendigem Logging:

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"
        }
      }
    }
  ]
}

Die Methode erstellt in der MIG example-cluster die VM node-12 und legt die Metadaten-Schlüssel/Wert-Paare mode:active und logging:elaborate für die neue Instanz fest.

Zustandsorientierte Metadaten für vorhandene VM-Instanzen einzeln festlegen, ändern und entfernen

Sie können die zustandsorientierten Metadaten für eine vorhandene Instanz in einer MIG festlegen, ändern oder entfernen. Legen Sie dazu die Metadaten in einer zugehörigen instanzspezifischen Konfiguration fest und wenden Sie die Konfiguration anschließend durch Aktualisieren der Instanz an.

gcloud

Wenn Sie die zustandsorientierten Metadaten für nur eine VM-Instanz in einer MIG konfigurieren möchten, müssen Sie die zustandsorientierten Metadaten in der zugehörigen instanzspezifischen Konfiguration festlegen oder entfernen. Wenn Sie die Konfiguration in demselben Schritt auf die Instanz anwenden möchten (--update-instance), können Sie auswählen, ob die Instanz weiterhin ausgeführt, neu gestartet oder neu erstellt werden soll. Wenn Sie die Konfiguration nicht anwenden (--no-update-instance), werden Ihre Änderungen erst wirksam, wenn Sie die Instanz neu erstellen oder aktualisieren.

Wenn für eine bestimmte Instanz keine instanzspezifische Konfiguration vorhanden ist, verwenden Sie den Befehl gcloud compute instance-groups managed instance-configs create mit einem der folgenden Flags:

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]

Wenn für eine bestimmte Instanz bereits eine instanzspezifische Konfiguration vorhanden ist, verwenden Sie den gcloud compute instance-groups managed instance-configs update-Befehl zusammen mit:

  • dem Flag --stateful-metadata zum Festlegen oder Ändern von Metadaten oder
  • dem Flag --remove-stateful-metadata zum Entfernen von instanzspezifischen zustandsorientierten Metadaten.
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]

Ersetzen Sie Folgendes:

  • NAME: Name der verwalteten Instanzgruppe
  • INSTANCE_NAME: Name der Instanz, für die zustandsorientierte Metadaten konfiguriert werden sollen
  • KEY=VALUE: Schlüssel/Wert-Paare für zustandsorientierte Metadaten, die für die Instanz zusätzlich zu den in der Instanzvorlage definierten Metadaten festgelegt werden. Die hier festgelegten Schlüsselwerte haben Vorrang vor den eventuell abweichenden Schlüsselwerten aus der Instanzvorlage.
  • KEY: Instanzspezifische zustandsorientierte Metadatenschlüssel, die aus der instanzspezifischen Konfiguration entfernt werden sollen.
    • Wenn ein Wert für einen Schlüssel nicht in der Instanzvorlage definiert ist, wird das Schlüssel/Wert-Paar beim Anwenden der Änderung vollständig aus der Instanz entfernt.
    • Wenn ein Wert für einen Schlüssel in der Instanzvorlage definiert ist, wird der Wert aus der Instanzvorlage für die Instanz festgelegt, wenn die Änderung angewendet wird.
  • MINIMAL_ACTION: Beim Anwenden der aktualisierten instanzspezifischen Konfiguration auf die Instanz wird zumindest die angegebene Aktion ausgeführt. Eine MINIMAL_ACTION kann nur festgelegt werden, wenn das Flag --update-instance verwendet wird. Der Wert muss einer der folgenden sein:

    • none: Keine Aktion.
    • refresh: Aktualisierungen, die ohne das Beenden der VM angewendet werden können, werden angewendet.
    • restart: Die Instanz wird gestoppt und noch einmal gestartet.
    • replace: Die Instanz wird neu erstellt.

    Wenn nichts angegeben ist, wird die Aktion ausgeführt, die für die Aktualisierung erforderlich ist und am wenigsten Störungen verursacht.

Beispiel

Sie haben einen Cluster aus Knoten, example-cluster, der in den beiden Modi active und standby ausgeführt werden kann. Sie legen den Modus mit Metadaten für jede VM im Cluster individuell fest. Beispiel: mode:active. Außerdem konfigurieren Sie mit einem logging-Metadatenschlüssel, der auf basic oder elaborate gesetzt werden kann, wie aufwendig das Logging für die einzelnen Knoten betrieben werden soll. Die Anwendung auf den einzelnen Knoten verwendet die Werte aus den jeweiligen Instanzmetadaten.

Die Instanzvorlage definiert, dass die Metadaten mode:active und logging:basic standardmäßig für alle Instanzen verwendet werden. Sie haben für die VM node-12 im Cluster logging:elaborate in der instanzspezifischen Konfiguration festgelegt. Nun möchten Sie node-12 in den Standby-Modus versetzen und das Logging für diese VM auf basic setzen.

Mit diesem Befehl versetzen Sie die node-12-Instanz in den Standby-Modus und deren Logging in den Modus "Basic":

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

Der Befehl führt folgende Schritte durch:

  1. Legt die mode:standby-Metadaten in der instanzspezifischen Konfiguration fest, die der VM node-12 in der MIG example-cluster zugeordnet ist.
  2. Entfernt die logging:elaborate-Metadaten aus der instanzspezifischen Konfiguration für die Instanz node-12.
  3. Wendet die Änderung der instanzspezifischen Konfiguration auf die VM node-12 an:
    • Legt die mode:standby-Metadaten entsprechend der Konfiguration fest.
    • Legt die logging:basic-Metadaten aus der Instanzvorlage fest, da der Wert für den Schlüssel logging nicht mehr durch die instanzspezifische Konfiguration definiert wird.
  4. Die Änderung wird standardmäßig sofort auf die VM angewendet, da das Flag --no-update-instance weggelassen wurde.
  5. Die VM wird während der Aktualisierung weiter ausgeführt, da das Flag --instance-update-minimal-action weggelassen wurde und standardmäßig die Aktion für die Aktualisierung ausgewählt wird, die am wenigsten Störungen verursacht, in diesem Fall refresh.

REST

Damit Sie zustandsorientierte Metadaten einzeln für vorhandene VM-Instanzen in einer MIG konfigurieren können, müssen Sie die Metadaten in den zugehörigen instanzspezifischen Konfigurationen festlegen oder entfernen. Aktualisieren Sie dann die Instanz, um die Konfiguration anzuwenden.

Wenn noch keine instanzspezifischen Konfigurationen für die angegebenen Instanzen vorhanden sind, verwenden Sie die Methode instanceGroupManagers.updatePerInstanceConfigs mit zustandsorientierten Metadaten:

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"
    },
    ...
  ]
}

Wenn bereits instanzspezifische Konfigurationen für die angegebenen Instanzen vorhanden sind, verwenden Sie die Methode 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"
    },
    ...
  ]
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: Projekt-ID für die Anfrage.
  • ZONE: Die Zone, in der sich die MIG befindet (gilt für eine zonale MIG).
    • Ersetzen Sie bei einer regionalen MIG zones/ZONE durch regions/REGION und geben Sie die Region der MIG an.
  • NAME: Name der MIG.
  • INSTANCE_NAME: Name der VM, für die zustandsorientierte Metadaten konfiguriert werden sollen
  • KEY und VALUE: Zustandsorientierte Metadaten-Schlüssel/Wert-Paare, die zusätzlich zu den in der Instanzvorlage definierten Metadaten separat für die einzelnen Instanzen festgelegt werden.
    • Zustandsorientierte Metadatenwerte, die für die Schlüssel definiert sind, die bereits in der Instanzvorlage vorhanden sind, überschreiben die Werte aus der Instanzvorlage.
    • Die anderen Metadateneinträge aus der Instanzvorlage sind davon nicht betroffen und weiterhin verfügbar.
    • Wenn Sie null als Wert angeben, wird der Schlüssel aus der instanzspezifischen Konfiguration entfernt.
  • FINGERPRINT: (Optional) Der Fingerabdruck für die angegebene Konfiguration, falls dieser bereits vorhanden ist. Wird für optimistisches Sperren verwendet.

Die Methoden updatePerInstanceConfigs und patchPerInstanceConfigs aktualisieren die angegebenen instanzspezifischen Konfigurationen, wenden die Konfigurationsaktualisierungen jedoch nicht auf die zugehörigen VM-Instanzen an. Die Änderungen werden dann auf eine VM angewendet, wenn Sie die Instanz aktualisieren oder neu erstellen. Sie können die Aktualisierung manuell anwenden oder den Updater im proaktiven oder opportunistischen Modus verwenden, um die Änderungen auf eine VM anzuwenden.

Beispiel

Sie haben einen Cluster aus Knoten, example-cluster, der in den beiden Modi active und standby ausgeführt werden kann. Sie legen den Modus mit Metadaten für jede VM im Cluster individuell fest. Beispiel: mode:active. Außerdem konfigurieren Sie mit einem logging-Metadatenschlüssel, der auf basic oder elaborate gesetzt werden kann, wie aufwendig das Logging für die einzelnen Knoten betrieben werden soll. Die Anwendung auf den einzelnen Knoten verwendet die Werte aus den jeweiligen Instanzmetadaten.

Die Instanzvorlage definiert, dass die Metadaten mode:active und logging:basic standardmäßig für alle Instanzen verwendet werden. Sie haben für die VM node-12 im Cluster logging:elaborate in der instanzspezifischen Konfiguration festgelegt. Nun möchten Sie node-12 in den Standby-Modus versetzen und das Logging für diese Instanz auf basic setzen.

Patchen Sie die zugehörige instanzspezifische Konfiguration mit der Methode patchPerInstanceConfigs, um die node-12-VM in den Standby-Modus und deren Logging in den Modus "Basic" zu versetzen:

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
        }
      }
    }
  ]
}

Die Methode führt diese Schritte aus:

  1. Legt die mode:standby-Metadaten in der instanzspezifischen Konfiguration fest, die der VM node-12 in der example-cluster-MIG zugeordnet ist.
  2. Entfernt die logging:elaborate-Metadaten aus der instanzspezifischen Konfiguration, da der angegebene Wert null ist.

Die Konfigurationsaktualisierung wurde noch nicht auf die VM-Instanz node-12 angewendet. Das Konfigurationsupdate wird angewendet, wenn Sie die Instanz das nächste Mal neu erstellen bzw. aktualisieren oder wenn Sie die proaktive automatische Aktualisierung verwenden.

Rufen Sie die Methode instanceGroupManagers.applyUpdatesToInstances für die Instanz auf, um die aktualisierte instanzspezifische Konfiguration auf die VM-Instanz node-12 anzuwenden:

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"
}

Die Methode wendet die aktualisierte instanzspezifische Konfiguration auf die VM node-12 an:

  1. Legt die mode:standby-Metadaten entsprechend der instanzspezifischen Konfiguration fest.
  2. Legt die logging:basic-Metadaten aus der Instanzvorlage fest, da der Wert für den Schlüssel logging nicht mehr durch die instanzspezifische Konfiguration definiert wird.
  3. Die VM wird während der Aktualisierung weiterhin ausgeführt, da minimalAction auf NONE gesetzt ist. Dadurch kann die MIG die für die Aktualisierung erforderliche Aktion ausführen, die am wenigsten Störungen verursacht. Zum Aktualisieren der Instanzmetadaten ist die Aktion REFRESH erforderlich, die keine Störungen bei einer ausgeführten Instanz verursacht.

Feedback

Wir möchten mehr über Ihre Anwendungsfälle und Herausforderungen erfahren und freuen uns über Feedback zu zustandsorientierten MIGs. Senden Sie Ihr Feedback unter mig-discuss@google.com an unser Team.

Nächste Schritte