Skalierung auf Basis von Monitoring-Messwerten


Durch das Autoscaling auf Basis von Cloud Monitoring-Messwerten können Sie die Kapazität entsprechend den Messwerten Ihrer Anwendung anpassen. Wenn Sie eine MIG anhand eines Messwerts automatisch skalieren, erstellt das Autoscaling VMs, wenn der Messwert zunimmt, und löscht VMs, wenn der Wert sinkt.

Sie können beispielsweise definieren, wie viele VMs Sie pro Nutzerzahl, Latenz oder der Anzahl der Nachrichten in einem Pub/Sub-Abo benötigen. Sie können die integrierten Messwerte verwenden, die vom Monitoringdienst bereitgestellt werden, oder die benutzerdefinierten Messwerte, die Sie aus Ihrer Anwendung exportieren.

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG) anhand von Monitoringmesswerten automatisch skalieren.

Sie können MIGs auch anhand von CPU-Auslastung, Load-Balancing-Bereitstellungskapazität oder Zeitplänen automatisch skalieren.

Hinweise

  • Grundlagen von Autoscaling
  • Informationen zu den Monitoring-Messwertkonzepten, die in einer Autoscaling-Konfiguration verwendet werden.
  • Wenn das Autoscaling auf einem Ops-Agent-Messwert basieren soll, installieren Sie den Ops-Agent.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.

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

    Console

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

    gcloud

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

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

    REST

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

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

      gcloud init

Beschränkungen

Die Skalierung anhand von Monitoring-Messwerten unterliegt den Beschränkungen für alle Autoscalings plus folgenden Einschränkungen:

  • Sie können das Autoscaling anhand von bis zu fünf Monitoring-Messwerten pro MIG konfigurieren.
  • Sie können ein Autoscaling auf der Grundlage von Messwerten durchführen, die nur die Werttypen INT64 oder DOUBLE haben. Andere Werttypen werden nicht unterstützt.
  • Sie können denselben Messwert nicht mehr als einmal in einer Autoscaling-Richtlinie konfigurieren.

Autoscaling anhand von Monitoring-Messwerten konfigurieren

Sie können Monitoring-Messwertwerte für das Autoscaling auf zwei verschiedene Arten verwenden:

  • Nutzungsziel: Wenn das Autoscaling einen Messwert bei einem bestimmten Wert halten soll, konfigurieren Sie ein Nutzungsziel. Das Autoscaling erstellt VMs, wenn der Messwert über dem Ziel liegt, und löscht VMs, wenn der Messwert unter dem Ziel liegt. Dies ist für Messwerte wie Netzwerk-Traffic, Arbeitsspeicher-/Laufwerksnutzung oder die durchschnittliche Latenz Ihrer Anwendung nützlich. Das folgende Diagramm zeigt, wie das Autoscaling VMs als Reaktion auf einen Messwert hinzufügt und entfernt, um das Nutzungsziel aufrechtzuerhalten.

    Autoscaling, das VMs hinzufügt und entfernt, um ein Nutzungsziel aufrechtzuerhalten.

  • Zuweisung einzelner Instanzen: Wenn Sie das Autoscaling darauf basierend möchten, wie viele Aufgaben den einzelnen VMs zugeordnet werden können, konfigurieren Sie eine Einzelinstanz-Zuweisung. Die erstellte Einzelinstanz-Zuweisung gibt an, wie viele Aufgaben die einzelnen VMs ausführen sollen. Das Autoscaling teilt den Messwert durch den Wert der Einzelinstanz-Zuweisung, um zu berechnen, wie viele VMs benötigt werden. Beispiel: Wenn der Messwert 100 beträgt und die Einzelinstanz-Zuweisung 5 ist, erstellt das Autoscaling 20 VMs in der MIG. Dies ist hilfreich für Messwerte zur Arbeitsdauer, darunter die Pub/Sub-Warteschlangenlänge oder die Anzahl der Batch-Jobs. Die Einzelinstanz-Zuweisung gilt nicht für Messwerte, die von jeder VM stammen. Das folgende Diagramm zeigt die proportionale Beziehung zwischen dem Messwert und der Anzahl der VMs bei der Skalierung mit einer Einzelinstanz-Zuweisung.

    Die proportionale Beziehung zwischen dem Messwert und der Anzahl der Instanzen.

Automatisch skalieren, um einen Messwert auf einem Zielwert zu halten

Wenn Sie einen Messwert auf einem Zielwert halten möchten, geben Sie ein Nutzungsziel an. Das Autoscaling erstellt VMs, wenn der Messwert über dem Ziel liegt, und löscht VMs, wenn der Messwert unter dem Ziel liegt.

  • Wenn die Messwerte von allen einzelnen VMs in Ihrer MIG stammen, berechnet das Autoscaling den durchschnittlichen Messwert für alle VMs in der MIG und vergleicht ihn mit dem Nutzungsziel. Beispiel: Wenn Sie das Autoscaling mit dem Messwert tcp_connections vornehmen möchten, der die Anzahl der TCP-Verbindungen auf einer VM angibt, verwendet das Autoscaling zum Vergleich mit dem Zielwert einen Durchschnittswert an TCP-Verbindungen über alle VMs der MIG hinweg. Wenn Sie solche von einer VM stammenden Messwerte verwenden, kann die MIG nicht auf 0 herunterskaliert werden, da das Autoscaling mindestens eine VM benötigt, um einen Messwert zu veröffentlichen.

  • Wenn der Messwert für die gesamte MIG gilt und nicht von den VMs in Ihrer MIG stammt, vergleicht das Autoscaling den Messwert mit dem Nutzungsziel. Sie können beispielsweise einen benutzerdefinierten Messwert verwenden, der die Latenz Ihrer Anwendung misst.

Wenn Ihr Messergebnis mehrere Werte enthält, wenden Sie einen Filter an, um automatisch auf Basis eines bestimmten Werts aus dem Messergebnis zu skalieren. Weitere Informationen zu Messwertfiltern und anderen für Ihre Konfiguration relevanten Feldern finden Sie unter Messwertkonzepte überwachen.

Console

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

    Zu den Instanzgruppen

  2. Wenn Sie keine verwaltete Instanzgruppe haben, erstellen Sie eine. Klicken Sie andernfalls auf den Namen einer MIG in der Liste, um die Seite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Wenn unter Autoscaling im Abschnitt Autoscaling-Signale ein Signal für einen Cloud Monitoring-Messwert vorhanden ist, klicken Sie zum Bearbeiten darauf oder auf Signal hinzufügen, um ein neues Signal hinzuzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Führen Sie im sich öffnenden Bereich Ressource und Messwert die folgenden Schritte aus:

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie den Messwert aus, den Sie für das Autoscaling verwenden möchten. Sie können die Messwerte nach beliebigen Keywords filtern, z. B. Speicher, Byte, Laufwerk.
      2. Klicken Sie auf Anwenden. Im Bereich wird ein Diagramm mit den Daten des ausgewählten Messwerts angezeigt.
    2. Wenn Sie bestimmte Daten aus dem Messwert verwenden möchten, fügen Sie einen Filter anhand von Labels hinzu. Gehen Sie dafür so vor:

      1. Klicken Sie im Abschnitt Filter auf Filter hinzufügen.
      2. Wählen Sie ein Label aus und geben Sie einen Wert ein.
      3. Klicken Sie auf Fertig. Das Diagramm wird aktualisiert und zeigt den gefilterten Wert des Messwerts an.
    3. Sie können den aggregierten Wert des Messwerts aufrufen, der zum automatischen Skalieren Ihrer MIG verwendet wird. Wählen Sie dazu die Schaltfläche Aggregation im Diagramm anzeigen. Das Diagramm wird aktualisiert und zeigt den aggregierten Wert an.

    4. Wählen Sie unter Messwertzieloptionen für das Autoscaling die Option Nutzungsziel aus.

    5. Machen Sie folgende Angaben:

      1. Nutzungsziel: Geben Sie den Wert an, den das Autoscaling beibehalten muss. Dieser Wert muss eine positive Ziffer sein. Sowohl 24.5 als auch 100 sind beispielsweise gültige Werte.
      2. Nutzungszieltyp: Wählen Sie einen Zieltyp aus, der der Messungsart des Messwerts entspricht. Für genaue Vergleiche, wenn das Nutzungsziel pro Sekunde gemessen wird, verwenden Sie Delta/Sek. als Zieltyp. Verwenden Sie entsprechend Delta/Min. für ein Nutzungsziel, das pro Minute gemessen wird.
        • Gauge: Das Autoscaling berechnet den durchschnittlichen Wert der in den letzten Minuten erfassten Daten und vergleicht ihn mit dem Nutzungsziel.
        • Delta/Min.: Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Minute und vergleicht sie mit dem Nutzungsziel.
        • Delta/Sek.: Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Sekunde und vergleicht sie mit dem Nutzungsziel.
    6. Wenn Sie mit der Konfiguration des Messwerts fertig sind, klicken Sie auf Auswählen.

  8. Prüfen Sie die Messwertdetails und klicken Sie auf Fertig.

  9. Klicken Sie auf Speichern, um die Konfiguration abzuschließen.

gcloud

Verwenden Sie den Befehl set-autoscaling, um das Autoscaling anhand von Monitoring-Messwerten zu konfigurieren.

Verwenden Sie folgenden Befehl, um ein Autoscaling basierend auf einem Monitoring-Messwert mit einem Nutzungsziel durchzuführen.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

Wenn Ihr Messwert mehrere Werte enthält und Sie einen einzelnen Wert für das Autoscaling nutzen möchten, verwenden Sie das --stackdriver-metric-filter-Flag, wie im folgenden Befehl angegeben.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE \
  --stackdriver-metric-filter="METRIC_FILTER"

Dabei gilt:

  • MIG_NAME: Die MIG, der Sie Autoscaling hinzufügen möchten.
  • MAX_INSTANCES: Die maximale Anzahl an VMs, die von der MIG verwendet werden können.
  • MIN_INSTANCES: Mindestzahl an VMs, die die MIG haben muss.
  • METRIC_URL: Eine protokollfreie URL eines Monitoring-Messwerts. Beispiel: compute.googleapis.com/instance/uptime Wenn Sie einen benutzerdefinierten Messwert verwenden, muss er die Anforderungen für benutzerdefinierte Messwerte erfüllen.
  • TARGET_VALUE: Der Messwert, den das Autoscaling aufrechtzuerhalten versucht.
  • TARGET_TYPE: Der Werttyp des Messwerts.
    • gauge das Autoscaling berechnet den durchschnittlichen Wert der in den letzten Minuten erfassten Daten und vergleicht ihn mit dem Nutzungsziel.
    • delta-per-minute das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Minute und vergleicht sie mit dem Nutzungsziel.
    • delta-per-second das Autoscaling berechnet das durchschnittliche Wachstum pro Sekunde und vergleicht es mit dem Nutzungsziel. Wenn Sie das Nutzungsziel in Sekunden festlegen möchten, verwenden Sie für genaue Vergleiche delta-per-second als Zieltyp. Verwenden Sie entsprechend delta-per-minute für ein Nutzungsziel in Minuten.
  • METRIC_FILTER: Wenden Sie einen Filter an, um einen einzelnen Wert aus einem Messergebnis mit mehreren Werten zu verwenden und den Typ der überwachten Ressource anzugeben. Wenn Sie einen Messwert von jeder VM verwenden, müssen Sie den Typ der überwachten Ressource nicht angeben, da gce_instance standardmäßig verwendet wird. Verwenden Sie für andere Messwerte resource.type im Filterausdruck, um die überwachte Ressource anzugeben. Weitere Informationen zum Messwertfilter finden Sie unter Konzepte der Messwertüberwachung.

Eine vollständige Liste der verfügbaren Befehle und Flags für die gcloud CLI finden Sie in der gcloud-Referenz.

REST

Verwenden Sie die autoscalers-Ressource oder, bei regionalen MIGs, die regionAutoscalers-Ressource, um Autoscaling anhand von Monitoring-Messwerten für eine zonale MIG zu konfigurieren.

Führen Sie folgenden Aufruf aus, um eine zonale MIG anhand eines Monitoring-Messwerts mit einem Nutzungsziel automatisch zu skalieren.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE
    }
  ],
 }
}

Wenn Ihr Messergebnis mehrere Werte enthält und Sie einen einzelnen Wert für das Autoscaling verwenden möchten, verwenden Sie den Parameter filter wie im folgenden API-Aufruf angegeben.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE,
      "filter": "METRIC_FILTER"
    }
  ],
 }
}

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • ZONE: Die Zone, in der sich die MIG befindet.
  • AUTOSCALER_NAME: Der Name des Autoscalings.
  • MIG_NAME: Die MIG, der Sie Autoscaling hinzufügen möchten.
  • MAX_INSTANCES: Die maximale Anzahl an VMs, die von der MIG verwendet werden können.
  • MIN_INSTANCES: Mindestzahl an VMs, die die MIG haben muss.
  • METRIC_URL: Eine protokollfreie URL eines Monitoring-Messwerts. Beispiel: compute.googleapis.com/instance/uptime Wenn Sie einen benutzerdefinierten Messwert verwenden, muss er die Anforderungen für benutzerdefinierte Messwerte erfüllen.
  • TARGET_VALUE: Der Messwert, den das Autoscaling aufrechtzuerhalten versucht.
  • TARGET_TYPE: Der Werttyp des Messwerts.
    • GAUGE: Das Autoscaling berechnet den durchschnittlichen Wert der in den letzten Minuten erfassten Daten und vergleicht ihn mit dem Nutzungsziel.
    • DELTA_PER_MINUTE Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Minute und vergleicht sie mit dem Nutzungsziel.
    • DELTA_PER_SECOND Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Sekunde und vergleicht sie mit dem Nutzungsziel. Wenn Sie das Nutzungsziel in Sekunden festlegen möchten, verwenden Sie für genaue Vergleiche DELTA_PER_SECOND als Zieltyp. Verwenden Sie entsprechend DELTA_PER_MINUTE für ein Nutzungsziel in Minuten.
  • METRIC_FILTER: Wenden Sie einen Filter an, um einen einzelnen Wert aus einem Messergebnis mit mehreren Werten zu verwenden und den Typ der überwachten Ressource anzugeben. Wenn Sie einen Messwert von jeder VM verwenden, müssen Sie den Typ der überwachten Ressource nicht angeben, da gce_instance standardmäßig verwendet wird. Bei anderen Messwerten müssen Sie die überwachte Ressource mit dem resource.type-Selektor angeben. Weitere Informationen zum Messwertfilter finden Sie unter Konzepte der Messwertüberwachung.

Automatisch anhand der Aufgaben skalieren, die pro VM in einer MIG verfügbar sind

Wenn Sie ein Autoscaling basierend auf der Menge der Aufgaben vornehmen möchten, die pro VM in einer MIG verfügbar sind, geben Sie eine Einzelinstanz-Zuweisung an. Der Wert der Einzelinstanz-Zuweisung gibt an, wie viele Aufgaben pro VM verarbeitet werden sollen. Das Autoscaling teilt den Messwert durch den Wert der Einzelinstanz-Zuweisung, um zu berechnen, wie viele VMs benötigt werden.

Der Messwert 0 gibt an, dass für Ihre MIG keine abzuschließenden Aufgaben vorhanden sind. Wenn die Mindestzahl an Instanzen Ihrer MIG auf 0 festgelegt ist und der Messwert auf 0 sinkt, wird die MIG auf 0 skaliert, bis sich der Messwert erhöht.

Wenn Ihr Messergebnis mehrere Werte enthält, wenden Sie einen Filter an, um automatisch auf Basis eines bestimmten Werts aus dem Messergebnis zu skalieren. Weitere Informationen zu Messwertfiltern und anderen für Ihre Konfiguration relevanten Feldern finden Sie unter Messwertkonzepte überwachen.

Console

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

    Zu den Instanzgruppen

  2. Wenn Sie keine verwaltete Instanzgruppe haben, erstellen Sie eine. Klicken Sie andernfalls auf den Namen einer MIG in der Liste, um die Seite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Wenn unter Autoscaling im Abschnitt Autoscaling-Signale ein Signal für einen Monitoring-Messwert vorhanden ist, klicken Sie zum Bearbeiten darauf oder klicken Sie auf Fügen Sie ein Signal hinzu, um einen neuen Messwert hinzuzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Führen Sie im sich öffnenden Bereich Ressource und Messwert die folgenden Schritte aus:

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie den Messwert aus, den Sie für das Autoscaling verwenden möchten. Sie können die Messwerte nach beliebigen Keywords filtern, z. B. Speicher, Byte, Laufwerk.
      2. Klicken Sie auf Anwenden. Im Bereich wird ein Diagramm mit den Daten des ausgewählten Messwerts angezeigt.
    2. Wenn Sie bestimmte Daten aus dem Messwert verwenden möchten, fügen Sie einen Filter anhand von Labels hinzu. Gehen Sie dafür so vor:

      1. Klicken Sie im Abschnitt Filter auf Filter hinzufügen.
      2. Wählen Sie ein Label aus und geben Sie einen Wert ein.
      3. Klicken Sie auf Fertig. Das Diagramm wird aktualisiert und zeigt den gefilterten Messwert an.
    3. Sie können den aggregierten Wert des Messwerts aufrufen, der zum automatischen Skalieren Ihrer MIG verwendet wird. Wählen Sie dazu die Schaltfläche Aggregation im Diagramm anzeigen. Das Diagramm wird aktualisiert und zeigt den aggregierten Wert an.

    4. Wählen Sie im Bereich Messwertzieloptionen für das Autoscaling die Option Einzel-VM-Instanzzuweisung aus.

    5. Geben Sie einen Wert für Einzelinstanz-Zuweisung an, der die Menge der Aufgaben darstellt, die jeder VM in der MIG zugewiesen werden soll.

    6. Wenn Sie mit der Konfiguration des Messwerts fertig sind, klicken Sie auf Auswählen.

  8. Prüfen Sie die Messwertdetails und klicken Sie auf Fertig.

  9. Klicken Sie auf Speichern, um die Konfiguration abzuschließen.

gcloud

Verwenden Sie den Befehl set-autoscaling, um das Autoscaling anhand von Monitoring-Messwerten zu konfigurieren.

Mit dem --stackdriver-metric-single-instance-assignment-Flag geben Sie im Befehl an, wie viele Aufgaben jede einzelne VM in der Gruppe übernehmen soll.

Mit folgendem Befehl wird ein Autoscaling erstellt, das auf der Aufgabenzuweisung pro VM basiert.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    --max-num-replicas=MAX_INSTANCES \
    --min-num-replicas=MIN_INSTANCES \
    --update-stackdriver-metric=METRIC_URL \
    --stackdriver-metric-filter="METRIC_FILTER" \
    --stackdriver-metric-single-instance-assignment=INSTANCE_ASSIGNMENT

Dabei gilt:

  • MIG_NAME: Der Name der MIG, der Sie Autoscaling hinzufügen möchten.
  • MAX_INSTANCES: Die maximale Anzahl an VMs, die von der MIG verwendet werden können.
  • MIN_INSTANCES: Mindestzahl an VMs, die die MIG haben muss.
  • METRIC_URL: Eine protokollfreie URL eines Monitoring-Messwerts. Beispiel: compute.googleapis.com/instance_group/size Wenn Sie einen benutzerdefinierten Messwert verwenden, muss er die Anforderungen für benutzerdefinierte Messwerte erfüllen.
  • METRIC_FILTER: Wenden Sie einen Filter an, um einen einzelnen Wert aus einem Messergebnis mit mehreren Werten zu verwenden und den Typ der überwachten Ressource anzugeben. Weitere Informationen zum Messwertfilter finden Sie unter Konzepte der Messwertüberwachung.
  • INSTANCE_ASSIGNMENT: Die Menge an Arbeit, die jeder Instanz in der MIG zugewiesen wird.

REST

Verwenden Sie die autoscalers-Ressource oder, bei regionalen MIGs, die regionAutoscalers-Ressource, um Autoscaling anhand von Monitoring-Messwerten für eine zonale MIG zu konfigurieren.

Mit dem Parameter singleInstanceAssignment geben Sie an, wie viele Aufgaben jede einzelne VM übernehmen soll.

Beispiel: Mit dem folgenden Aufruf können Sie ein Autoscaling erstellen, das eine zonale MIG anhand der Instanzzuweisung skaliert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers

{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "filter": "METRIC_FILTER",
      "singleInstanceAssignment": INSTANCE_ASSIGNMENT
    }
  ],
 }
}

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • ZONE: Die Zone, in der sich die MIG befindet.
  • AUTOSCALER_NAME: Der Name des Autoscalings.
  • MIG_NAME: Der Name der MIG, der Sie Autoscaling hinzufügen möchten.
  • MAX_INSTANCES: Die maximale Anzahl an VMs, die von der MIG verwendet werden können.
  • MIN_INSTANCES: Mindestzahl an VMs, die die MIG haben muss.
  • METRIC_URL: Eine protokollfreie URL eines Monitoring-Messwerts. Beispiel: compute.googleapis.com/instance_group/size Wenn Sie einen benutzerdefinierten Messwert verwenden, muss er die Anforderungen für benutzerdefinierte Messwerte erfüllen.
  • METRIC_FILTER: Wenden Sie einen Filter an, um einen einzelnen Wert aus einem Messergebnis mit mehreren Werten zu verwenden und den Typ der überwachten Ressource anzugeben. Weitere Informationen zum Messwertfilter finden Sie unter Konzepte der Messwertüberwachung.
  • INSTANCE_ASSIGNMENT: Die Menge an Arbeit, die jeder Instanz in der MIG zugewiesen wird.

Beispiele für das Autoscaling anhand von Messwerten

Dieser Abschnitt enthält einige Beispiele für Messwerte, die für das Autoscaling verwendet werden. Eine vollständige Liste der Messwerte finden Sie unter Google Cloud-Messwerte.

Autoscaling anhand eines benutzerdefinierten Messwerts

Es kann vorkommen, dass der Messwert, der ein relevantes Signal bereitstellt, nicht die Gesamtmenge der verfügbaren Arbeit oder eine andere Ressource darstellt, die für die Gruppe anwendbar ist, sondern stattdessen einen Durchschnitt, ein Perzentil oder eine andere statistische Eigenschaft. Im folgenden Beispiel wird davon ausgegangen, dass die Skalierung anhand der durchschnittlichen Verarbeitungslatenz der Gruppe erfolgt.

Ausgangssituation:

  • Eine MIG mit dem Namen our-instance-group wird für eine bestimmte Aufgabe zugewiesen. Die Gruppe befindet sich in der Zone us-central1-a.
  • Sie haben einen benutzerdefinierten Monitoring-Messwert, der einen Wert exportiert, der auf einem bestimmten Level gehalten werden soll. In diesem Beispiel wird davon ausgegangen, dass der Messwert die durchschnittliche Latenz von Verarbeitungsabfragen darstellt, die der Gruppe zugewiesen sind.
    • Der benutzerdefinierte Messwert heißt custom.googleapis.com/example_average_latency.
    • Der benutzerdefinierte Messwert hat ein Label mit einem Schlüssel namens group_name und einem Wert, der dem Namen der MIG, our-instance-group, entspricht.
    • Der benutzerdefinierte Messwert exportiert Daten für die globale überwachte Ressource, d. h., sie ist keiner bestimmten VM zugeordnet.

Sie haben festgestellt, dass Sie, wenn der Messwert über einen bestimmten Wert hinausgeht, der Gruppe weitere VMs hinzufügen müssen, um die Auslastung zu bewältigen. Wenn er hingegen sinkt, können Sie einige Ressourcen freigeben. Sie möchten, dass das Autoscaling VMs schrittweise in einer Menge hinzufügt oder entfernt, die proportional zur Abweichung des Messwerts vom Ziel ist. In diesem Beispiel wird davon ausgegangen, dass Ihr Zielwert 250 delta/sec ist.

Sie können das Autoscaling für die Gruppe mit dem Nutzungsziel 250 konfigurieren. Dies ist die Änderungsrate des Messwerts, die das Autoscaling aufrechtzuerhalten versucht:

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie unter Autoscaling im Abschnitt Autoscaling-Signale auf Signal hinzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Der Bereich Ressource und Messwert wird geöffnet.

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie unter Global > Benutzerdefinierte Messwerte Ihren Messwert aus.
      2. Klicken Sie auf Anwenden.
    2. Führen Sie im Abschnitt Filter folgende Schritte aus:
      1. Klicken Sie auf Filter hinzufügen.
      2. Wählen Sie im Drop-down-Menü Label die Option group_name aus.
      3. Geben Sie im Feld Wert our-instance-group ein.
      4. Klicken Sie auf Fertig. Das Diagramm wird aktualisiert und zeigt den gefilterten Wert aus dem Messwert an.
    3. Führen Sie im Abschnitt Messwertzieloptionen für das Autoscaling die folgenden Schritte aus:
      1. Wählen Sie Nutzungsziel aus.
      2. Geben Sie für das Nutzungsziel den Wert 250 ein.
      3. Legen Sie für den Nutzungszieltyp Delta/Sek. fest.
    4. Klicken Sie nach der Konfiguration des Messwerts auf Auswählen.
  8. Prüfen Sie die Messwertdetails und klicken Sie dann auf Fertig.

  9. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling our-instance-group \
  --zone=us-central1-a \
  --max-num-replicas=50 \
  --min-num-replicas=0 \
  --update-stackdriver-metric=custom.googleapis.com/example_average_latency \
  --stackdriver-metric-filter="metric.labels.group_name = \"our-instance-group\" AND resource.type = \"global\"" \
  --stackdriver-metric-utilization-target=250 \
  --stackdriver-metric-utilization-target-type=delta-per-second

REST

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/autoscalers
{
"name": "our-instance-group-autoscaler",
"target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceGroupManagers/our-instance-group",
"autoscalingPolicy": {
  "maxNumReplicas": 50,
  "minNumReplicas": 0,
  "customMetricUtilizations": [
    {
      "filter": "metric.labels.group_name=\"our-instance-group\" AND resource.type = \"global\"",
      "utilizationTargetType": "delta-per-second",
      "utilizationTarget": 250.0,
      "metric": "custom.googleapis.com/example_average_latency"
    }
  ]
}
}

Automatisch auf Basis nicht bestätigter Nachrichten in Pub/Sub skalieren

Um das automatische Skalieren auf basis unbestätigter Nachrichten in einem Pub/Sub-Abo zu konfigurieren, nutzen Sie densubscription/num_undelivered_messages-Messert, der durch pubsub bereitgestellt und durch subscription ID gefiltert wird.

Der Messwert subscription/num_undelivered_messages exportiert die Gesamtzahl der Nachrichten im Abo, einschließlich Nachrichten, die derzeit verarbeitet werden, aber noch nicht bestätigt wurden. Verwenden Sie keinen Messwert, der die zu verarbeitenden Nachrichten nicht enthält. Er könnte auf 0 fallen, obwohl noch Arbeit zu erledigen ist, wodurch das Autoscaling veranlasst wird, herunter zu skalieren und die eigentliche Arbeit unterbrochen wird.

Wenn Sie kein Abo haben, können Sie ein Pull-, Push- oder BigQuery-Abo erstellen, bevor Sie das Autoscaling konfigurieren.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie im Bereich Autoscaling-Signale auf Signal hinzufügen.

  6. Setzen Sie den Signaltyp auf Cloud Pub/Sub-Warteschlange.

  7. Wählen Sie ein Thema aus. Wenn Sie ein neues Thema erstellen möchten, klicken Sie auf Thema erstellen, um ein Thema zu erstellen.

  8. Wählen Sie das Abo aus, anhand dessen Sie Ihre MIG automatisch skalieren möchten. Wenn Sie ein neues Abo benötigen, klicken Sie auf Abo erstellen, um ein Abo zu erstellen.

  9. Geben Sie im Feld Anzahl der Nachrichten, die jeder VM zugewiesen werden sollen die Anzahl der nicht bestätigten Nachrichten an, die jede VM verarbeiten soll.

  10. Klicken Sie auf Fertig.

  11. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \
  --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"" \
  --stackdriver-metric-single-instance-assignment=NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM

REST

Konfigurieren Sie Autoscaling für eine zonale MIG mit der Ressource autoscalers oder verwenden Sie für eine regionale MIG die Ressource regionAutoscalers.

Mit dem folgenden Aufruf können Sie beispielsweise Autoscaling für eine zonale MIG erstellen.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "singleInstanceAssignment": NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM,
      "filter": "resource.type = \"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"",
      "metric": "pubsub.googleapis.com/subscription/num_undelivered_messages"
    }
  ]
}
}

Autoscaling auf basis des eingehenden Netzwerktraffics

Wenn Sie das automatische Skalieren auf Basis von auf VMs in Ihrem MIG eingehendem Netzwerk-Traffic konfigurieren wollen, nutzen Sie den instance/network/received_bytes_count-Messwert, der von compute bereitgestellt wird.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie unter Autoscaling im Abschnitt Autoscaling-Signale auf Signal hinzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Der Bereich Ressource und Messwert wird geöffnet.

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie VM-Instanz > Instanz > Empfangene Byte (compute.googleapis.com/instance/network/received_bytes_count) aus.
      2. Klicken Sie auf Anwenden.
    2. Führen Sie im Abschnitt Messwertzieloptionen für das Autoscaling die folgenden Schritte aus:
      1. Achten Sie darauf, dass Nutzungsziel ausgewählt ist.
      2. Geben Sie einen Nutzungszielwert ein.
      3. Legen Sie einen Nutzungszieltyp fest.
    3. Klicken Sie nach der Konfiguration des Messwerts auf Auswählen.
  8. Prüfen Sie die Messwertdetails und klicken Sie dann auf Fertig.

  9. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "utilizationTargetType": "TARGET_TYPE",
      "utilizationTarget": TARGET_VALUE,
      "metric": "compute.googleapis.com/instance/network/received_bytes_count"
    }
  ]
}
}

Autoscaling anhand der Arbeits-Speichernutzung

Geben Sie den percent_used-Messwert an, der durch die Ops-Agent-Messwerte des Arbeitsspeichers bereitgestellt wird, um das Autoscaling basierend auf dem Prozentsatz des verwendeten Speichers zu konfigurieren. Sie sollten den Messwert nach state filtern, um nur den used-Speicherstatus zu verwenden. Wenn Sie den Filter nicht angeben, berechnet das Autoscaling die Summe der Speichernutzung durch alle Speicherstatus mit den Labels buffered, cached, free, slab und used.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf der Übersichtsseite der Instanzgruppe auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie unter Autoscaling im Abschnitt Autoscaling-Signale auf Signal hinzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Der Bereich Ressource und Messwert wird geöffnet.

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie VM-Instanz > Speicher > Speicherauslastung (compute.googleapis.com/instance/memory/percent_used) aus.
      2. Klicken Sie auf Anwenden.
    2. Führen Sie im Abschnitt Filter folgende Schritte aus:
      1. Klicken Sie auf Filter hinzufügen.
      2. Wählen Sie in der Drop-down-Liste Label das Messwertlabel state aus.
      3. Geben Sie im Feld Wert den Wert used ein.
      4. Klicken Sie auf Fertig.
    3. Führen Sie im Abschnitt Messwertzieloptionen für das Autoscaling die folgenden Schritte aus:
      1. Achten Sie darauf, dass Nutzungsziel ausgewählt ist.
      2. Geben Sie einen Nutzungszielwert ein.
      3. Legen Sie für das Nutzungszieltyp Gauge fest.
    4. Klicken Sie nach der Konfiguration des Messwerts auf Auswählen.
  8. Prüfen Sie die Messwertdetails und klicken Sie dann auf Fertig.

  9. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=agent.googleapis.com/memory/percent_used \
  --stackdriver-metric-filter="metric.labels.state = \"used\""
  --stackdriver-metric-utilization-target-type=gauge \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "filter": "metric.labels.state=\"used\"",
    "utilizationTargetType": "GAUGE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/memory/percent_used"
  }
  ]
}
}

Autoscaling anhand von Laufwerk-E/A

Verwenden Sie zum Konfigurieren des Autoscalings basierend auf der Gesamtzahl der Laufwerk-E/A-Vorgänge den operation_count-Messwert, der von den Metriken des Ops-Agents des Laufwerks bereitgestellt wird. Wenn Sie die Skalierung auf Lese- oder Schreibvorgängen basieren möchten, filtern Sie den Messwert mit dem direction-Label. Für die Skalierung auf Basis von Laufwerkvorgänge in einem bestimmten Gerät verwenden Sie das device-Label im Messwertfilter.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf der Übersichtsseite der Instanzgruppe auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie unter Autoscaling im Abschnitt Autoscaling-Signale auf Signal hinzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Der Bereich Ressource und Messwert wird geöffnet.

    1. Klicken Sie auf Messwert auswählen.
      1. Wählen Sie VM-Instanz > Laufwerk > Laufwerkvorgänge (agent.googleapis.com/disk/operation_count) aus.
      2. Klicken Sie auf Anwenden.
    2. Führen Sie im Abschnitt Messwertzieloptionen für das Autoscaling die folgenden Schritte aus:
      1. Achten Sie darauf, dass Nutzungsziel ausgewählt ist.
      2. Geben Sie einen Nutzungszielwert ein.
      3. Legen Sie einen Nutzungszieltyp fest.
    3. Klicken Sie nach der Konfiguration des Messwerts auf Auswählen.
  8. Prüfen Sie die Messwertdetails und klicken Sie dann auf Fertig.

  9. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES  \
  --min-num-replicas=MIN_INSTANCES  \
  --update-stackdriver-metric=agent.googleapis.com/disk/operation_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "utilizationTargetType": "TARGET_TYPE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/disk/operation_count"
  }
  ]
}
}

Autoscaling anhand der Größe einer anderen MIG

Sie können eine MIG anhand der Größe einer anderen MIG im selben Projekt automatisch skalieren. Sie können beispielsweise eine mehrschichtige Anwendung mit einer Frontend-MIG verwenden, die auf Basis eines Load-Balancers automatisch skaliert wird, und eine Backend-MIG, die proportional zum Frontend skaliert wird. Mit einer einzelnen Instanzzuweisung definieren Sie, wie viele Backend-VMs für jede Frontend-VM benötigt werden. Wenn Sie eine Backend-VM für jeweils vier Frontend-VMs benötigen, legen Sie die Einzelinstanz-Zuweisung in der Backend-MIG auf 4 fest.

Verwenden Sie den instance_group/size-Messwert von compute, um eine MIG (MIG_1) anhand der Größe einer anderen MIG (MIG_2) automatisch zu skalieren.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste auf den Namen Ihrer MIG, um die Übersichtsseite der Instanzgruppe zu öffnen.

  3. Klicken Sie auf der Übersichtsseite der Instanzgruppe auf Bearbeiten.

  4. Wenn keine Autoscaling-Konfiguration vorhanden ist:

    1. Klicken Sie unter Autoscaling auf Autoscaling konfigurieren.
    2. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen, um das Autoscaling zu aktivieren.
  5. Klicken Sie unter Autoscaling im Abschnitt Autoscaling-Signale auf Signal hinzufügen.

  6. Legen Sie als Signaltyp den Cloud Monitoring-Messwert fest.

  7. Klicken Sie auf Konfigurieren. Der Bereich Ressource und Messwert wird geöffnet.

    1. Klicken Sie auf Messwert auswählen
      1. Wählen Sie Instanzgruppe > Instanzgruppe > Instanzgruppengröße (compute.googleapis.com/instance_group/size) aus.
      2. Klicken Sie auf Anwenden.
    2. Führen Sie im Abschnitt Filter folgende Schritte aus:
      1. Klicken Sie auf Filter hinzufügen.
      2. Wählen Sie im Drop-down-Menü Label das Ressourcenlabel instance_group_name aus.
      3. Geben Sie im Feld Wert den Namen der MIG (MIG_2) ein, anhand derer die MIG automatisch skaliert werden soll.
      4. Klicken Sie auf Fertig.
    3. Führen Sie im Abschnitt Messwertzieloptionen für das Autoscaling die folgenden Schritte aus:
      1. Wählen Sie Einzel-VM-Instanzzuweisung aus.
      2. Geben Sie im Feld "Einzel-VM-Instanzzuweisung" 4 ein, wenn Sie eine VM in Ihrer aktuellen MIG (MIG_1) für jeweils vier VMs in MIG_2 behalten möchten.
    4. Klicken Sie nach der Konfiguration des Messwerts auf Auswählen.
  8. Prüfen Sie die Messwertdetails und klicken Sie dann auf Fertig.

  9. Klicken Sie abschließend auf Speichern.

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_1 \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance_group/size \
  --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"" \
  --stackdriver-metric-single-instance-assignment=4

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_1",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "singleInstanceAssignment": 4,
    "filter": "resource.type = \"instance_group\" and resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"",
    "metric": "compute.googleapis.com/instance_group/size"
  }
  ]
}
}

Monitoring-Messwertkonzepte

In diesem Abschnitt werden kurz die Monitoring-Messwertkonzepte beschrieben, die Sie bei der Konfiguration des Autoscalings auf Basis von Monitoring-Messwerten kennen müssen.

  • Messwert-ID oder Messwert-URL: Der Messwertname in Form einer protokollfreien URL. URLs für integrierte Messwert-URLs finden Sie in der Messwertliste.

    Beispielsweise ist die URL eines Pub/Sub-Messwerts, der die Anzahl der nicht bestätigten Nachrichten angibt, pubsub.googleapis.com/subscription/num_undelivered_messages.

  • Typ der überwachten Ressource: Die Quelle des Messwerts. Sie finden den Typ der überwachten Ressource eines Messwerts in der Messwertliste.

    Beispiel: Der Typ der überwachten Ressource des pubsub.googleapis.com/subscription/num_undelivered_messages-Messwerts ist pubsub_subscription. Weitere Informationen zu den einzelnen überwachten Ressourcentyp finden Sie unter Überwachte Ressourcentypen.

  • Messwertfilter: Wenn Ihr Messergebnis mehrere Werte umfasst, kann das Autoscaling über einen Filter einen bestimmten Messwert in der Gruppe möglicher Messwerte identifizieren. Verwenden Sie über einen Messwert und überwachten Ressourcentyp definierte Label, um Werte zu filtern. Wenn Sie Ihre Messwerte mit verschiedenen Filtern untersuchen möchten, können Sie das im Metrics Explorer ausprobieren.

    Der folgende Screenshot zeigt beispielsweise den Messwert pubsub.googleapis.com/subscription/num_undelivered_messages, der die Anzahl der nicht bestätigten Nachrichten in allen verfügbaren Abos angibt. Jede Linie im Diagramm steht für ein Abo.

    Messwert-Explorer mit Messwerten ohne Filter.

    Ohne Filter verwendet das Autoscaling die Summe der Messwerte aus allen Abos. Wenn Sie Autoscaling anhand eines einzelnen Abos vornehmen möchten, wenden Sie einen Filter auf das Label subscription_id an, das für pubsub_subscription definiert ist. Der folgende Screenshot zeigt ein einzelnes Abo, nachdem der Filter angewendet wurde.

    Messwert-Explorer mit gefiltertem Messwert.

Anforderungen an die Messwertfilterung

Wenn Sie ein Messergebnis nutzen, das mehrere Werte enthält (über Labels kategorisiert), können Sie einen Filter anwenden, um basierend auf bestimmten Werten aus dem Messergebnis automatisch zu skalieren. Gibt der Filter mehrere Werte zurück, werden die Werte addiert. Um optimale Ergebnisse zu erzielen, sollten Sie einen Filter erstellen, der spezifisch genug ist, um einen einzelnen Wert zurückzugeben.

Die Autoscaling-Filterung für Messwerte ist mit der Monitoring-Filtersyntax kompatibel. Der Filter muss folgende Anforderungen erfüllen:

  • Der Wert des Filters muss in doppelten Anführungszeichen stehen.
  • Sie müssen den direkten Gleichheitsvergleichsoperator verwenden (=).
  • Sie müssen den Operator AND nutzen, um verschiedene Filterkriterien zusammenzuführen.

    Beispiel: --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\"".

  • Sie müssen direkte Werte verwenden. Im Filter können keine Platzhalter oder Funktionen verwendet werden.

    Sie können beispielsweise nicht resource.labels.zone = starts_with("us-") verwenden.

  • Sie können keine Ressourcenmetadatenlabels verwenden, die Metadaten zu einer überwachten Ressource speichern.

Eine vollständige Referenz der Messwertlabels und der Labels für überwachte Ressourcen, nach denen Sie filtern können, finden Sie in der Liste der Messwerte und der Liste der überwachten Ressourcen.

Anforderungen an benutzerdefinierte Messwerte

Um benutzerdefinierte Messwerte zu verwenden, müssen Sie zuerst einen benutzerdefinierten Messwert erstellen, der einem der überwachten Ressourcentypen zugeordnet ist.

Ein benutzerdefinierter Messwert, der für das Autoscaling verwendet wird, muss folgende Eigenschaften haben:

  • Wenn für die Autoscaling-Konfiguration Daten von allen VMs in der Gruppe verwendet werden, richten Sie Instanzen in Ihrer MIG so ein, dass jede VM den benutzerdefinierten Messwert exportiert. Die exportierten Werte der einzelnen VMs müssen einer überwachten gce_instance-Ressource zugeordnet sein, die folgende Labels enthält:
    • zone mit dem Namen der Zone, in der sich die Instanz befindet.
    • instance_id mit dem Wert der eindeutigen numerischen ID, die der VM zugeordnet ist.
  • Der Messwert muss mindestens alle 60 Sekunden Daten exportieren. Wenn Sie Daten häufiger als alle 60 Sekunden exportieren, kann das Autoscaling schneller auf Laständerungen reagieren. Wenn Sie Ihre Daten weniger häufig als alle 60 Sekunden exportieren, reagiert das Autoscaling möglicherweise nicht schnell genug auf Laständerungen.
  • Der Messwert muss Daten vom Werttyp INT64 oder DOUBLE exportieren.

Informationen zum Erstellen eines benutzerdefinierten Messwerts finden Sie unter Benutzerdefinierte Messwerte verwenden.

Nächste Schritte