Regionale MIGs erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie regionale verwaltete Instanzgruppen (Managed Instance Groups, MIGs) erstellen und verwalten. Allgemeine Informationen zum Erstellen von MIGs finden Sie unter Verwaltete Instanzgruppen erstellen.

Eine regionale MIG verteilt Ihre Instanzen auf mehrere Zonen in einer Region, wodurch die Ausfallsicherheit Ihrer MIG-basierten Arbeitslasten erhöht wird. Die Verwendung mehrerer Zonen schützt Sie vor extremen Fällen, in denen alle Instanzen in einer einzelnen Zone ausfallen.

Weitere Informationen zu regionalen MIGs, einschließlich ihrer Auswahl, ihrer zusätzlichen Konfigurationsoptionen und der Unterschiede zu zonalen MIGs, finden Sie in der Übersicht zu regionalen MIGs.

Hinweis

  • Wenn Sie die API-Beispiele dieser Anleitung verwenden möchten, richten Sie den API-Zugang ein.
  • Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
  • Erstellen Sie eine Instanzvorlage, bei der es sich um einen Baustein für eine verwaltete Instanzgruppe handelt.
  • Informieren Sie sich über Regionen und Zonen, die Ressourcen wie CPUs, GPUs und Laufwerke enthalten.

Beschränkungen

  • Mit einer regionalen MIG können Sie bis zu 2.000 VMs in einer Region mit maximal 1.000 VMs pro Zone erstellen. Mit einer zonalen MIG können Sie bis zu 1.000 VMs erstellen. Wenden Sie sich bei höherem Bedarf an den Support.
  • Wenn Sie eine MIG aktualisieren, können Sie bis zu 1.000 VMs in einer einzelnen Anfrage angeben.
  • Wenn Sie eine zustandsorientierte MIG wünschen, lesen Sie die Beschränkungen für zustandsorientierte MIGs.

  • Sie müssen auswählen, welche Zonen einer regionalen MIG zugeordnet werden, wenn Sie die regionale MIG erstellen. Wenn Sie während der Erstellung bereits bestimmte Zonen ausgewählt haben, können Sie diese später nicht mehr ändern oder aktualisieren. Sie können jedoch eine Zielverteilungsform der MIG festlegen, um anzugeben, wie die verwalteten Instanzen der Gruppe auf die von Ihnen ausgewählten Zonen verteilt werden sollen.

  • Wenn Sie Load-Balancing mit einer regionalen MIG verwenden möchten, gelten die folgenden Beschränkungen:

    • Sie können nicht den Balancing-Modus maxRate verwenden.
    • Wenn Sie ein HTTP(S)-Load-Balancing-Schema mit einer regionalen MIG verwenden, müssen Sie den Balancing-Modus maxRatePerInstance oder maxUtilization auswählen.
  • Für das Autoscaling einer regionalen MIG gelten die folgenden Beschränkungen:

    • Sie müssen die Zielverteilungsform der Gruppe auf EVEN festlegen.
    • Für das Hoch- und Herunterskalieren müssen Sie die proaktive Umverteilung von Instanzen aktivieren. Wenn Sie den Autoscaling-Modus so einstellen, dass nur horizontal skaliert wird, müssen Sie die proaktive Umverteilung von Instanzen nicht aktivieren.
    • Wenn Sie eine regionale MIG anhand von Cloud Monitoring-Messwerten automatisch skalieren möchten, gelten die folgenden Beschränkungen:

      • Sie können keine Gruppenmesswerte verwenden.
      • Sie können keine Filter auf Instanzmesswerte anwenden.

Regionale MIG erstellen

Verwenden Sie die Cloud Console, das gcloud-Tool oder die Compute Engine API.

Wenn in keiner Zone genügend Kapazität zur Unterstützung der VMs in der Gruppe vorhanden ist, erstellt Compute Engine so viele VMs wie möglich und versucht, die restlichen VMs zu erstellen, wenn zusätzliche Kapazität verfügbar wird.

Wenn Sie in Ihrer Anfrage nicht explizit einzelne Zonen angeben, wählt Compute Engine automatisch drei Zonen aus, in denen VMs erstellt werden sollen. Wenn Sie VMs in mehr oder weniger als drei Zonen erstellen müssen oder Sie die zu verwendenden Zonen auswählen möchten, können Sie eine Liste der Zonen in Ihrer Anfrage bereitstellen. Weitere Informationen finden Sie unter Zonenauswahl.

Standardmäßig sind Instanzen gleichmäßig auf ausgewählte Zonen verteilt. Wenn Sie zonale Ressourcen haben, die Sie mit Ihrer regionalen MIG verwenden möchten, z. B. bestimmte GPUs, vorhandene zonale nichtflüchtige Speicher oder zonale Reservierungen, können Sie die Verteilungsform der MIG festlegen, um Instanzen in Zonen zu erstellen, die diese Ressourcen enthalten.

Beachten Sie beim Erstellen einer regionalen MIG, dass bestimmte Ressourcen zonal sind, z. B. vorhandene nichtflüchtige Speicher. Wenn Sie in der Instanzvorlage zonale Ressourcen angeben, wie etwa vorhandene nichtflüchtige Speicher, muss der Speicher in allen von Ihnen ausgewählten Zonen vorhanden sein, damit er den VMs hinzugefügt werden kann, die von dieser regionalen MIG erstellt wurden.

Die proaktive Umverteilung von Instanzen ist standardmäßig aktiviert. Wenn Sie die Anzahl der VMs in jeder Zone manuell verwalten müssen, können Sie die proaktive Umverteilung von Instanzen deaktivieren. Wenn Sie die proaktive Umverteilung von Instanzen deaktivieren und Autoscaling verwenden möchten, müssen Sie das Autoscaling einschränken, um nur horizontal zu skalieren.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.
  3. Wählen Sie eine der Optionen für die neue verwaltete Instanzgruppe aus: zustandslos (Standardeinstellung) oder zustandsorientiert.
  4. Wählen Sie unter Standort die Option Mehrere Zonen aus.
  5. Wählen Sie eine Region aus.
  6. Klicken Sie zur Auswahl bestimmter Zonen auf Zonen konfigurieren, um die zu verwendenden Zonen auszuwählen.
  7. Wählen Sie unter Zielverteilungsform die Option Gleichmäßig aus. Wenn Sie eine andere Form auswählen möchten, lesen Sie die Informationen unter Richtlinie zur Verteilung von Instanzen auf Zonen festlegen.
  8. Wenn Sie die proaktive Umverteilung von Instanzen deaktivieren möchten:
    1. Achten Sie darauf, dass Automatischer Skalierungsmodus auf Kein Autoscaling festgelegt ist.
    2. Setzen Sie die Umverteilung von Instanzen auf Aus.
  9. Wählen Sie eine Instanzvorlage für die Instanzgruppe aus oder erstellen Sie eine neue Vorlage.
  10. Geben Sie die Anzahl der VMs für diese Gruppe an. Denken Sie daran, genügend VMs bereitzustellen, um den Anwendungsbetrieb bei einem Zonenfehler aufrechtzuerhalten.
  11. Fahren Sie nun mit dem Erstellen der MIG fort.

gcloud

Für alle MIGs muss eine Instanzvorlage vorhanden sein. Wenn Sie keine haben, erstellen Sie eine Instanzvorlage. Der folgende Befehl erstellt beispielsweise eine einfache Instanzvorlage mit Standardattributen:

gcloud compute instance-templates create example-template

Verwenden Sie im nächsten Schritt den Befehl instance-groups managed create mit dem Flag --region. Mit dem folgenden Befehl wird beispielsweise eine regionale MIG in drei Zonen der Region us-east1 erstellt:

gcloud compute instance-groups managed create example-rmig \
    --template example-template  \
    --size 30 \
    --region us-east1

Wenn Sie bestimmte Zonen auswählen möchten, die von der Gruppe verwendet werden sollen, geben Sie das Flag --zones an:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c

Wenn Sie die proaktive Umverteilung der Instanz deaktivieren möchten, setzen Sie das Flag --instance-redistribution-type auf NONE. Sie können die proaktive Umverteilung von Instanzen nicht deaktivieren, wenn Autoscaling aktiviert ist.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --instance-redistribution-type NONE \
    --region us-east1

API

Für alle MIGs muss eine Instanzvorlage vorhanden sein. Wenn Sie keine haben, erstellen Sie eine Instanzvorlage.

Erstellen Sie im nächsten Schritt eine POST-Anfrage an die Methode regionInstanceGroupManagers.insert. Geben Sie im Anfragetext den Gruppennamen, die Gruppengröße und die URL zur Instanzvorlage an. Geben Sie optional andere Felder an, z. B. den Basisnamen für Instanzen in der Gruppe.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Gruppe.
  • BASE_INSTANCE_NAME: Instanzname für jede VM-Instanz, die als Teil der Gruppe erstellt wird. Durch den Basisinstanznamen example-instance würden z. B. Instanzen mit Namen wie example-instance-[RANDOM_STRING] erstellt werden, wobei [RANDOM_STRING] vom Server generiert wird.
  • INSTANCE_TEMPLATE_NAME: Instanzvorlage, die verwendet werden soll.
  • INSTANCE_GROUP_NAME: Name der MIG.
  • TARGET_SIZE: angestrebte Anzahl von VMs in der Gruppe.

Wenn Sie bestimmte Zonen auswählen möchten oder VMs in einer Region mit weniger oder mehr als drei Zonen erstellen, fügen Sie der Anfrage das Attribut distributionPolicy hinzu und geben Sie eine Liste mit Zonen an. Ersetzen Sie ZONE durch den Namen einer Zone, in der VMs erstellt werden sollen.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

Mit der folgenden Anfrage wird beispielsweise eine regionale MIG namens example-rmig erstellt, wobei zehn verwaltete Instanzen auf die Zonen us-east1-b und us-east1-c verteilt werden:

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

Mit verwalteten Instanzen in einer regionalen MIG arbeiten

Wenn Sie auf bestimmten verwalteten Instanzen in einer MIG Aktionen ausführen müssen, um beispielsweise Instanzen mit bestimmten Namen zu erstellen oder zu löschen, ist der Prozess für regionale und zonale MIGs identisch. Siehe Mit verwalteten Instanzen arbeiten.

Informationen zu regionalen MIGs und verwalteten Instanzen abrufen

Wenn Sie Informationen zu Ihrer MIG abrufen möchten, um beispielsweise ihre Konfiguration aufzurufen oder ihren Status zu prüfen, oder wenn Sie Informationen zu den verwalteten Instanzen in einer MIG abrufen möchten, ist der Prozess für regionale und zonale MIGs identisch. Siehe Informationen zu MIGs und verwalteten Instanzen abrufen.

Regionale verwaltete Instanzgruppe aktualisieren

Sie können eine neue Instanzvorlage mithilfe des Updater-Features auf eine regionale MIG anwenden. Weitere Informationen finden Sie unter Regionale MIG aktualisieren.

Informationen zum Hinzufügen oder Entfernen von Instanzen in einer MIG finden Sie unter Mit verwalteten Instanzen arbeiten.

Wenn Sie MIG-Features verwenden oder aktualisieren möchten, lesen Sie die Dokumentationen zur automatischen Reparatur, zum Load-Balancing, zum Autoscaling, zur automatischen Aktualisierung und zu zustandsorientierten Arbeitslasten.

Nach dem Erstellen der MIG können Sie keine weiteren Zonen für die MIG auswählen. Sie können jedoch die Zielform der MIG aktualisieren, um zu ändern, wie die Gruppe die verwalteten Instanzen auf ausgewählte Zonen verteilt.

Richtlinie zum Verteilen von Instanzen auf Zonen festlegen

Sie können die Zielverteilungsform einer regionalen MIG auf eine der folgenden Optionen festlegen:

  • GLEICHMÄẞIG (Standardeinstellung): Die Gruppe plant die Erstellung und Löschung der VM-Instanz, um eine gleichmäßige Anzahl verwalteter Instanzen in den ausgewählten Zonen zu erreichen. Die Verteilung gilt als gleichmäßig, wenn sich die Anzahl von verwalteten Instanzen zwischen zwei Zonen nicht um mehr als 1 unterscheidet. Empfohlen für hochverfügbare Bereitstellungsarbeitslasten.

  • AUSGEGLICHEN: Die Gruppe priorisiert die Gewinnung von Ressourcen. Dabei werden VMs in Zonen geplant, in denen Ressourcen verfügbar sind. Außerdem werden VMs so gleichmäßig wie möglich auf die ausgewählten Zonen verteilt, um die Auswirkungen eines Zonenausfalls zu minimieren. Empfohlen für hochverfügbare Bereitstellungs- oder Batcharbeitslasten, für die kein Autoscaling erforderlich ist.

  • ALLE: Die Gruppe wählt Zonen zum Erstellen von VM-Instanzen aus, um die angeforderte Anzahl von VMs innerhalb der aktuellen Ressourceneinschränkungen zu erreichen und die Nutzung nicht verwendeter zonaler Reservierungen zu maximieren. Empfohlen für Batcharbeitslasten, für die keine Hochverfügbarkeit erforderlich ist.

Hilfe bei der Auswahl finden Sie unter Vergleichstabelle, Anwendungsfälle und Funktionsweise von Verteilungsformen.

Legen Sie beim Erstellen der Gruppe oder Aktualisieren der Zielform einer vorhandenen Gruppe eine Zielverteilungsform fest.

Beschränkungen

  • Wenn Sie die Zielverteilungsform auf BALANCED festlegen, müssen Sie die proaktive Umverteilung deaktivieren.
  • Wenn Sie die Zielverteilungsform auf BALANCED oder ANY festlegen, gelten die folgenden Einschränkungen:
    • Autoscaling wird nicht unterstützt. Sie können die Größe der MIG festlegen oder selbst Instanzen hinzufügen.
    • Canary-Updates mit zwei Versionen werden nicht unterstützt.
    • Im Fall einer begrenzten Verfügbarkeit von angeforderten Ressourcen in der gesamten Region kann die Gruppe die Erstellung von VM-Instanzen in einer Zone planen, in der die Ressourcen bereits nicht verfügbar sind. Sie können versuchen, die Gruppengröße zu reduzieren und zu erhöhen, um die angeforderten Ressourcen in anderen Zonen zu erhalten.
    • Rolling Updates, die die Ersetzungsmethode SUBSTITUTE verwenden, versuchen, die neuen aktualisierten Instanzen in derselben Zone wie die veralteten Maschinen zu erstellen, auch wenn die Zone keine Ressourcen haben, die den Anforderungen der neuen Version entsprechen. Sie können dieses Verhalten umgehen, indem Sie die veralteten VMs aus der eingeschränkten Zone löschen und anschließend die Gruppengröße um die Anzahl der gelöschten VMs erhöhen. Die Gruppe erstellt Instanzen aus der neuesten Vorlage in Zonen, in denen Kapazität verfügbar ist.

Gruppe mit Zielverteilungsform erstellen

Verwenden Sie die Cloud Console, das gcloud-Tool oder die Compute Engine API.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.
  3. Wählen Sie eine der Optionen für die neue verwaltete Instanzgruppe aus: zustandslos (Standardeinstellung) oder zustandsorientiert.
  4. Wählen Sie unter Standort die Option Mehrere Zonen aus.
  5. Wählen Sie eine Region aus.
  6. Klicken Sie zur Auswahl bestimmter Zonen auf Zonen konfigurieren, um die zu verwendenden Zonen auszuwählen.
  7. Wählen Sie eine Zielverteilungsform aus.
    1. Wenn Sie Beliebig oder Ausgeglichen auswählen möchten, klicken Sie im Abschnitt Autoscaling auf Autoscaling-Konfiguration löschen.
    2. Wenn Sie Ausgeglichen auswählen möchten, wählen Sie im Abschnitt Weiterverteilung von Instanzen nicht die Option Instanzumverteilung aktivieren aus.
    3. Wählen Sie im Bereich Zielverteilungsform eine Form aus.
  8. Wählen Sie eine Instanzvorlage für die Instanzgruppe aus oder erstellen Sie eine neue Vorlage.
  9. Geben Sie die Anzahl der VMs für diese Gruppe an. Denken Sie bei hochverfügbaren Arbeitslasten daran, genügend VMs bereitzustellen, um Ihre Anwendung bei einem Zonenausfall zu unterstützen.
  10. Fahren Sie nun mit dem Erstellen der MIG fort.

gcloud

Verwenden Sie den Befehl gcloud beta compute instance-groups managed create und fügen Sie das Flag --target-distribution-shape ein.

gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    [--zones ZONES \]
    --target-distribution-shape SHAPE

Dabei gilt:

  • INSTANCE_GROUP_NAME: Name der Instanzgruppe.
  • TEMPLATE: Name der Instanzvorlage, die für die Gruppe verwendet werden soll.
  • SIZE: Zielgröße der Instanzgruppe.
  • ZONES (optional): Liste der Zonen in der Region, in der Sie VM-Instanzen bereitstellen möchten.
  • SHAPE: Zielverteilungsform. Dies kann einer der folgenden Werte sein:
    • EVEN (Standardeinstellung): Die Gruppe plant das Erstellen und Löschen der VM-Instanz, um eine gleichmäßige Anzahl verwalteter Instanzen in den ausgewählten Zonen zu erreichen. Die Verteilung gilt als gleichmäßig, wenn sich die Anzahl der verwalteten Instanzen zwischen zwei Zonen nicht um mehr als 1 unterscheidet. Empfohlen für hochverfügbare Bereitstellungsarbeitslasten.
    • BALANCED: Die Gruppe priorisiert die Gewinnung von Ressourcen. Dabei werden VMs in Zonen geplant, in denen Ressourcen verfügbar sind. Außerdem werden VMs so gleichmäßig wie möglich auf die ausgewählten Zonen verteilt, um die Auswirkungen eines Zonenausfalls zu minimieren. Empfohlen für hochverfügbare Bereitstellungs- oder Batcharbeitslasten, für die kein Autoscaling erforderlich ist.
    • ANY: Die Gruppe wählt Zonen zum Erstellen von VM-Instanzen aus, um die angeforderte Anzahl von VMs innerhalb der aktuellen Ressourceneinschränkungen zu erreichen und die Nutzung nicht verwendeter zonaler Reservierungen zu maximieren. Empfohlen für Batcharbeitslasten, für die keine Hochverfügbarkeit erforderlich ist.

Wenn Sie beispielsweise eine regionale MIG mit einer ausgewogenen Zielverteilungsform erstellen möchten, setzen Sie das Flag --target-distribution-shape auf balanced.

gcloud beta compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape BALANCED \
    --instance-redistribution-type NONE

API

Rufen Sie die Methode regionInstanceGroupManagers.insert auf. In the request body, include thedistributionPolicyproperty, and set itstargetShape-Feld.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ],
        "targetShape": SHAPE
    }
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Instanzgruppe.
  • INSTANCE_GROUP_NAME: Name der Instanzgruppe.
  • TEMPLATE: Name der Instanzvorlage, die für die Instanzgruppe verwendet werden soll.
  • SIZE: Zielgröße der Instanzgruppe.
  • ZONE: Name einer Zone in der Region, in der Sie VM-Instanzen bereitstellen möchten.
  • SHAPE: Zielverteilungsform. Dies kann einer der folgenden Werte sein:
    • EVEN (Standardeinstellung): Die Gruppe plant das Erstellen und Löschen der VM-Instanz, um eine gleichmäßige Anzahl verwalteter Instanzen in den ausgewählten Zonen zu erreichen. Die Verteilung gilt als gleichmäßig, wenn sich die Anzahl der verwalteten Instanzen zwischen zwei Zonen nicht um mehr als 1 unterscheidet. Empfohlen für hochverfügbare Bereitstellungsarbeitslasten.
    • BALANCED: Die Gruppe priorisiert die Gewinnung von Ressourcen. Dabei werden VMs in Zonen geplant, in denen Ressourcen verfügbar sind. Außerdem werden VMs so gleichmäßig wie möglich auf die ausgewählten Zonen verteilt, um die Auswirkungen eines Zonenausfalls zu minimieren. Empfohlen für hochverfügbare Bereitstellungs- oder Batcharbeitslasten, für die kein Autoscaling erforderlich ist.
    • ANY: Die Gruppe wählt Zonen zum Erstellen von VM-Instanzen aus, um die angeforderte Anzahl von VMs innerhalb der aktuellen Ressourceneinschränkungen zu erreichen und die Nutzung nicht verwendeter zonaler Reservierungen zu maximieren. Empfohlen für Batcharbeitslasten, für die keine Hochverfügbarkeit erforderlich ist.

Zielverteilungsform einer vorhandenen Gruppe ändern

Sie können die Zielverteilungsform in einer vorhandenen regionalen MIG ändern. Dabei gelten allerdings folgende Einschränkungen:

  • Wenn Sie die Zielverteilungsform in BALANCED ändern möchten, müssen Sie zuerst die proaktive Umverteilung deaktivieren.
  • Wenn Sie die Zielverteilungsform in EVEN ändern möchten und die aktuelle Verteilung der Instanzen ungleichmäßig ist, müssen Sie zuerst die proaktive Umverteilung deaktivieren.
  • Wenn Sie die Form in EVEN ändern und die proaktive Umverteilung wieder aktivieren möchten, müssen Sie zuerst die Gruppe manuell neu ausgleichen.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf den Namen der Instanzgruppe, deren Zielverteilungsform Sie ändern möchten.
  3. Klicken Sie auf Gruppe bearbeiten, um die verwaltete Instanzgruppe zu bearbeiten.
  4. Geben Sie unter Zielverteilungsform die gewünschte Form an.
  5. Klicken Sie auf Speichern, um die neue Vorlage anzuwenden.

gcloud

Verwenden Sie den Befehl gcloud beta compute instance-groups managed update und fügen Sie das Flag --target-distribution-shape ein.

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

Dabei gilt:

  • INSTANCE_GROUP_NAME: Name der Instanzgruppe.
  • SHAPE: Zielverteilungsform. Dies kann einer der folgenden Werte sein:
    • EVEN (Standardeinstellung): Die Gruppe plant das Erstellen und Löschen der VM-Instanz, um eine gleichmäßige Anzahl verwalteter Instanzen in den ausgewählten Zonen zu erreichen. Die Verteilung gilt als gleichmäßig, wenn sich die Anzahl der verwalteten Instanzen zwischen zwei Zonen nicht um mehr als 1 unterscheidet. Empfohlen für hochverfügbare Bereitstellungsarbeitslasten.
    • BALANCED: Die Gruppe priorisiert die Gewinnung von Ressourcen. Dabei werden VMs in Zonen geplant, in denen Ressourcen verfügbar sind. Außerdem werden VMs so gleichmäßig wie möglich auf die ausgewählten Zonen verteilt, um die Auswirkungen eines Zonenausfalls zu minimieren. Empfohlen für hochverfügbare Bereitstellungs- oder Batcharbeitslasten, für die kein Autoscaling erforderlich ist.
    • ANY: Die Gruppe wählt Zonen zum Erstellen von VM-Instanzen aus, um die angeforderte Anzahl von VMs innerhalb der aktuellen Ressourceneinschränkungen zu erreichen und die Nutzung nicht verwendeter zonaler Reservierungen zu maximieren. Empfohlen für Batcharbeitslasten, für die keine Hochverfügbarkeit erforderlich ist.

API

Rufen Sie die Methode regionInstanceGroupManagers.patch auf. Fügen Sie dabei im Anfragetext das Attribut distributionPolicy ein und legen Sie das zugehörige Feld targetShape fest.

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "distributionPolicy": {
        "targetShape": SHAPE
    }
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Instanzgruppe.
  • INSTANCE_GROUP_NAME: Name der Instanzgruppe.
  • SHAPE: Zielverteilungsform. Dies kann einer der folgenden Werte sein:
    • EVEN (Standardeinstellung): Die Gruppe plant das Erstellen und Löschen der VM-Instanz, um eine gleichmäßige Anzahl verwalteter Instanzen in den ausgewählten Zonen zu erreichen. Die Verteilung gilt als gleichmäßig, wenn sich die Anzahl der verwalteten Instanzen zwischen zwei Zonen nicht um mehr als 1 unterscheidet. Empfohlen für hochverfügbare Bereitstellungsarbeitslasten.
    • BALANCED: Die Gruppe priorisiert die Gewinnung von Ressourcen. Dabei werden VMs in Zonen geplant, in denen Ressourcen verfügbar sind. Außerdem werden VMs so gleichmäßig wie möglich auf die ausgewählten Zonen verteilt, um die Auswirkungen eines Zonenausfalls zu minimieren. Empfohlen für hochverfügbare Bereitstellungs- oder Batcharbeitslasten, für die kein Autoscaling erforderlich ist.
    • ANY: Die Gruppe wählt Zonen zum Erstellen von VM-Instanzen aus, um die angeforderte Anzahl von VMs innerhalb der aktuellen Ressourceneinschränkungen zu erreichen und die Nutzung nicht verwendeter zonaler Reservierungen zu maximieren. Empfohlen für Batcharbeitslasten, für die keine Hochverfügbarkeit erforderlich ist.

Konfigurierte Richtlinie zur Instanzverteilung aufrufen

Console

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

    Zur Seite "Instanzgruppen"

    Wenn Sie bereits Instanzgruppen haben, werden sie auf dieser Seite aufgelistet.
  2. Klicken Sie auf den Namen der Instanzgruppe, die Sie sich ansehen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe und einer Liste der zur Gruppe gehörenden Instanzen angezeigt.
  3. Klicken Sie auf Details und suchen Sie nach dem Abschnitt Zielverteilungsform.

gcloud

Führen Sie den Befehl gcloud beta compute instance-groups managed describe aus:

gcloud beta compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

Der Befehl gibt die Details der Gruppe zurück, einschließlich des Felds distributionPolicy.targetShape:

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

API

Senden Sie eine GET-Anfrage an die Methode regionInstanceGroupManagers.get.

GET https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Instanzgruppe.
  • INSTANCE_GROUP_NAME: Name der Instanzgruppe.

Die Zielverteilungsform wird im Feld distributionPolicy.targetShape zurückgegeben. Beispiel:

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

Proaktive Umverteilung von Instanzen deaktivieren und wieder aktivieren

Bei der proaktiven Umverteilung von Instanzen wird für die ausgewählten Zonen in der Region eine gleichmäßige Anzahl von VMs beibehalten. Mit dieser Konfiguration bleiben Anwendungen im Falle eines Ausfalls auf Zonenebene maximal verfügbar.

Die proaktive Umverteilung von Instanzen ist für regionale MIGs standardmäßig aktiviert. Für MIGs ohne Autoscaling können Sie dieses Feature allerdings deaktivieren. Wenn die proaktive Umverteilung von Instanzen deaktiviert ist, versucht die Gruppe nicht, VMs proaktiv über Zonen zu verteilen. Dies ist in folgenden Fällen nützlich:

  • Wenn Sie verwaltete Instanzen aus der Gruppe manuell löschen oder verwerfen müssen, ohne dass andere aktive VMs davon betroffen sind
  • Wenn Sie eine Batch-Worker-VM nach Abschluss des Jobs automatisch löschen möchten, ohne dass dies Auswirkungen auf andere Worker hat
  • Wenn Sie VMs mit zustandsorientierten Anwendungen durch proaktive Umverteilung von Instanzen vor unbeabsichtigtem automatischem Löschen schützen möchten

Sie können eine regionale MIG mit deaktivierter proaktiver Umverteilung von Instanzen mit der Cloud Console, dem gcloud-Tool oder der Compute Engine API erstellen. Außerdem haben Sie damit Möglichkeit, die proaktive Umverteilung von Instanzen für eine vorhandene Gruppe zu deaktivieren bzw. zu aktivieren.

Gruppe mit deaktivierter proaktiver Umverteilung von Instanzen erstellen

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.
  3. Wählen Sie unter Standort die Option Mehrere Zonen aus.
  4. Wählen Sie eine Region aus.
  5. Klicken Sie zur Auswahl bestimmter Zonen auf Zonen konfigurieren, um die zu verwendenden Zonen auszuwählen.
  6. So deaktivieren Sie die proaktive Umverteilung von Instanzen:
    1. Achten Sie darauf, dass Automatischer Skalierungsmodus auf Kein Autoscaling festgelegt ist.
    2. Setzen Sie Umverteilung von Instanzen auf Aus.
  7. Wählen Sie eine Instanzvorlage für die Gruppe aus oder erstellen Sie eine neue.
  8. Geben Sie die Anzahl der VMs für diese Gruppe an. Denken Sie daran, genügend VMs bereitzustellen, um den Anwendungsbetrieb bei einem Zonenfehler aufrechtzuerhalten.
  9. Fahren Sie nun mit dem Erstellen der MIG fort.

gcloud

Wenn Sie eine neue regionale MIG ohne proaktive Umverteilung von Instanzen erstellen möchten, verwenden Sie den Befehl gcloud compute instance-groups managed create. Das Flag --instance-redistribution-type muss dabei auf NONE gesetzt werden.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

Dabei gilt:

  • INSTANCE_GROUP_NAME: Name der MIG.
  • INSTANCE_TEMPLATE_NAME: Name der Instanzvorlage, die für die Gruppe verwendet werden soll.
  • TARGET_SIZE: angestrebte Größe der Gruppe.
  • ZONES: Liste der Zonen in einer einzelnen Region, in der Sie VMs bereitstellen möchten.

Beispiel:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --instance-redistribution-type NONE

API

Wenn Sie eine regionale MIG ohne Autoscaling und ohne proaktive Umverteilung von Instanzen erstellen möchten, stellen Sie eine POST-Anfrage an die Methode regionInstanceGroupManagers.insert. Fügen Sie dabei im Anfragetext das Attribut updatePolicy ein und legen Sie das Feld instanceRedistributionType auf NONE fest.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": "TARGET_SIZE",
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Instanzgruppe.
  • INSTANCE_GROUP_NAME: Name der MIG.
  • INSTANCE_TEMPLATE_NAME: Name der Instanzvorlage, die für die Gruppe verwendet werden soll.
  • TARGET_SIZE: angestrebte Größe der Gruppe.
  • ZONE: Name einer Zone in der einzelnen Region, in der Sie VMs bereitstellen möchten

Proaktive Umverteilung von Instanzen deaktivieren

Bevor Sie die proaktive Umverteilung von Instanzen deaktivieren können, müssen Sie den Autoscaling-Modus so einstellen, dass Autoscaling deaktiviert wird oder dass nur horizontal skaliert wird.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Wählen Sie die zu aktualisierende MIG aus und klicken Sie auf Gruppe bearbeiten.
  3. Wenn eine Autoscaling-Konfiguration vorhanden ist, achten Sie darauf, dass der Autoscaling-Modus auf Kein Autoscaling eingestellt ist.
  4. Setzen Sie Weiterverteilung von Instanzen auf Aus, um die automatische Umverteilung zu deaktivieren.
  5. Klicken Sie auf Speichern.

gcloud

Verwenden Sie den Befehl compute instance-groups managed update und setzen Sie das Flag --instance-redistribution-type auf NONE, um die proaktive Umverteilung von Instanzen für eine regionale MIG ohne Autoscaling zu deaktivieren.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION

Dabei gilt:

  • INSTANCE_GROUP_NAME: Name der MIG.
  • REGION: Region der Instanzgruppe.

API

Wenn Sie die proaktive Umverteilung von Instanzen für eine regionale MIG ohne Autoscaling deaktivieren möchten, stellen Sie eine PATCH-Anfrage an die Methode regionInstanceGroupManagers.patch. Fügen Sie dabei im Anfragetext das Attribut updatePolicy ein und legen Sie das Feld instanceRedistributionType auf NONE fest.

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/[INSTANCE_GROUP_NAME

{
    "updatePolicy": {
         "instanceRedistributionType": "NONE"
    }
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID für diese Anfrage.
  • REGION: Region für die Instanzgruppe.
  • INSTANCE_GROUP_NAME: Name einer MIG ohne Autoscaling.

Proaktive Instanzverteilung aktivieren

Wenn Sie die proaktive Instanzverteilung aktivieren möchten, können Sie einen ähnlichen Befehl wie zum Deaktivieren der proaktiven Umverteilung von Instanzen verwenden. Setzen Sie den Typ für die Umverteilung von Instanzen hierbei aber auf PROACTIVE.

Wenn Sie einige verwalteten Instanzen manuell gelöscht oder verworfen haben und die verbleibenden VMs in der Region jetzt ungleichmäßig verteilt sind, müssen Sie die Gruppe manuell neu ausgleichen, bevor Sie die proaktive Umverteilung von Instanzen wieder aktivieren können. Die Anzahl der VMs zwischen zwei Zonen sollte sich um nicht mehr als eine VM unterscheiden.

In einer regionalen MIG ist es nicht möglich, die proaktive Umverteilung von Instanzen zu aktivieren, wenn VMs ungleichmäßig auf Zonen verteilt sind, d. h., wenn sich die Anzahl der VMs in zwei Zonen um mindestens zwei VMs unterscheidet. Dies soll ein unbeabsichtigtes automatisches Löschen von VMs aus Zonen mit mehr VMs verhindern, das ausgelöst werden würde, um eine gleichmäßige Verteilung zu erreichen.

Regionale MIG manuell ausgleichen

Eine MIG ist nicht ausgeglichen, wenn sich die Anzahl der VMs in zwei Zonen um mindestens zwei VMs unterscheidet. Eine MIG kann nicht mehr ausgeglichen werden, wenn Sie die proaktive Umverteilung von Instanzen deaktivieren und dann Instanzen löschen oder verwerfen, um eine ungleichmäßige Verteilung zwischen Zonen zu erreichen.

Manuell erreichen Sie eine gleichmäßige Verteilung von Instanzen auf Zonen, indem Sie VMs aus Zonen mit mehr Instanzen löschen oder die Größe der Gruppe ändern, um die Zonen mit weniger VMs zu füllen, bis die Verteilung gleichmäßig ist.

Wenn Sie die Größe einer MIG ändern, bei der die proaktive Umverteilung von Instanzen deaktiviert ist, nähert sich die Gruppe trotzdem weiter opportunistisch einer gleichmäßigen Verteilung an. Jeder Vorgang der Größenänderung wird dabei als Gelegenheit betrachtet, die Gruppe auszugleichen.

  • Wenn die Gruppe wächst, versucht sie immer, den Zonen mit der kleinsten Anzahl von VMs VMs hinzuzufügen.
  • Wenn die Gruppe hingegen schrumpft, entfernt sie VMs immer aus den Zonen mit der größten Anzahl von VMs.
Beispiel für die manuelle Größenänderung einer Gruppe, um eine gleichmäßige Umverteilung zu erreichen

Ausfall einer Zone für eine regionale MIG simulieren

Wenn Sie testen möchten, ob die Überdimensionierung der regionalen MIG ausreicht und die MIG einen Zonenausfall überstehen kann, können Sie anhand des folgenden Beispiels den Ausfall einer einzelnen Zone simulieren.

Im Standardszenario wird durch dieses Skript Apache beendet und gestartet. Wenn dies für Ihre Anwendung nicht zutrifft, ersetzen Sie die Befehle, die Apache starten und beenden, durch ein eigenes Fehler- und Wiederherstellungsszenario.

  1. Stellen Sie dieses Skript in jeder VM in der Gruppe bereit und führen Sie es kontinuierlich aus. Dazu können Sie das Skript der Instanzvorlage hinzufügen oder es in ein benutzerdefiniertes Image einbeziehen und das Image in der Instanzvorlage verwenden.

    #!/usr/bin/env bash
    
    # Copyright 2016 Google Inc. All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    set -o nounset
    set -o errexit
    set -o pipefail
    
    function GetMetadata() {
      curl -s "$1" -H "Metadata-Flavor: Google"
    }
    
    PROJECT_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/project/attributes"
    INSTANCE_METADATA_URL="http://metadata.google.internal/computeMetadata/v1/instance"
    ZONE=$(GetMetadata "$INSTANCE_METADATA_URL/zone" | cut -d '/' -f 4)
    INSTANCE_NAME=$(hostname)
    
    # We keep track of the state to make sure failure and recovery is triggered only once.
    STATE="healthy"
    while true; do
      if [[ "$ZONE" = "$(GetMetadata $PROJECT_METADATA_URL/failed_zone)" ]] && \
         [[ "$INSTANCE_NAME" = *"$(GetMetadata $PROJECT_METADATA_URL/failed_instance_names)"* ]]; then
        if [[ "$STATE" = "healthy" ]]; then
          STATE="failure"
          # Do something to simulate failure here.
          echo "STARTING A FAILURE"
          /etc/init.d/apache2 stop
        fi
      else
        if [[ "$STATE" = "failure" ]] ; then
          STATE="healthy"
          # Do something to recover here.
          echo "RECOVERING FROM FAILURE"
          /etc/init.d/apache2 start
        fi
      fi
      sleep 5
    done
    
    
  2. Simulieren Sie einen Zonenausfall, indem Sie diese beiden Projektmetadatenfelder festlegen:

    • failed_zone: Legt die Zone fest, in der der Ausfall simuliert werden soll. Dadurch wird der Fehler auf nur eine Zone beschränkt.
    • failed_instance_names: Wählen Sie die VMs, die deaktiviert werden sollen, anhand des Namens aus. So begrenzen Sie den Ausfall auf jene VM-Namen, die diesen String enthalten.

    Sie können diese Metadaten mit dem gcloud-Tool festlegen. Durch den folgenden Befehl wird z. B. für den Zonenausfall die Zone europe-west1-b festgelegt. Er betrifft VMs, deren Name mit base-instance-name beginnt:

    gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
  3. Nachdem Sie den Ausfall simuliert haben, stellen Sie die Zone wieder her, indem Sie die Metadatenschlüssel entfernen:

    gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names

Einige Beispiele für Fehlerszenarios, die Sie mit diesem Skript ausführen können:

  • Beenden Sie die Anwendung vollständig, um zu sehen, wie die MIG reagiert.
  • Legen Sie fest, dass die VMs bei Load-Balancing-Systemdiagnosen als "fehlerhaft" zurückgegeben werden.
  • Ändern Sie iptables so, dass ein Teil des Traffics zu und von der VM blockiert wird.
  • Fahren Sie die VMs herunter. Standardmäßig werden sie von der regionalen MIG kurz darauf neu erstellt. Die neue Instanz fährt sich aber selbst herunter, sobald das Skript ausgeführt wird und solange die Metadatenwerte festgelegt sind. Dies führt zu einer Absturzschleife.

Nächste Schritte