Verwaltete Instanzgruppen erstellen

Auf dieser Seite erfahren Sie, wie Sie eine Gruppe verwalteter Instanzen, auch verwaltete Instanzgruppe genannt, in einer Zone erstellen. Eine verwaltete Instanzgruppe enthält identische Instanzen, die Sie als eine Einheit behandeln können. Mit verwalteten Instanzgruppen kann die hohe Verfügbarkeit Ihrer Apps aufrechterhalten werden, denn durch sie wird proaktiv dafür gesorgt, dass Ihre Instanzen verfügbar bleiben, also den Status RUNNING haben. Verwaltete Instanzgruppen unterstützen Autoscaling, Lastenausgleich, Rolling Updates, automatische Reparaturen und vieles mehr.

Sie können auch regional verwaltete Instanzgruppen erstellen, die Instanzen in mehreren Zonen innerhalb derselben Region umfassen. Weitere Informationen zu Instanzgruppen finden Sie unter Instanzgruppen.

Vorbereitung

Einschränkungen

  • Jede verwaltete Instanzgruppe kann bis zu 1.000 VM-Instanzen umfassen.
  • Wenn Sie eine verwaltete Instanzgruppe aktualisieren, können nicht mehr als 1.000 Instanzen in einer einzelnen Anfrage angegeben werden.

Verwaltete Instanzgruppen für zustandslose Anwendungen verwenden

Verwaltete Instanzgruppen sollen zustandslose Anwendungen unterstützen, deren Ausführung nicht vom jeweiligen Zustand der zugrunde liegenden VM-Instanzen abhängt. Dies ermöglicht Funktionen wie Autoscaling und automatische Reparatur, bei denen die verwaltete Instanzgruppe Instanzen automatisch löscht und neu erstellt. Wenn eine Instanz aus einer verwalteten Instanzgruppe gelöscht wird, entweder durch eine Nutzeraktion, durch die automatische Reparatur oder bei der Infrastrukturpflege ohne Live-Migration, wird diese Instanz von der verwalteten Instanzgruppe automatisch mit einem nichtflüchtigen Bootlaufwerk neu erstellt.

Da verwaltete Instanzgruppen zustandslos sind, sollten Sie Ihre Anwendung so erstellen oder ändern, dass sie von keinen Instanzattributen abhängig ist, die nicht beibehalten werden, wie z. B. IP-Adresse oder Arbeitsspeicherdaten. Ebenso werden nichtflüchtige Bootlaufwerke standardmäßig gelöscht, wenn die entsprechende VM-Instanz gelöscht wird. Daher sollten Sie sich in einer verwalteten Instanzgruppe nicht auf Bootlaufwerke als nichtflüchtige Daten verlassen.

Damit Ihre Daten erhalten bleiben, empfiehlt Google als Best Practice, regelmäßig aktuelle Betriebssystem-Images zu erstellen und zu pflegen, Startskripts zu verwenden und die Daten an einem anderen zentralen Ort, z. B. in Google Cloud Storage, zu sichern.

In Ihren Instanzvorlagen können Sie ein Container-Image oder ein benutzerdefiniertes Image sowie relevante Startskripts angeben. Beim Neuerstellen einer Instanz sind dann die erforderlichen Softwareanwendungen installiert und die erforderlichen Daten zugänglich. Weitere Empfehlungen zur Erstellung von Instanzvorlagen finden Sie unter Deterministische Instanzvorlagen.

Wenn Sie die Bootlaufwerke, die den verwalteten Instanzgruppen zugeordnet sind, beibehalten möchten, können Sie die Option disks.autoDelete deaktivieren. Damit wird verhindert, dass nichtflüchtige Bootlaufwerke gelöscht werden. Dadurch wird aber auch die verwaltete Instanzgruppe daran gehindert, neue Instanzen zu erstellen. Dies wird nicht empfohlen.

Verwaltete Instanzgruppe erstellen

Bevor Sie eine verwaltete Instanzgruppe erstellen, müssen Sie eine Instanzvorlage erstellen. Diese enthält das Betriebssystem-Image und die Einstellungen für alle Instanzen der Gruppe.

Anschließend können Sie die verwaltete Instanzgruppe über die Google Cloud Platform Console, das Tool gcloud compute oder die API erstellen.

Konsole

  1. Gehen Sie in der GCP Console zur Seite "Instanzgruppen".

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Geben Sie einen Namen für die verwaltete Instanzgruppe ein und wählen Sie die Zone aus, in der sie sich befinden soll.
  4. Wählen Sie unter Gruppentyp die Option Verwaltete Instanzgruppe aus.
  5. Wählen Sie unter Instanzvorlage eine Instanzvorlage aus. Wenn keine Vorlagen vorhanden sind, erstellen Sie eine Instanzvorlage.
  6. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll. Sie können optional Autoscaling aktivieren. Damit werden je nach CPU-Nutzung Instanzen automatisch zur Gruppe hinzugefügt oder aus ihr entfernt. Durch Aktivieren der automatischen Reparatur werden Systemdiagnosen der Instanzen in der Instanzgruppe ausgeführt.
  7. Klicken Sie auf Erstellen, um die neue Gruppe anzulegen.

gcloud

Erstellen Sie mit dem Befehl instance-groups managed create eine Instanzgruppe:

gcloud compute instance-groups managed create [NAME] \
    --base-instance-name [BASE_NAME] \
    --size [SIZE] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

Dabei gilt:

  • [NAME] ist der Name der Instanzgruppe.
  • [BASE_NAME] ist der Name, der für Instanzen in dieser Gruppe verwendet werden soll. Da die Instanzen identisch sind, wird ihnen als Teil ihres Namens ein zufälliger String zugewiesen. Der Basisname wird diesem String vorangestellt. Wenn der Basisname zum Beispiel example lautet, erhalten die Instanzen Namen wie example-yahs, example-qtyz usw.
  • [SIZE] ist die Größe der Instanzgruppe.
  • [INSTANCE_TEMPLATE] ist der Name der Instanzvorlage für diese Gruppe.
  • [ZONE] ist eine für Compute Engine verfügbare Zone.

    Beispiel: Mit dem folgenden Befehl erstellen Sie eine Instanzgruppe namens "example-group" mit dem Basisinstanznamen test. Die Gruppe umfasst drei Instanzen:

    gcloud compute instance-groups managed create example-group
    --base-instance-name test
    --size 3
    --template an-instance-template

API

Stellen Sie in der API eine POST-Anfrage an den Dienst instanceGroupManagers. Geben Sie im Text der Anfrage den gewünschten Gruppennamen, die Gruppengröße, den Basisnamen für die Instanzen in der Gruppe und die URL zur Instanzvorlage an.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

{
  "baseInstanceName": "[BASE_NAME]",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]"
    }
  ],
  "name": "[NAME]",
  "targetSize": [SIZE]
}

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID der Anfrage.
  • [ZONE] ist die Zone der Anfrage.
  • [NAME] ist der Name der Instanzgruppe.
  • [BASE_NAME] ist der Name, der für Instanzen in dieser Gruppe verwendet werden soll. Da die Instanzen identisch sind, wird ihnen als Teil ihres Namens ein zufälliger String zugewiesen. Der Basisname wird diesem String vorangestellt. Wenn der Basisname zum Beispiel example lautet, erhalten die Instanzen Namen wie example-yahs, example-qtyz usw.
  • [SIZE] ist die Größe der Instanzgruppe.
  • [INSTANCE_TEMPLATE] ist der Name der Instanzvorlage für diese Gruppe.

Vorhandene Gruppen und Gruppenbeschreibungen abrufen

Informationen zu Ihren vorhandenen verwalteten Instanzgruppen können Sie über die Konsole, das gcloud-Befehlszeilentool oder die API abrufen. Zum Abrufen der id der Gruppe müssen Sie gcloud oder die API verwenden.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

    Zur Seite "Instanzgruppen"

    Wenn bereits Instanzgruppen vorhanden sind, werden diese auf der Seite aufgeführt. Hier finden sich aber auch nicht verwaltete Instanzgruppen.

  2. Klicken Sie in der Spalte Name der Liste auf den Namen der Instanzgruppe, die Sie sich genauer ansehen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe und einer Liste der zur Gruppe gehörenden Instanzen angezeigt.

gcloud

So rufen Sie eine Liste aller verwalteten Instanzgruppen in einem Projekt ab:

gcloud compute instance-groups managed list

So erhalten Sie Informationen zu einer bestimmten Gruppe:

gcloud compute instance-groups managed describe [INSTANCE_GROUP] \
    --zone [ZONE]

API

Erstellen Sie zum Auflisten aller verwalteten Instanzgruppen in einer Zone eine GET-Anfrage an den Dienst instanceGroupManagers:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

Wenn Sie Informationen zu einer bestimmten Gruppe abrufen möchten, erstellen Sie eine GET-Anfrage an den Dienst instanceGroupManagers und schließen Sie den Namen der betreffenden verwalteten Instanzgruppe ein:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Verwenden Sie für regional verwaltete Instanzgruppen (mehrere Zonen) stattdessen die Ressource regionInstanceGroupManagers: regionInstanceGroupManagers.list und regionInstanceGroupManagers.get.

Instanzvorlage für eine verwaltete Instanzgruppe ändern

Sie können die Instanzvorlage für eine verwaltete Instanzgruppe ändern, ohne dass sich dies auf die vorhandenen Instanzen auswirkt. Die verwaltete Instanzgruppe verwendet die neue Vorlage, wenn Sie das Hinzufügen oder Neuerstellen von Instanzen anfordern, aber bestehende Instanzen der Gruppe werden nicht automatisch aktualisiert. So können Sie genau steuern, welche Instanzen aktualisiert werden, aber die Gruppe enthält dann voneinander abweichende Instanzen.

Erstellen Sie eine neue Instanzvorlage und ändern Sie anschließend die Vorlage für eine bestehende Instanzgruppe.

Konsole

  1. Gehen Sie in der GCP Console zur Seite "Instanzgruppen".

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf den Namen der Instanzgruppe, deren Vorlage Sie ändern möchten.
  3. Klicken Sie auf Gruppe bearbeiten, um die verwaltete Instanzgruppe zu bearbeiten.
  4. Wählen Sie unter Instanzvorlage die neue Vorlage für die Gruppe aus.
  5. Klicken Sie auf Speichern, um die neue Vorlage anzuwenden.

gcloud

Wenn Sie mit der Methode set-instance-template eine Vorlage aktualisieren möchten, übergeben Sie die neue Vorlage an den Unterbefehl instance-groups managed set-instance-template:

gcloud compute instance-groups managed set-instance-template [INSTANCE_GROUP] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. Fügen Sie die URL der neuen Instanzvorlage in den Text der Anfrage ein:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers[INSTANCE_GROUP]/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]
}

Nachdem Sie die Instanzvorlage geändert haben, erstellen Sie einzelne Instanzen neu oder aktualisieren alle Instanzen der Gruppe über ein Rolling Update.

Größe einer verwalteten Instanzgruppe automatisch anpassen

Verwaltete Instanzgruppen lassen sich so konfigurieren, dass Instanzen lastabhängig automatisch hinzugefügt oder entfernt werden. So können Ihre Anwendungen ansteigenden Traffic problemlos bewältigen und Sie können Ihre Kosten senken, wenn der Bedarf an Rechenressourcen sinkt. Informationen zum Skalieren verwalteter Instanzgruppen finden Sie unter Autoscaling von Instanzgruppen.

Größe einer verwalteten Instanzgruppe manuell anpassen

Wenn für eine verwaltete Instanzgruppe kein Autoscaling eingerichtet ist, können Sie die Größe der Gruppe und damit die Zahl der zugehörigen Instanzen manuell ändern. Wenn Sie die Gruppe vergrößern, werden gemäß der aktuellen Instanzvorlage neue Instanzen hinzugefügt. Verkleinern Sie die Gruppe, werden Instanzen aus der verwalteten Instanzgruppe gelöscht. Zuerst werden Instanzen mit dem currentAction-Wert DELETING, CREATING und RECREATING gelöscht, anschließend solche ohne geplante Aktionen.

Wenn die Gruppe Teil eines Back-End-Dienstes ist, für den Verbindungsausgleich aktiviert ist, kann es nach Ablauf der Verbindungsausgleichszeit bis zu 60 Sekunden dauern, bis die VM-Instanz entfernt oder gelöscht wird.

Sie können die Größe einer verwalteten Instanzgruppe über die Google Cloud Platform Console, das Tool gcloud compute oder die API anpassen.

Konsole

  1. Gehen Sie in der GCP Console zur Seite "Instanzgruppen".

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf die Instanzgruppe, deren Größe Sie anpassen möchten.
  3. Klicken Sie auf Gruppe bearbeiten, um die verwaltete Instanzgruppe zu bearbeiten.
  4. Geben Sie unter Anzahl der Instanzen an, wie viele Instanzen die verwaltete Instanzgruppe umfassen soll. Wenn Autoscaling aktiviert ist, werden bei Bedarf automatisch Instanzen zur Gruppe hinzugefügt oder daraus entfernt. Sie können jedoch die Werte für die Mindestzahl von Instanzen und die Maximale Anzahl von Instanzen ändern, um die Gruppengröße über das Autoscaling indirekt anzupassen.
  5. Klicken Sie auf Speichern, um die neue Vorlage anzuwenden.

gcloud

Verwenden Sie folgenden Befehl:

gcloud compute instance-groups managed resize [INSTANCE_GROUP ] \
    --size [NEW_SIZE] \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. Geben Sie die neue Instanzgröße als Parameter an:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resize?size=[NEW_SIZE]

Nach einer Anfrage zum Anpassen der Größe einer verwalteten Instanzgruppe werden die Instanzen gestartet oder beendet, sobald das System sie bereitstellen bzw. löschen kann. Je nachdem, wie viele Instanzen die Gruppe umfasst, kann dies einige Zeit dauern. Prüfen Sie den Status der Instanzen in Ihrer verwalteten Instanzgruppe.

Modus für die wiederholte Erstellung deaktivieren

Wenn die erstmalige Erstellung einer VM-Instanz fehlschlägt, versucht die verwaltete Instanzgruppe so lange, diese zu erstellen, bis sie erfolgreich ist. Wenn Sie jedoch keine automatischen weiteren Versuche möchten, können Sie den Modus für die wiederholte Erstellung beim Anpassen der Größe der Instanzgruppe über das Flag --nocreation-retries deaktivieren. Dann versucht die verwaltete Instanzgruppe nur einmal, alle Instanzen zu erstellen. Tritt während der Erstellung ein Fehler auf, legt die Gruppe die Instanz nicht an und verringert stattdessen die Zielgröße der verwalteten Instanzgruppe.

Das Deaktivieren des Modus für die wiederholte Erstellung gilt nur für den ersten Versuch, eine Instanz zu erstellen. Wenn eine Instanz bei deaktiviertem Modus erfolgreich erstellt wird, verhält sie sich genauso wie alle anderen durch eine reguläre Größenanpassungsanforderung erstellten Instanzen. Fällt eine ausgeführte Instanz zu einem späteren Zeitpunkt unerwartet aus und muss daher neu erstellt werden, wirkt sich der Modus nicht auf die Neuerstellung aus.

Es ist besonders nützlich, den Modus für die wiederholte Erstellung zu deaktivieren, wenn Systeme automatisch Instanzgruppen erstellen, bei denen die genaue Anzahl der Instanzen keine große Bedeutung hat. In solchen Fällen kann es wichtiger sein, die verwaltete Instanzgruppe schnell stabil zum Laufen zu bringen, während Sie bei der Zahl der enthaltenen Instanzen flexibel sind. Dadurch müssen Sie nicht eine unbestimmte Zeit warten, bis alle angeforderten Instanzen erstellt wurden. Die Erstellung kann sich aufgrund von Kontingentfehlern oder anderen Problemen nämlich vorübergehend oder dauerhaft verzögern.

Die Größe einer verwalteten Instanzgruppe bei deaktiviertem Modus für die wiederholte Erstellung können Sie über das Tool gcloud compute oder die API anpassen.

gcloud

Führen Sie im Befehlszeilentool gcloud den Befehl resize mit dem Flag --no-creation-retries aus:

gcloud beta compute instance-groups managed resize [INSTANCE_GROUP] --size [NEW_SIZE] \
    --nocreation-retries \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. Geben Sie im Text der Anfrage die neue Instanzgröße und das Feld noCreationRetries an:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resizeAdvanced

{
 "targetSize": [SIZE]
 "noCreationRetries": true
}

Mit der Methode listManagedInstances können Sie herausfinden, welche Instanzen in welchem Modus erstellt werden. Instanzen, die bei deaktiviertem Modus für die wiederholte Erstellung angelegt werden, haben den Status CREATING_WITHOUT_RETRIES.

Systemdiagnosen und automatische Reparatur für verwaltete Instanzgruppen einrichten

Sie können für verwaltete Instanzgruppen eine Richtlinie für die automatische Reparatur konfigurieren, um die Verfügbarkeit Ihrer Anwendung zu verbessern. Außerdem können Sie so überprüfen, ob die Anwendung wie erwartet antwortet. Dazu baut die Richtlinie für die automatische Reparatur auf eine anwendungsbasierte Systemdiagnose. Die Überprüfung, ob eine Anwendung antwortet, ist genauer als jene, ob sich eine Instanz im Status RUNNING befindet.

Wenn bei der automatischen Reparatur festgestellt wird, dass eine Anwendung nicht antwortet, wird diese Instanz von der verwalteten Instanzgruppe automatisch neu erstellt. Bei einer Instanz auf Abruf erstellt die Gruppe die Instanz neu, wenn die erforderlichen Ressourcen wieder verfügbar werden.

Mit Signalen für die Systemdiagnose können Sie überprüfen, ob eine Instanz erstellt wurde und ihre Anwendung reagiert. Während eine verwaltete Instanz erstellt wird, hat die currentAction den Status CREATING. Wenn die erstellte und ausgeführte verwaltete Instanz mit einer Richtlinie für die automatische Reparatur verknüpft wird, wechselt der Status der currentAction zu VERIFYING. Die Systemdiagnose beginnt dann mit der Prüfung der Anwendung der Instanz. Besteht die Anwendung diese erste Systemdiagnose innerhalb ihrer Startdauer, wird die Instanz bestätigt und die currentAction wechselt in den Status NONE. Bei der erstmaligen Verknüpfung einer Systemdiagnose mit einer verwalteten Instanzgruppe kann es 15 Minuten dauern, bis die Überprüfung abgeschlossen ist. Weitere Informationen finden Sie unter Status von Instanzen in einer verwalteten Instanzgruppe prüfen.

Wenn bei der automatischen Reparatur eine Instanz neu erstellt wird, erfolgt dies mithilfe der Instanzvorlage, die ursprünglich zum Erstellen dieser Instanz verwendet wurde. Hierbei handelt es sich nicht zwingend um die Standardinstanzvorlage, die der verwalteten Instanzgruppe zugeordnet ist. Sollten Sie keine Vorkehrungen treffen, gehen alle Daten, die auf die Laufwerke einer Instanz geschrieben werden, verloren, wenn die Instanz und ihre Laufwerke gelöscht und neu erstellt werden. Weitere Informationen zum Ablauf der automatischen Reparatur in Compute Engine und ihren Auswirkungen auf angeschlossene Laufwerke finden Sie unter Verwaltete Instanzgruppen und automatische Reparatur. Bei einer verwalteten Instanzgruppe können Sie maximal eine Richtlinie für die automatische Reparatur einrichten.

Das folgende Beispiel zeigt, wie eine Systemdiagnose für eine verwaltete Instanzgruppe funktioniert. Erstellen Sie wie beschrieben eine Systemdiagnose, um die Antwort des Webservers auf Port 80 zu prüfen. Führen Sie die Systemdiagnose dann für eine verwaltete Instanzgruppe durch, um sicherzustellen, dass die Webserver in der Gruppe ordnungsgemäß funktionieren.

Konsole

  1. Erstellen Sie eine Systemdiagnose für die automatische Reparatur, die konservativer ist als eine Load-Balancing-Systemdiagnose.

    Erstellen Sie beispielsweise eine Systemdiagnose, die eine Antwort von Port 80 erwartet und eine gewisse Fehlertoleranz hat, bevor sie Instanzen als fehlerhaft (UNHEALTHY) markiert und dafür sorgt, dass sie neu erstellt werden. In diesem Beispiel wird eine Instanz als intakt markiert, wenn die Systemdiagnose einmal erfolgreich für sie ausgeführt wird. Sie wird als fehlerhaft markiert, wenn die Systemdiagnose 3-mal hintereinander erfolglos war.

    1. Rufen Sie in der GCP Console die Seite "Systemdiagnose erstellen" auf.

      Zur Seite "Systemdiagnose erstellen"

    2. Geben Sie einen Namen für die Systemdiagnose ein, z. B. example-check.
    3. Wählen Sie als Protokoll die Option HTTP aus, sofern diese nicht bereits ausgewählt ist.
    4. Geben Sie für Port den Wert 80 ein.
    5. Geben Sie für Überprüfungsintervall den Wert 5 ein.
    6. Geben Sie für Zeitlimit den Wert 5 ein.
    7. Legen Sie einen Schwellenwert für Intaktheit fest, um zu bestimmen, wie viele aufeinanderfolgende Systemdiagnosen erfolgreich sein müssen, bevor eine fehlerhafte Instanz als intakt markiert wird. Geben Sie in diesem Beispiel 1 ein.
    8. Legen Sie einen Fehlerschwellenwert fest, um zu bestimmen, wie viele aufeinanderfolgende Systemdiagnosen fehlschlagen müssen, bevor eine intakte Instanz als fehlerhaft markiert wird. Geben Sie in diesem Beispiel 3 ein.
    9. Klicken Sie auf Erstellen, um die Systemdiagnose zu erstellen.
  2. Erstellen Sie eine Firewallregel, damit Systemdiagnosetests eine Verbindung zu Ihrer Anwendung herstellen können.

    Die Systemdiagnosetests stammen von Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16. Stellen Sie deshalb sicher, dass Ihre Netzwerk-Firewallregeln die Verbindung zulassen. In diesem Beispiel nutzt die verwaltete Instanzgruppe das Netzwerk default und ihre Instanzen überwachen den Port 80. Falls Port 80 im Netzwerk "default" noch nicht offen ist, erstellen Sie eine entsprechende Firewallregel.

    1. Rufen Sie in der GCP Console die Seite "Firewallregel erstellen" auf.

      Zur Seite "Firewallregel erstellen"

    2. Geben Sie unter Name einen Namen für die Firewallregel ein, z. B. allow-health-check.
    3. Wählen Sie für Netzwerk die Option default aus.
    4. Wählen Sie für Quellfilter die Option IP ranges aus.
    5. Geben Sie für Quell-IP-Bereiche 130.211.0.0/22 und 35.191.0.0/16 ein.
    6. Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus und geben Sie tcp:80 ein.
    7. Klicken Sie auf Erstellen.
  3. Wenden Sie die Systemdiagnose auf die regional oder zonal verwaltete Instanzgruppe an. Konfigurieren Sie dazu eine Richtlinie zur automatischen Reparatur.

    1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

      Zur Seite "Instanzgruppen"

    2. Klicken Sie in der Spalte Name der Liste auf den Namen der Instanzgruppe, auf die Sie die Systemdiagnose anwenden möchten.
    3. Klicken Sie auf Gruppe bearbeiten, um die verwaltete Instanzgruppe zu bearbeiten.
    4. Wählen Sie unter Automatische Reparatur die Systemdiagnose aus, die Sie zuvor erstellt haben.
    5. Ändern Sie die Einstellung für die Anfängliche Verzögerung oder behalten Sie sie bei. Mit dieser Einstellung wird die potenzielle vorzeitige Neuerstellung der Instanz durch die automatische Reparatur verzögert, wenn die Instanz gerade gestartet wird. Der Timer für die anfängliche Verzögerung wird gestartet, wenn die currentAction der Instanz den Status VERIFYING hat.
    6. Klicken Sie auf Speichern, um die Änderungen zu übernehmen.

    Es kann einige Minuten dauern, bis das Monitoring von Instanzen in der Gruppe durch die automatische Reparatur beginnt.

gcloud

  1. Erstellen Sie eine Systemdiagnose für die automatische Reparatur, die konservativer ist als eine Load-Balancing-Systemdiagnose.

    Erstellen Sie beispielsweise eine Systemdiagnose, die eine Antwort von Port 80 erwartet und eine gewisse Fehlertoleranz hat, bevor sie Instanzen als fehlerhaft (UNHEALTHY) markiert und dafür sorgt, dass sie neu erstellt werden. In diesem Beispiel wird eine Instanz als intakt markiert, wenn die Systemdiagnose einmal erfolgreich für sie ausgeführt wird. Sie wird als fehlerhaft markiert, wenn die Systemdiagnose 3-mal hintereinander erfolglos war.

    gcloud compute health-checks create http example-check --port 80 \
        --check-interval 30s \
        --healthy-threshold 1 \
        --timeout 10s \
        --unhealthy-threshold 3
    
  2. Erstellen Sie eine Firewallregel, damit Systemdiagnosetests eine Verbindung zu Ihrer Anwendung herstellen können.

    Die Systemdiagnosetests stammen von Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16. Stellen Sie deshalb sicher, dass Ihre Firewallregeln die Verbindung zulassen. In diesem Beispiel nutzt die verwaltete Instanzgruppe das Netzwerk default und ihre Instanzen überwachen den Port 80. Falls Port 80 im Netzwerk "default" noch nicht offen ist, erstellen Sie eine entsprechende Firewallregel.

    gcloud compute firewall-rules create allow-health-check \
        --allow tcp:80 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --network default
    
  3. Wenden Sie die Systemdiagnose auf die regional oder zonal verwaltete Instanzgruppe an. Konfigurieren Sie dazu eine Richtlinie zur automatischen Reparatur.

    Mit dem Befehl set-autohealing wenden Sie in gcloud beta compute die Systemdiagnose auf die verwaltete Instanzgruppe an.

    Mit der Einstellung initial-delay wird die potenzielle vorzeitige Neuerstellung der Instanz durch die automatische Reparatur verzögert, wenn die Instanz gerade gestartet wird. Der Timer für die anfängliche Verzögerung startet, wenn sich die currentAction der Instanz im Status VERIFYING befindet.

    Beispiel:

    gcloud beta compute instance-groups managed set-autohealing my-mig \
        --health-check example-check \
        --initial-delay 300 \
        --zone us-east1-b
    

    Es kann 15 Minuten dauern, bis das Monitoring von Instanzen in der Gruppe durch die automatische Reparatur beginnt.

API

  1. Erstellen Sie eine Systemdiagnose für die automatische Reparatur, die konservativer ist als eine Load-Balancing-Systemdiagnose.

    Erstellen Sie beispielsweise eine Systemdiagnose, die eine Antwort von Port 80 erwartet und eine gewisse Fehlertoleranz hat, bevor sie Instanzen als fehlerhaft (UNHEALTHY) markiert und dafür sorgt, dass sie neu erstellt werden. In diesem Beispiel wird eine Instanz als intakt markiert, wenn die Systemdiagnose einmal erfolgreich für sie ausgeführt wird. Sie wird als fehlerhaft markiert, wenn die Systemdiagnose 3-mal hintereinander erfolglos war.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks
    
    {
     "name": "example-check",
     "type": "http",
     "port": 80,
     "checkIntervalSec": 30,
     "healthyThreshold": 1,
     "timeoutSec": 10,
     "unhealthyThreshold": 3
    }
    
  2. Erstellen Sie eine Firewallregel, damit Systemdiagnosetests eine Verbindung zu Ihrer Anwendung herstellen können.

    Die Systemdiagnosetests stammen von Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16. Sorgen Sie deshalb dafür, dass Ihre Firewallregeln die Verbindung zulassen. In diesem Beispiel nutzt die verwaltete Instanzgruppe das Netzwerk default und ihre Instanzen überwachen den Port 80. Falls Port 80 im Netzwerk "default" noch nicht offen ist, erstellen Sie eine entsprechende Firewallregel.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls
    
    {
     "name": "allow-health-check",
     "network": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default",
     "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
     ],
     "allowed": [
      {
       "ports": [
        "80"
       ],
       "IPProtocol": "tcp"
      }
     ]
    }
    
  3. Wenden Sie die Systemdiagnose auf die regional oder zonal verwaltete Instanzgruppe an. Konfigurieren Sie dazu eine Richtlinie zur automatischen Reparatur.

    Eine Richtlinie zur automatischen Reparatur gehört zu einer Ressource des Typs instanceGroupManager oder regionInstanceGroupManager.

    Mit den Methoden insert oder patch können Sie die Richtlinie zur automatischen Reparatur festlegen.

    Im folgenden Beispiel wird eine Richtlinie zur automatischen Reparatur mit der Methode instanceGroupManagers.patch eingerichtet.

    PATCH https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]
    {
      "autoHealingPolicies": [
        {
          "healthCheck": "global/healthChecks/example-check",
          "initialDelaySec": 300
        }
      ],
    }
    

    Mit der Einstellung initialDelaySec wird die potenzielle vorzeitige Neuerstellung der Instanz durch die automatische Reparatur verzögert, wenn die Instanz gerade gestartet wird. Der Timer für die anfängliche Verzögerung startet, wenn sich die currentAction der Instanz im Status VERIFYING befindet.

    Es kann einige Minuten dauern, bis das Monitoring von Instanzen in der Gruppe durch die automatische Reparatur beginnt.

    Wenn Sie die anwendungsbasierte automatische Reparatur deaktivieren möchten, geben Sie als Richtlinie zur automatischen Reparatur einen leeren Wert an: autoHealingPolicies[]. Die verwaltete Instanzgruppe erstellt nur die Instanzen neu, die sich nicht im Modus RUNNING befinden.

    Sie können die Richtlinie zur automatischen Reparatur einer verwalteten Instanzgruppe aus dem Feld instanceGroupManagers.autoHealingPolicies ablesen. Zum Abrufen der Ressource einer verwalteten Instanzgruppe verwenden Sie eine der folgenden Methoden:

Frühere automatische Reparaturvorgänge ansehen

Mit dem Tool gcloud oder der API können Sie frühere automatische Reparaturvorgänge aufrufen.

gcloud

Mit dem Befehl gcloud compute operations list und einem Filter können Sie eine Liste der automatischen Reparaturereignisse in Ihrem Projekt aufrufen.

gcloud compute operations list --filter='operationType~compute.instances.repair.*'

Weitere Informationen zu einem bestimmten Reparaturvorgang bekommen Sie mit dem Befehl describe. Beispiel:

gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b

API

Senden Sie für zonale verwaltete Instanzgruppen eine GET-Anfrage an die Ressource operations der Zone und geben Sie dabei einen Filter an, durch den die Ausgabeliste auf Ereignisse des Vorgangstyps compute.instances.repair.* beschränkt wird.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

Verwenden Sie für regionale verwaltete Instanzgruppen die operations der Region anstelle einer Zone.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/region/[REGION]/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

Mit einer GET-Anfrage für einen bestimmten Reparaturvorgang können Sie weitere Informationen zu diesem Vorgang abrufen.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5

Instanzen identifizieren, die zu einer Gruppe gehören

Informationen zum Aufrufen einer Liste aller Instanzen in einer Gruppe finden Sie unter Vorhandene Gruppen und Gruppenbeschreibungen abrufen.

Zur Prüfung, ob eine bestimmte Instanz derzeit Mitglied einer Gruppe ist, können Sie die Konsole oder die API verwenden.

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf eine Instanz, um die VM-Instanzdetails aufzurufen.
  3. Wenn die VM-Instanz Mitglied einer verwalteten Instanzgruppe ist, wird der Name dieser verwalteten Instanzgruppe unter der Überschrift Verwendet von angezeigt. Wenn die VM-Instanz kein Mitglied einer Gruppe ist, wird die Überschrift Verwendet von auf der Seite mit den Instanzdetails nicht angezeigt.

API

Siehe Verweise auf VM-Instanzen ansehen.

Alternativ können Sie nach den beiden folgenden Metadatenschlüsseln in den Metadaten der Instanz suchen, um zu ermitteln, ob eine Instanz Mitglied einer verwalteten Instanzgruppe ist oder war:

  • instance-template gibt die Vorlage an, aus der die Instanz erstellt wurde.
  • created-by gibt die verwaltete Instanzgruppe an, welche die Instanz erstellt hat.

Selbst wenn Sie die Instanz verwerfen, bleiben die Metadateneinträge erhalten, außer Sie entfernen diese manuell.

Wenn Sie zum Beispiel wissen möchten, ob die Instanz random-instance-biy von einer verwalteten Instanzgruppe erstellt wurde, können Sie sie beschreiben und auf die oben genannten Metadatenschlüssel achten. Beispiel:

gcloud compute instances describe random-instance-biy --zone us-central1-f

gcloud gibt eine Antwort wie die Folgende zurück:

canIpForward: false
cpuPlatform: Intel Ivy Bridge
creationTimestamp: '2016-08-24T14:11:38.012-07:00'
disks:
- autoDelete: true
  boot: true
  deviceName: persistent-disk-0
  index: 0
  interface: SCSI
  kind: compute#attachedDisk
...[snip]...
metadata:
  items:
  - key: instance-template
    value: projects/123456789012/global/instanceTemplates/example-it
  - key: created-by
    value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata

Einzelne Instanzen aus einer Gruppe löschen

Sie können einzelne Instanzen aus einer verwalteten Instanzgruppe löschen. Dadurch verringert sich der angegebene Wert der Instanzgruppe für targetSize und die Instanzen werden aus allen Zielpools entfernt, denen sie bisher angehört haben.

Das Löschen von Instanzen aus einer verwalteten Instanzgruppe hat keine Auswirkungen auf die Autoscaling-Einstellungen. Wenn Sie Instanzen aus einer Gruppe entfernen, stellt das Autoscaling unter Umständen eine Steigerung der Arbeitslast auf den anderen Instanzen fest und erhöht die Gruppengröße wieder auf das bisherige Niveau. Um dies zu verhindern, sollten Sie das Autoscaling anhalten, bevor Sie Instanzen löschen.

Wenn die Gruppe Teil eines Back-End-Dienstes ist, für den Verbindungsausgleich aktiviert ist, kann es nach Ablauf der Verbindungsausgleichszeit bis zu 60 Sekunden dauern, bis die VM-Instanz entfernt oder gelöscht wird.

Sie können Instanzen aus einer verwalteten Instanzgruppe über die Google Cloud Platform Console, das Tool gcloud compute oder die API löschen.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf die Instanzgruppe, aus der Sie einzelne Instanzen löschen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe und einer Liste der zur Gruppe gehörenden Instanzen angezeigt.
  3. Wählen Sie aus der Liste die zu löschenden Instanzen aus.
  4. Klicken Sie auf Löschen. Die ausgewählten Instanzen werden gelöscht.

gcloud

Mit gcloud löschen Sie Instanzen über den Unterbefehl instance-groups managed delete-instances:

gcloud compute instance-groups managed delete-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. In den Text der Anfrage fügen Sie die URLs der zu löschenden Instanzen ein:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/deleteInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

Nach einer Anfrage zum Löschen von Instanzen in einer verwalteten Instanzgruppe werden die Instanzen angehalten, sobald das System sie löschen kann. Je nachdem, wie viele Instanzen Sie aus der Gruppe löschen möchten, kann dies einige Zeit dauern. Prüfen Sie den Status der Instanzen in Ihrer verwalteten Instanzgruppe.

Instanzen in einer Gruppe verwerfen

Sie können eine Instanz von einer verwalteten Instanzgruppe trennen, um Fehler daran leichter zu beheben, ohne die gesamte Gruppe in Mitleidenschaft zu ziehen. Durch das Verwerfen einer Instanz wird diese auch aus den Lastenausgleichsmodulen entfernt, die der verwalteten Instanzgruppe zugewiesen sind. Bestimmten Instanzen manuell zugeteilte Zielpools werden dagegen nicht entfernt.

Das Verwerfen von Instanzen verringert den targetSize-Wert der Instanzgruppe, wirkt sich aber nicht auf etwaige Autoscaling-Einstellungen aus. Verwaltete Instanzgruppen, für die Autoscaling eingerichtet ist, fügen weiterhin automatisch bei Bedarf Instanzen hinzu oder entfernen diese.

Wenn die Gruppe Teil eines Back-End-Dienstes ist, für den Verbindungsausgleich aktiviert ist, kann es nach Ablauf der Verbindungsausgleichszeit bis zu 60 Sekunden dauern, bis die VM-Instanz entfernt oder gelöscht wird.

Sie können Instanzen aus einer verwalteten Instanzgruppe über die Google Cloud Platform Console, das Tool gcloud compute oder die API verwerfen.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf die Instanzgruppe, aus der Sie Instanzen entfernen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe und einer Liste der zur Gruppe gehörenden Instanzen angezeigt.
  3. Wählen Sie aus der Liste die zu entfernenden Instanzen aus.
  4. Klicken Sie auf Aus Gruppe entfernen. Die ausgewählten Instanzen werden aus der Gruppe entfernt, werden aber weiterhin ausgeführt.

gcloud

Mit dem Unterbefehl abandon-instances können Sie eine Instanz aus der Instanzgruppe entfernen, ohne die Instanz zu löschen.

gcloud compute instance-groups managed abandon-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. In den Anfragetext fügen Sie die URLs der zu verwerfenden Instanzen ein:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/abandonInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

Nach einer Anfrage zum Verwerfen von Instanzen aus einer verwalteten Instanzgruppe werden diese so bald wie möglich aus der Gruppe entfernt. Prüfen Sie den Status der Instanzen in Ihrer verwalteten Instanzgruppe.

Instanzen in einer Gruppe neu erstellen

Beim Neuerstellen einer Instanz werden die angegebenen Instanzen gelöscht und anhand der Instanzvorlage für die verwaltete Instanzgruppe anschließend neu erstellt.

Verwenden Sie diese Methode, um ausgewählte Instanzen zu aktualisieren, damit sie die neueste Instanzvorlage verwenden. Wenn Sie alle Instanzen in einer verwalteten Instanzgruppe neu erstellen müssen, starten Sie stattdessen ein Rolling Update.

Wenn die Gruppe Teil eines Back-End-Dienstes ist, für den Verbindungsausgleich aktiviert ist, kann es nach Ablauf der Verbindungsausgleichszeit bis zu 60 Sekunden dauern, bis die VM-Instanz entfernt oder gelöscht wird.

Die ausgewählten Instanzen in verwalteten Instanzgruppen können Sie über das Tool gcloud compute oder die API neu erstellen.

gcloud

Verwenden Sie den Unterbefehl instance-groups managed recreate-instances:

gcloud compute instance-groups managed recreate-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe an den Dienst instanceGroupManagers. In den Text der Anfrage fügen Sie die URLs der Instanzen ein, die neu erstellt werden sollen:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/recreateInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

Nach einer Anfrage zum Neuerstellen von Instanzen in einer verwalteten Instanzgruppe werden die neuen Instanzen gestartet, sobald das System sie bereitstellen kann. Je nachdem, wie viele Instanzen Sie neu erstellen lassen, kann dies einige Zeit dauern. Prüfen Sie den Status der Instanzen in Ihrer verwalteten Instanzgruppe.

Status von Instanzen in einer verwalteten Instanzgruppe prüfen

Sie können mit verschiedenen Befehlen und Anfragen Instanzen in einer verwalteten Instanzgruppe erstellen, löschen und ändern. Diese Vorgänge werden mit dem Status DONE zurückgegeben, sobald die Gruppe Aktionen zum Erstellen, Löschen oder Aktualisieren der Instanzen geplant hat. Die Instanzen in der Gruppe sind jedoch erst dann erstellt, gelöscht oder aktualisiert, wenn diese zugrunde liegenden Aktionen abgeschlossen sind. Prüfen Sie den Status der Instanzen mit dem Tool gcloud compute oder der API.

gcloud

Erstellen Sie mit dem Befehl instance-groups managed list-instances eine Liste der Instanzen in der Gruppe sowie der aktuellen Aktionen für diese Instanzen:

gcloud compute instance-groups managed list-instances [INSTANCE_GROUP] \
    --zone [ZONE]

Beispiel:

gcloud compute instance-groups managed list-instances example-group \
    --zone [ZONE]
NAME               STATUS  ACTION   LAST_ERROR
example-group-0gnk RUNNING NONE
example-group-15xy         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-18ep         CREATING Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0, Error QUOTA_EXCEEDED: Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0
example-group-1u1y         CREATING

In diesem Beispiel enthält die Gruppe example-group vier Instanzen: Eine wird ausgeführt, bei zweien ist die Erstellung aufgrund von Adress- und CPU-Kontingenten nicht möglich und eine weitere befindet sich in der Erstellung, wobei kein Fehler aufgetreten ist.

Wenn die Kapazität auf Abruf bei Gruppen mit Instanzen auf Abruf nicht zur Verfügung steht, schlagen Erstellungsaktionen mit dem Fehler ZONE_RESOURCE_POOL_EXHAUSTED fehl. Informationen zum Aufrufen vergangener vorzeitiger Beendigungsereignisse finden Sie unter Erkennen, ob eine Instanz präemptiv beendet wurde.

Mit "wait-until-stable" auf stabile Instanzen warten

Mit dem Befehl instance-groups managed wait-until-stable können Sie eine Instanzgruppe automatisch prüfen und dafür sorgen, dass das Skript wartet, bis alle Instanzen in der Gruppe stabil sind.

gcloud compute instance-groups managed wait-until-stable example-group \
    --zone [ZONE]

API

Stellen Sie eine Anfrage mit dem Namen der verwalteten Instanzgruppe, welche die zu prüfenden Instanzen enthält, an den Dienst instanceGroupManagers:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/listManagedInstances

Beispiel:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instanceGroupManagers/example-group/listManagedInstances

Darauf erhalten Sie die folgende Antwort:

{
 "managedInstances": [
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-0gnk",
   "id": "16960422116594945029",
   "instanceStatus": "RUNNING",
   "currentAction": "NONE"
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-15xy",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-15xy' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-18ep",
   "currentAction": "CREATING",
   "lastAttempt": {
    "errors": {
     "errors": [
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'CPUS' exceeded.  Limit: 24.0"
      },
      {
       "code": "QUOTA_EXCEEDED",
       "message": "Instance 'example-group-18ep' creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 23.0"
      }
     ]
    }
   }
  },
  {
   "instance": "https://content.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-f/instances/example-group-1u1y",
   "id": "7239700230861444556",
   "instanceStatus": "RUNNING",
   "currentAction": "CREATING"
  }
 ]
}

In diesem Beispiel enthält die Gruppe example-group vier Instanzen: Eine wird ausgeführt, bei zweien ist die Erstellung aufgrund von Adress- und CPU-Kontingenten nicht möglich und eine weitere befindet sich in der Erstellung, wobei kein Fehler aufgetreten ist.

Wenn die Kapazität auf Abruf bei Gruppen mit Instanzen auf Abruf nicht zur Verfügung steht, schlagen Erstellungsaktionen mit dem Fehler ZONE_RESOURCE_POOL_EXHAUSTED fehl. Informationen zum Aufrufen vergangener vorzeitiger Beendigungsereignisse finden Sie unter Erkennen, ob eine Instanz präemptiv beendet wurde.

Verwaltete Instanzgruppe löschen

Wenn Sie eine verwaltete Instanzgruppe über die Google Cloud Platform Console oder gcloud löschen, werden alle Instanzen in der Gruppe sowie etwaige zugehörige Autoscaling-Einstellungen ebenfalls gelöscht. Falls Sie Instanzen aus der Gruppe beibehalten möchten, verwerfen Sie sie zuerst, um sie aus der Gruppe zu entfernen. Dann können Sie die verwaltete Instanzgruppe löschen (delete).

Bevor Sie eine verwaltete Instanzgruppe über die API löschen können, müssen Sie zuerst separate Anfragen zum Löschen angehängter Autoscalings ausgeben.

Sie können eine gesamte verwaltete Instanzgruppe und sämtliche enthaltenen Instanzen über die Google Cloud Platform Console, das Tool gcloud compute oder die API löschen.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

    Zur Seite "Instanzgruppen"

  2. Wählen Sie aus der Liste eine oder mehrere zu löschende Gruppen aus.
  3. Klicken Sie auf Löschen, um die verwaltete Instanzgruppe und alle zugehörigen Instanzen zu löschen.

gcloud

Verwenden Sie den Unterbefehl instance-groups managed delete:

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

Stellen Sie eine DELETE-Anfrage an den Dienst instanceGroupManagers und geben Sie den Namen der zu löschenden verwalteten Instanzgruppe an:

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Instanzen auf Abruf in Gruppen erstellen

Mithilfe verwalteter Instanzgruppen können Sie schnell mehrere Instanzen auf Abruf erstellen, um die Kosten für die Instanzen in Ihrer Gruppe zu senken. Legen Sie beispielsweise eine Gruppe von Instanzen auf Abruf an, um eine Batchverarbeitungsaufgabe zu erledigen, und löschen Sie sie wieder, wenn die Aufgabe abgeschlossen ist.

Zum Erstellen einer Gruppe von Instanzen auf Abruf richten Sie die entsprechende Option in der Instanzvorlage ein und legen dann anhand der Vorlage die verwaltete Instanzgruppe an.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzvorlagen" auf.

    Zur Seite "Instanzvorlagen"

  2. Klicken Sie auf Neue Instanzvorlage.
  3. Legen Sie die Attribute der Instanzvorlage fest.
  4. Klicken Sie auf Erweiterte Optionen ansehen, um den Bereich Verfügbarkeitsrichtlinien zu maximieren.
  5. Legen Sie für Präemptivität die Einstellung An fest.
  6. Klicken Sie auf Erstellen, um die Vorlage anzulegen.
  7. Verwenden Sie die Vorlage, um eine verwaltete Instanzgruppe zu erstellen.

gcloud

Erstellen Sie in gcloud compute eine Instanzvorlage mit dem Befehl instance-templates create. Fügen Sie außerdem das Flag --preemptible ein:

gcloud compute instance-templates create [INSTANCE_TEMPLATE] \
    --preemptible

Verwenden Sie die neue Instanzvorlage, um eine verwaltete Instanzgruppe zu erstellen.

API

Erstellen Sie mit der Methode instanceTemplates().insert eine neue Instanzvorlage. Fügen Sie unter scheduling das Attribut preemptible ein und legen Sie dafür den Wert true fest:

{
"name": "[INSTANCE_TEMPLATE]",
"properties": {
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

Verwenden Sie die neue Instanzvorlage, um eine verwaltete Instanzgruppe zu erstellen.

Verwaltete Instanzgruppe zu einem Lastenausgleichsmodul hinzufügen

Der Google Cloud Platform-Lastenausgleich verwendet sowohl verwaltete als auch nicht verwaltete Instanzgruppen zur Weiterleitung von Traffic. Je nach Typ des verwendeten Lastenausgleichsmoduls können Sie Instanzgruppen zu einem Zielpool oder Back-End-Dienst hinzufügen. Weitere Informationen zu verwalteten Instanzgruppen und dem Lastenausgleich finden Sie unter Instanzgruppen.

Verwaltete Instanzgruppe zu einem Back-End-Dienst hinzufügen

Ein Back-End-Dienst ist erforderlich, um ein HTTP(S)-, internes oder SSL-Lastenausgleichsmodul zu erstellen. Ein Back-End-Dienst enthält einzelne Back-Ends, die jeweils eine – verwaltete oder nicht verwaltete – Instanzgruppe enthalten. Die Instanzen in der Instanzgruppe reagieren auf Traffic vom Lastenausgleichsmodul. Der Back-End-Dienst wiederum weiß, welche Instanzen er verwenden kann, wie viel Traffic sie verarbeiten können und wie viel Traffic sie derzeit verarbeiten. Außerdem überwacht der Back-End-Dienst die Systemdiagnose und sendet keine neuen Verbindungen an fehlerhafte Instanzen.

Unter Instanzgruppen zu einem Back-End-Dienst hinzufügen wird beschrieben, wie eine Instanzgruppe einem Back-End-Dienst hinzugefügt wird.

Verwaltete Instanzgruppe zu einem Zielpool hinzufügen

Ein Zielpool ist ein Objekt, das eine oder mehrere VM-Instanzen enthält. Ein Zielpool wird beim Netzwerklastenausgleich verwendet, bei dem ein Netzwerklastenausgleichsmodul Nutzeranfragen an den hinzugefügten Zielpool weiterleitet. Die Instanzen, die Teil dieses Zielpools sind, leiten diese Anfragen weiter und geben eine Antwort zurück. Sie können eine verwaltete Instanzgruppe einem Zielpool hinzufügen, sodass der Zielpool automatisch aktualisiert wird, wenn Instanzen in der Instanzgruppe hinzugefügt oder entfernt werden.

Bevor Sie eine verwaltete Instanzgruppe einem Zielpool hinzufügen können, muss der Zielpool vorhanden sein. Weitere Informationen finden Sie in der Dokumentation zum Hinzufügen eines Zielpools.

Folgen Sie dieser Anleitung, um einem Zielpool eine vorhandene verwaltete Instanzgruppe hinzuzufügen. Dadurch werden alle VM-Instanzen, die Teil der verwalteten Instanzgruppe sind, dem Zielpool hinzugefügt.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Zielpools" auf.

    Zur Seite "Zielpools"

  2. Klicken Sie auf den Zielpool, dem Sie die Instanzgruppe hinzufügen möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Scrollen Sie nach unten zum Abschnitt VM-Instanzen und klicken Sie auf Instanzgruppen auswählen.
  5. Wählen Sie eine Instanzgruppe aus dem Drop-down-Menü aus.
  6. Speichern Sie die Änderungen.

gcloud

Verwenden Sie im Befehlszeilentool gcloud den Befehl set-target-pools:

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
    --target-pools [TARGET_POOL,..] [--zone ZONE]

Dabei gilt:

  • [INSTANCE_GROUP] ist der Name der Instanzgruppe.
  • [TARGET_POOL] ist der Name von einem oder mehreren Zielpools, denen diese Instanzgruppe hinzugefügt werden soll.
  • [ZONE] ist die Zone der Instanzgruppe.

API

Erstellen Sie in der API eine POST-Anfrage an den folgenden URI:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID für diese Anfrage.
  • [ZONE] ist die Zone der Instanzgruppe.
  • [INSTANCE_GROUP] ist der Name der Instanzgruppe.

Der Anfragetext muss eine Liste der URIs zu den Zielpools enthalten, die Sie dieser Gruppe hinzufügen möchten. Beispiel:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Benannte Ports verwalteten Instanzgruppen zuweisen

Benannte Ports sind Schlüssel/Wert-Paare, die für einen Dienstnamen und die Portnummer stehen, auf der der Dienst ausgeführt wird. Sie werden von Lastenausgleichsdiensten genutzt, um Traffic an bestimmte Ports auf einzelnen Instanzen zu leiten. Wenn Sie beispielsweise einen benannten Port mit dem Schlüssel/Wert-Paar http:80 einrichten und den Back-End-Dienst so konfigurieren, dass er Traffic an einen Port mit der Bezeichnung http sendet, leitet der Lastenausgleich Traffic an Port 80 der Instanzen einer Instanzgruppe weiter.

Benannte Ports sind einfache Metadaten, die vom Lastenausgleich genutzt werden. Sie steuern keine Netzwerk- oder Firewallressourcen in Compute Engine.

Sie können jedem Dienstnamen mehrere Ports und jedem Port mehrere Dienstnamen zuweisen. Bedenken Sie jedoch, dass ein Back-End-Dienst Traffic immer nur an einen benannten Port weiterleiten kann.

Konsole

  1. Rufen Sie in der GCP Console die Seite "Instanzgruppen" auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf den Namen der Instanzgruppe, in der Sie benannte Ports festlegen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe angezeigt.
  3. Klicken Sie auf Gruppe bearbeiten, um die verwaltete Instanzgruppe zu bearbeiten.
  4. Klicken Sie auf Portnamenzuordnung festlegen, um die Optionen für benannte Ports zu maximieren.
  5. Klicken Sie auf Element hinzufügen und geben Sie den gewünschten Portnamen sowie die Portnummern ein, die Sie mit dem Namen verknüpfen möchten. Klicken Sie noch einmal auf Element hinzufügen, um die Liste ggf. um weitere Einträge zu ergänzen.
  6. Klicken Sie auf Speichern, um die Änderungen zu speichern und die benannten Ports auf die Instanzen in der verwalteten Instanzgruppe anzuwenden.

gcloud

Mit dem Befehl set-named-ports richten Sie einen oder mehrere benannte Ports ein:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports [PORT_NAME]:[PORT],[PORT_NAME]:[PORT]

Beispiel:

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:80,name2:8080

Sie können für jeden Namen oder Port mehrere Einträge erstellen, wenn Sie einem Dienstnamen mehrere Ports oder einem Dienst mehrere Namen zuweisen möchten. Ordnen Sie beispielsweise name1 den Ports 10, 20 und 80 zu. Weisen Sie anschließend name2 und name3 Port 80 zu. Zum Schluss verknüpfen Sie Port 9000 mit name4.

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
  --named-ports name1:10,name1:20,name1:80,\
                name2:8080,name3:8080,\
                name4:9000

Die Portnamenzuordnung für eine verwaltete Instanzgruppe prüfen Sie mit dem Befehl get-named-ports:

gcloud compute instance-groups managed get-named-ports [INSTANCE_GROUP]
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

API

Die Instance Group Manager API bietet keine API-Methode setNamedPorts an, aber Sie können stattdessen die Instance Group API verwenden.

Stellen Sie eine Anfrage mit dem Namen der Instanzgruppe an die Instance Group API. Ermitteln Sie den aktuellen Wert der Instanzgruppe für fingerprint, indem Sie Informationen über eine bestimmte Gruppe abrufen. Fügen Sie den fingerprint-Wert sowie ein oder mehrere namedPorts-Wertpaare in den Text der Anfrage ein:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroups/[INSTANCE_GROUP]/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  },
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  }
 ]
}

Beispiel:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

Erstellen Sie mehrere Einträge für diesen Namen, wenn Sie einem Dienstnamen mehrere Ports zuweisen möchten. Weisen Sie beispielsweise name1 die Ports 10, 20 und 80 zu. Ordnen Sie außerdem name2 Port 8080 zu.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 10
  },
  {
   "name": "name1",
   "port": 20
  }
  {
   "name": "name1",
   "port": 80
  }
  {
   "name": "name2",
   "port": 8080
  }
  {
   "name": "name3",
   "port": 80
  }
  {
   "name": "name4",
   "port": 8080
  }
 ]
}

Stellen Sie eine GET-Anfrage, die auf die Gruppe verweist, um eine Liste der benannten Ports zu erhalten, die bereits einer verwalteten Instanzgruppe zugewiesen sind:

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

Informationen zu den Feldern instanceTemplate und versions

Wenn Sie eine verwaltete Instanzgruppe erstellen, geben Sie eine Instanzvorlage an, die die verwaltete Instanzgruppe zum Erstellen einzelner VM-Instanzen verwendet. Standardmäßig beschreibt Compute Engine die verwendete Instanzvorlage in zwei separaten API-Attributen: in dem übergeordneten Attribut instanceTemplate und dem Attribut versions. Beachten Sie beispielsweise in der folgenden verwalteten Instanzgruppe, dass sowohl das Feld instanceTemplate als auch versions ausgefüllt ist:

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

Compute Engine füllt automatisch das übergeordnete Feld instanceTemplate und das Feld versions aus, um die Abwärtskompatibilität zu gewährleisten. Wir empfehlen, Angaben im Feld versions zu machen und das übergeordnete Feld instanceTemplates nach Möglichkeit auszulassen. Wenn Ihr Anwendungscode jedoch derzeit das übergeordnete Feld instanceTemplate ausfüllt, ist diese Anfrage trotzdem gültig.

Weitere Informationen zum Updater verwalteter Instanzgruppen finden Sie unter Verwaltete Instanzgruppen aktualisieren.

(Erweitert) Instanzvorlagen an Teilen verwalteter Instanzgruppen testen

Es ist möglich, eine verwaltete Instanzgruppe zu erstellen, in der es zwei Gruppen von VMs gibt, die unterschiedliche Instanzvorlagen verwenden. Sie möchten beispielsweise eine verwaltete Instanzgruppe mit 20 VM-Instanzen erstellen, von denen 10 VMs ein bestimmtes Betriebssystem-Image verwenden, der Rest aber ein anderes Betriebssystem-Image verwenden soll. Mit dieser Funktion können Sie die beiden verschiedenen Instanzvorlagen vergleichen, bevor Sie sich für eine entscheiden.

Stellen Sie in der API eine POST-Anfrage an die folgende URL:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

Der Text der Anfrage sollte das übergeordnete Feld instanceTemplates auslassen, aber das Attribut versions mit zwei Instanzvorlagen enthalten. In jedem versions-Objekt legen Sie eine Instanzvorlage fest. Für eines der versions-Objekte, aber nicht für beide, müssen Sie auch die Zielgröße (targetSize) angeben. Die folgende Anfrage erstellt beispielsweise eine Instanzgruppe, bei der 50 % der VM-Instanzen die Instanzvorlage example-template verwenden und der Rest der VM-Instanzen die Vorlage small-machine-type:

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

Verwaltete Instanzgruppen und IAM

Für alle Vorgänge, die Compute Engine im Rahmen einer verwalteten Instanzgruppe ausführt, wird das Google APIs-Dienstkonto für Ihr Projekt verwendet. Dieses projektbezogene Dienstkonto hat eine E-Mail-Adresse in folgendem Format:

[PROJECT_ID]@cloudservices.gserviceaccount.com

Dabei gilt:

  • [PROJECT_ID] ist die numerische ID des entsprechenden Projekts.

Das Google APIs-Dienstkonto unterscheidet sich vom standardmäßigen Compute Engine-Dienstkonto.

Sie müssen dafür sorgen, dass das Dienstkonto der verwalteten Instanzgruppe über die entsprechenden Berechtigungen verfügt, basierend auf der Instanzvorlage VM-Instanzen zu erstellen. Das bedeutet insbesondere, dass das Dienstkonto die Rolle compute.instanceAdmin.v1 und gegebenenfalls die Rolle serviceAccountUser haben muss, sodass es in der Instanzgruppe Instanzen erstellen und verwalten kann. Die Rolle serviceAccountUser ist nur erforderlich, wenn die verwaltete Instanzgruppe Instanzen erstellt, die als Dienstkonto ausgeführt werden können. Bedenken Sie außerdem, dass dieses Konto auch von anderen Prozessen wie Deployment Manager genutzt wird.

Wenn Sie eine verwaltete Instanzgruppe erstellen oder eine Instanzvorlage aktualisieren, prüft Compute Engine, ob das Google APIs-Dienstkonto über Folgendes verfügt:

  • Die Rolle serviceAccountUser für die Instanzvorlage, wenn Sie vorhaben, Instanzen zu erstellen, die als Dienstkonto ausgeführt werden können.
  • Berechtigungen für alle Ressourcen, auf die Instanzvorlagen verweisen, wie Images, Laufwerke, VPC-Netzwerke und Subnetzwerke.

In der Dokumentation zu Dienstkonten erfahren Sie mehr darüber.

Alle Instanzen in einer verwalteten Instanzgruppe aktualisieren

Siehe Verwaltete Instanzgruppen aktualisieren.

Fehlerbehebung

Meine verwaltete Instanzgruppe kann keine Instanzen erstellen. Woran liegt das?

Verschiedene Probleme können die Instanzgruppe daran hindern, Instanzen erfolgreich anzulegen bzw. neu zu erstellen. Zu den häufigsten zählen folgende:

  • Die verwaltete Instanzgruppe versucht, die Instanz und das nichtflüchtige Bootlaufwerk zu erstellen bzw. neu zu erstellen, aber das nichtflüchtige Laufwerk ist bereits vorhanden. Standardmäßig werden neue nichtflüchtige Bootlaufwerke zusammen mit neuen Instanzen erstellt und nach diesen benannt. Trägt die Instanz den Namen my-awesome-instance, so heißt das Laufwerk ebenfalls my-awesome-instance. Wenn schon ein nichtflüchtiges Laufwerk mit diesem Namen vorhanden ist, schlägt die Anfrage fehl. Löschen Sie das nichtflüchtige Laufwerk, um den Fehler zu beheben.

  • In Ihrer Instanzvorlage ist bei der Option disks.autoDelete für nichtflüchtige Bootlaufwerke der Wert false festgelegt. Wird dann eine Instanz beispielsweise bei einer automatischen Reparatur gelöscht, besteht das nichtflüchtige Laufwerk weiter. Wenn die verwaltete Instanzgruppe nun versucht, die Instanz mit demselben Namen neu zu erstellen, tritt wieder das Problem auf, dass es bereits ein nichtflüchtiges Laufwerk mit diesem Namen gibt. Löschen Sie das vorhandene nichtflüchtige Laufwerk, um das unmittelbare Problem zu beheben, und aktualisieren Sie die Instanzvorlage. Legen Sie dabei für disks.autoDelete den Wert true fest, wenn nichtflüchtige Bootlaufwerke zusammen mit der Instanz gelöscht werden sollen.

  • Möglicherweise ist Ihre Instanzvorlage ungültig. Wenn Sie sie vor Kurzem aktualisiert haben, enthält sie vielleicht ein ungültiges Attribut, das die verwaltete Instanzgruppe daran hindert, Instanzen zu erstellen. Ungültige Attribute sind:

    • Eine angegebene Ressource, die nicht existiert, zum Beispiel ein Quell-Image.
    • Ein Ressourcenname, der falsch geschrieben wurde.
    • Weitere nichtflüchtige Laufwerke, die keine Bootlaufwerke sind und die im Lese-/Schreibmodus hinzugefügt werden sollten. Da Instanzgruppen mehrere Instanzen umfassen, können weitere Laufwerke, die Sie für alle Instanzen der Gruppe freigeben möchten, nur im Lesemodus hinzugefügt werden.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation