VM-Hostwartungsrichtlinie festlegen


In diesem Dokument wird beschrieben, wie Sie die Hostwartungsrichtlinie einer VM-Instanz festlegen, um zu steuern, wie sich die VM bei einem Hostereignis verhält.

Hinweise

  • 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.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

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

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Beschränkungen

  • Sie können die Hostwartungsrichtlinie einer VM auf Abruf nicht ändern. Bei einem Wartungsereignis wird die VM auf Abruf beendet und nicht migriert. Sie müssen die vorzeitig beendete VM manuell neu starten.
  • Nachdem Sie eine VM mit einem E2-Maschinentyp erstellt haben, können Sie die Hostwartungseinstellungen der VM nicht mehr von MIGRATE in TERMINATE oder umgekehrt ändern.

Verfügbare Hostwartungsattribute

Mit den folgenden Attributen können Sie das Wartungsverhalten, das Neustartverhalten und das Verhalten einer VM nach einem Hostfehler konfigurieren.

Compute Engine konfiguriert jede VM mit den Standardwerten, sofern Sie nichts anderes angeben.

Während Hostereignissen werden je nach konfigurierter Hostwartungsrichtlinie VMs, die die Live-Migration nicht unterstützen, beendet oder automatisch neu gestartet.

  • onHostMaintenance: legt das Verhalten bei Auftreten eines Wartungsereignisses fest, das zum Neustart der VM führen kann.

    • MIGRATE[Standard] : Legt fest, dass Compute Engine die Live-Migration einer Instanz durchführt, wenn ein Wartungsereignis auftritt.
    • TERMINATE: beendet eine VM, anstatt sie zu migrieren.
  • automaticRestart: bestimmt das Verhalten, wenn eine VM abstürzt oder vom System beendet wird.

    • true[Standard] : Legt fest, dass Compute Engine eine Instanz neu startet, wenn sie abstürzt oder beendet wird.
    • false: Compute Engine startet eine VM nicht neu, wenn die VM abstürzt oder beendet wird.
  • localSsdRecoveryTimeout: Legt das Zeitlimit für die lokale SSD-Wiederherstellung fest. Dies ist die maximale Zeit in Stunden, die Compute Engine darauf wartet, lokale SSD-Daten nach einem Hostfehler wiederherzustellen. Diese Einstellung gilt nur für VMs mit angehängten lokalen SSD-Laufwerken.

    • Nicht festgelegt (Standard): Compute Engine wartet bis zu eine Stunde, um das Laufwerk wiederherzustellen. Bei Z3-VMs (Vorschau) beträgt die Standardwartezeit 4 Stunden.
    • Eine Zahl zwischen 0 und 168: Gibt an, wie lange Compute Engine auf die Wiederherstellung des Laufwerks wartet. Die Zahl muss eine Ganzzahl in Schritten von 1 Stunde mit einem Höchstwert von 7 Tagen sein. Der Wert 0 bedeutet, dass Compute Engine nicht mit der Wiederherstellung der Daten wartet.
  • hostErrorTimeoutSeconds (Vorschau): Legt die maximale Zeit in Sekunden fest, die Compute Engine darauf wartet, eine VM neu zu starten oder zu beenden, nachdem erkannt wurde, dass die VM nicht mehr reagiert.

    • Nicht festgelegt (Standardeinstellung): Compute Engine wartet bis zu 5,5 Minuten (330 Sekunden), bevor eine nicht reagierende VM neu gestartet wird.
    • Zahl zwischen 90 und 330: Gibt die Anzahl der Sekunden in Schritten von 30 an, die Compute Engine wartet, bevor eine nicht reagierende VM neu gestartet wird.

Hostwartungsrichtlinie einer VM festlegen

Sie können die Hostwartungsrichtlinie einer VM ändern, wenn Sie die VM erstellen oder nachdem die VM erstellt wurde.

Hostwartungsrichtlinie während der VM-Erstellung festlegen

In diesem Abschnitt wird beschrieben, wie Sie die Hostwartungsrichtlinie beim Erstellen einer VM festlegen. Weitere Beispiele zur VM-Erstellung finden Sie unter VM-Instanz erstellen und starten.

Sie können die Hostwartungsrichtlinie einer VM bei der Erstellung über die Google Cloud Console, die gcloud CLI oder die Compute Engine API festlegen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

    Zur Seite „Instanz erstellen“

  2. Geben Sie einen Namen für die VM an.

  3. Wählen Sie eine Region und eine Zone für die VM aus.

  4. Führen Sie im Abschnitt Maschinenkonfiguration die folgenden Schritte aus:

    1. Geben Sie die Details des Maschinentyps für die VM an.
    2. Maximieren Sie das Menü Erweiterte Einstellungen für das VM-Bereitstellungsmodell.
    3. Wählen Sie im Menü Bei Hostwartung einen der folgenden Schritte aus:
    4. Wählen Sie VM-Instanz migrieren aus, um VMs während Wartungsereignissen zu migrieren.
    5. Wählen Sie VM-Instanz beenden aus, um VMs während Wartungsereignissen zu beenden.
  5. Klicken Sie auf Erstellen, um die VM zu erstellen.

gcloud

Aktivieren Sie Cloud Shell in der Google Cloud Console.

Cloud Shell aktivieren

Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

Verwenden Sie den Befehl gcloud compute instances create, um die Hostwartungsrichtlinie einer neuen VM festzulegen. Verwenden Sie einen oder mehrere der folgenden Parameter:

  • --maintenance-policy: gibt an, ob die VM während der Hostwartung migriert oder beendet wird. Die VM wird standardmäßig migriert, wenn Sie dieses Attribut weglassen.
  • --no-restart-on-failure oder --restart-on-failure: gibt an, ob die VM nach einem Hostfehler automatisch neu gestartet wird. Standardmäßig wird die VM immer neu gestartet, wenn ein Fehler erkannt wird.
  • --local-ssd-recovery-timeout: Zeit, die Compute Engine nach einem Hostfehler für die Wiederherstellung der angehängten lokalen SSD-Laufwerke aufgewendet. Die Standardeinstellung ist 1 Stunde.

Legen Sie die Hostwartungsrichtlinie einer neuen VM mit dem folgenden Befehl fest. Wenn Sie eines der Flags weglassen, wird der Standardwert des Flags verwendet.

  gcloud compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Ersetzen Sie Folgendes:

  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Das Verhalten beim Neustart der VM, festgelegt auf --no-restart-on-failure oder --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: Anzahl der Stunden, die für die Wiederherstellung einer lokalen SSD benötigt werden, die an eine nicht reagierende VM angehängt ist. Gültige Werte liegen zwischen 0 und 168, in Schritten von 1 Stunde.

Zeitlimit für die Erkennung von Hostfehlern festlegen

Legen Sie mit dem Befehl gcloud compute instances create die maximale Zeit fest, die Compute Engine wartet, bis eine nicht reagierende VM neu gestartet oder beendet wird. Geben Sie das Zeitlimit mit dem Flag --host-error-timeout-seconds an.

  gcloud beta compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

Ersetzen Sie Folgendes:

  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Das Verhalten beim Neustart der VM, festgelegt auf --no-restart-on-failure oder --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: die Anzahl der Stunden, die Compute Engine für die Wiederherstellung einer lokalen SSD benötigt, die an eine nicht reagierende VM angehängt wurde. Gültige Werte liegen zwischen 0 und 168, in Schritten von 1 Stunde.
  • ERROR_DETECTION_TIMEOUT ist die Anzahl der Sekunden (von 90 bis 330 in Schritten von 30), bevor Compute Engine wartet, bevor eine nicht reagierende VM neu gestartet wird.

REST

Mit der Methode instances.insert können Sie die Hostwartungsrichtlinie einer neuen VM mit der Compute Engine API festlegen. Fügen Sie in das Objekt scheduling des Anfragetexts eines oder mehrere der folgenden Attribute ein:

  • onHostMaintenance: gibt an, ob die VM während der Hostwartung migriert oder beendet wird. Die VM wird standardmäßig migriert.
  • automaticRestart: VM wird nach einem Hostfehler automatisch neu gestartet. VMs werden standardmäßig automatisch neu gestartet.
  • localSsdRecoveryTimeout: wie viel Zeit Compute Engine benötigt, um angehängte lokale SSD-Laufwerke nach der Erkennung eines Hostfehlers wiederherzustellen. Die Standardeinstellung ist 1 Stunde.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "VM_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_POLICY",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für die VM.
  • ZONE: die Zone, in der Sie die VM erstellen möchten.
  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_POLICY: Neustartrichtlinie für diese VM, entweder true oder false.
  • SSD_RECOVERY_TIMEOUT: Die Anzahl der Stunden, die Compute Engine auf der Wiederherstellung eines lokalen SSD-Laufwerks verbringt, das an eine nicht reagierende VM angehängt ist. Gültige Werte liegen zwischen 0 und 168, in Schritten von 1 Stunde.

Zeitlimit für die Erkennung von Hostfehlern festlegen

Legen Sie mit der Betamethode instances.insert die maximale Zeit fest, die Compute Engine wartet, bis eine nicht reagierende VM neu gestartet oder beendet wird, da diese Option in der Vorschau verfügbar ist.

Fügen Sie dem scheduling-Objekt des Anfragetexts das Attribut hostErrorTimeoutSeconds hinzu.


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "VM_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_POLICY",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für die VM.
  • ZONE: die Zone, in der Sie die VM erstellen möchten.
  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_POLICY: Neustartrichtlinie für diese VM, entweder true oder false.
  • SSD_RECOVERY_TIMEOUT: Die Anzahl der Stunden, die Compute Engine auf die Wiederherstellung eines lokalen SSD-Laufwerks verbringen kann, das an eine nicht reagierende VM angehängt ist. Gültige Werte liegen zwischen 0 und 168, in Schritten von 1 Stunde.
  • HOST_ERROR_TIMEOUT ist die Anzahl der Sekunden, die Compute Engine wartet, bevor eine nicht reagierende VM neu gestartet oder beendet wird. Gültige Werte sind von 90 bis 330 in Schritten von 30.

Hostwartungsrichtlinie einer vorhandenen VM aktualisieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Klicken Sie auf die VM, deren Einstellungen Sie ändern möchten. Die Seite mit den VM-Details wird angezeigt.

  3. Führen Sie auf der Seite mit den VM-Details die folgenden Schritte aus:

    1. Klicken Sie oben auf der Seite auf Bearbeiten.
    2. Wechseln Sie zum Bereich Verwaltung. Im Bereich Verfügbarkeitsrichtlinien können Sie die Optionen Bei Hostwartung und Automatischer Neustart festlegen.
    3. Klicken Sie auf Speichern.

gcloud

Aktivieren Sie Cloud Shell in der Google Cloud Console.

Cloud Shell aktivieren

Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

Aktualisieren Sie die Hostwartungsrichtlinie einer vorhandenen VM mit dem Befehl gcloud compute instances set-scheduling. Verwenden Sie dieselben Parameter, die im vorherigen Abschnitt zur VM-Erstellung beschrieben wurden.

    gcloud compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Ersetzen Sie Folgendes:

  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: die Richtlinie für diese VM, entweder TERMINATE oder MIGRATE
  • RESTART_ON_FAILURE_BEHAVIOR: Neustartverhalten der VM, --no-restart-on-failure oder --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: Die Zeit in Stunden, in der Compute Engine die Wiederherstellung eines lokalen SSD-Laufwerks ermöglicht, das an eine nicht reagierende VM angehängt ist. Gültige Werte sind 0 bis 168.

Zeitlimit für Hostfehlererkennung aktualisieren

Verwenden Sie den Befehl gcloud beta compute instances set-scheduling, um die maximale Zeit zu aktualisieren, die Compute Engine auf den Neustart oder die Beendigung einer nicht reagierenden VM wartet, da dieses Feature nur in der Vorschau verfügbar.

Aktualisieren Sie das Zeitlimit mit dem Parameter --host-error-timeout-seconds. Beispiel:

    gcloud beta compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=NUMBER_OF_SECONDS

Ersetzen Sie Folgendes:

  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Neustartverhalten der VM, festgelegt auf --no-restart-on-failure oder --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: In Stunden benötigt Compute Engine die Wiederherstellung eines lokalen SSD-Laufwerks, das an eine nicht reagierende VM angehängt ist. Gültige Werte sind 0 bis 168.
  • NUMBER_OF_SECONDS ist die Anzahl der Sekunden (zwischen 90 und 330), bevor eine nicht reagierende VM neu gestartet oder beendet wird.

REST

Aktualisieren Sie die Hostwartungsrichtlinie einer vorhandenen VM mit einer POST-Anfrage an die Methode instances.setScheduling.

Geben Sie im Anfragetext mindestens eines der folgenden Attribute an:

  • onHostMaintenance: gibt an, ob die VM während der Hostwartung migriert oder beendet wird. Die VM wird standardmäßig migriert.
  • automaticRestart: VM wird nach einem Hostfehler automatisch neu gestartet. VMs werden standardmäßig automatisch neu gestartet.
  • localSsdRecoveryTimeout: wie viel Zeit Compute Engine benötigt, um angehängte lokale SSD-Laufwerke nach der Erkennung eines Hostfehlers wiederherzustellen. Wenn keine Angabe gemacht wird, beträgt der Standardwert 1 Stunde.
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_POLICY",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für die VM.
  • ZONE ist die Zone, in der sich die VM befindet.
  • VM_NAME: der VM-Name
  • MAINTENANCE_POLICY: Wartungsrichtlinie für diese VM, entweder TERMINATE oder MIGRATE.
  • RESTART_POLICY: Neustartrichtlinie für diese VM, entweder true oder false.
  • SSD_RECOVERY_TIMEOUT: Die Zeit in Stunden, die Compute Engine auf die Wiederherstellung eines lokalen SSD-Laufwerks umgestellt hat, das an eine nicht reagierende VM angehängt war. Gültige Werte sind 0 bis 168.

Zeitlimit für Hostfehlererkennung aktualisieren

Wenn Sie die maximale Zeit aktualisieren möchten, die Compute Engine wartet, bis eine nicht reagierende VM neu gestartet oder beendet wird, müssen Sie die Betamethode instances.setScheduling verwenden, da dieses Feature in der Vorschau verfügbar ist.

Fügen Sie den Parameter hostErrorTimeoutSeconds in den Anfragetext ein.

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

  {
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
  }

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für die VM.
  • ZONE ist die Zone, in der sich die VM befindet.
  • VM_NAME: der VM-Name
  • NUMBER_OF_SECONDS ist die Anzahl der Sekunden (zwischen 90 und 330), bevor eine nicht reagierende VM neu gestartet oder beendet wird.

Einstellungen für Hostwartungsrichtlinien einer VM ansehen

Console

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie auf den Namen der VM, für die Sie Metadaten aufrufen möchten. Die Seite VM-Instanzdetails wird geöffnet.

  3. Wechseln Sie zum Bereich Verwaltung. Im Abschnitt Verfügbarkeitsrichtlinien werden die aktuellen Einstellungen für Wartung des Hosts und Automatischer Neustart angezeigt.

gcloud

Sehen Sie sich die Einstellungen für die Hostwartungsoption für eine VM mit dem Befehl gcloud compute instances describe an:

    gcloud compute instances describe VM_NAME --format="yaml(scheduling)"

Ersetzen Sie VM_NAME durch den VM-Namen.

Die Ausgabe enthält das Zeitlimit für die Hostfehlererkennung der VM. Beispiel:

    scheduling:
      automaticRestart: true
      localSsdRecoveryTimeout:
        nanos: 0
        seconds: '10800'
      onHostMaintenance: MIGRATE
      preemptible: false
      provisioningModel: STANDARD

Einstellung für das Zeitlimit der Hostfehlererkennung aufrufen

Rufen Sie den aktuellen Wert von hostErrorTimeoutSeconds mit dem Befehl gcloud beta compute instances describe auf, da diese Option nur in der Vorschau verfügbar ist.

  gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"

Ersetzen Sie VM_NAME durch den VM-Namen.

Die Ausgabe enthält das Zeitlimit für die Hostfehlererkennung der VM. Beispiel:

  scheduling:
    automaticRestart: true
    hostErrorTimeoutSeconds: 120
    localSsdRecoveryTimeout:
      nanos: 0
      seconds: '10800'
    onHostMaintenance: MIGRATE
    preemptible: false
    provisioningModel: STANDARD

REST

Verwenden Sie die instances.get-Methode, um die Einstellungen für die Hostwartung für eine VM aufzurufen:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt, in der sich die VM befindet.
  • ZONE ist die Zone, in der sich die VM befindet.
  • VM_NAME: der VM-Name

In der Ausgabe enthält das Objekt scheduling die Hostwartungsrichtlinie der VM. Beispiel:

  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    }

Einstellungen für Zeitüberschreitungen bei Hostfehlern aufrufen

Rufen Sie die aktuelle hostErrorTimeoutSeconds-Einstellung mit einer GET-Anfrage an die Betamethode instances.get auf, da diese Option nur in der Vorschau verfügbar ist.

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für die VM.
  • ZONE ist die Zone, in der sich die VM befindet.
  • VM_NAME: der VM-Name

In der Ausgabe enthält das Objekt scheduling das Zeitlimit für die Hostfehlererkennung der VM. Beispiel:

  "scheduling": {
    "hostErrorTimeoutSeconds": 120
  }

Nächste Schritte