Anhand von Load-Balancing-Bereitstellungskapazität skalieren


In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (MIG, Managed Instance Group) anhand der Bereitstellungskapazität eines externen Application Load Balancers oder eines internen Application Load Balancers skalieren. Dies bedeutet, dass das Autoscaling VM-Instanzen in der Gruppe hinzufügt oder entfernt, wenn der Load-Balancer angibt, dass die Gruppe einen konfigurierbaren Teil ihrer Fülle erreicht hat. Fülle wird dabei durch die Zielkapazität des ausgewählten Balancing-Modus der Backend-Instanzgruppe definiert.

Sie können eine MIG auch anhand ihrer CPU-Auslastung oder anhand von Monitoringmesswerten skalieren.

Beschränkungen

Sie können eine verwaltete Instanzgruppe automatisch anhand der Bereitstellungskapazität eines externen Application Load Balancers und eines internen Application Load Balancers skalieren. Andere Arten von Load-Balancern werden nicht unterstützt.

Hinweise

  • Prüfen Sie die Einschränkungen für Autoscaling.
  • Grundlagen von Autoscaling
  • 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 so 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

Anhand der HTTP(S)-Load-Balancing-Kapazität skalieren

Compute Engine unterstützt den Lastenausgleich innerhalb der Instanzgruppen. Sie können das Autoscaling zusammen mit dem Load-Balancing verwenden. Dazu richten Sie es so ein, dass es anhand der Last der Instanzen erfolgt.

Ein externer oder interner HTTP(S)-Load-Balancer verteilt Anfragen gemäß seiner URL-Zuordnung an Backend-Dienste. Der Load-Balancer kann einen oder mehrere Backend-Dienste haben, die jeweils Instanzgruppen- oder NEG-Backends (Network Endpoint Group) unterstützen. Wenn Back-Ends Instanzgruppen sind, bietet der HTTP(S)-Load-Balancer zwei Balancing-Modi: UTILIZATION und RATE. Mit UTILIZATION können Sie ein maximales Ziel für die durchschnittliche Backend-Auslastung von Instanzen in der Instanzgruppe angeben. Mit RATE müssen Sie eine Zielanzahl von Anfragen pro Sekunde pro Instanz oder pro Gruppe angeben. (Nur zonale Instanzgruppen unterstützen die Angabe einer maximalen Rate für die gesamte Gruppe. Regional verwaltete Instanzgruppen bieten keine Unterstützung für die Definition einer maximalen Rate pro Gruppe.)

Der von Ihnen angegebene Balancing-Modus und die Zielkapazität definieren die Bedingungen, unter denen Google Cloud bestimmt, wann eine Back-End-VM voll ausgelastet ist. Google Cloud versucht, Traffic an fehlerfrei arbeitende VMs mit freier Kapazität zu senden. Sind alle VMs bereits ausgelastet, wird die Zielauslastung oder -rate überschritten.

Wenn Sie dem Instanzgruppen-Backend eines HTTP(S)-Load-Balancers ein Autoscaling zuweisen, wird die verwaltete Instanzgruppe so skaliert, dass ein Teil der Load-Balancing-Bereitstellungskapazität erhalten bleibt.

Angenommen, die Load-Balancing-Bereitstellungskapazität einer verwalteten Instanzgruppe ist als 100 Anfragen pro Sekunde pro Instanz definiert. Wenn Sie ein Autoscaling mit der HTTP(S)-Load-Balancing-Richtlinie erstellen und dafür ein Zielauslastungsniveau von 0,8 oder 80 % festlegen, werden der verwalteten Instanzgruppe Instanzen hinzugefügt oder daraus entfernt, um eine Bereitstellungskapazität von 80 % oder 80 RPS pro Instanz aufrechtzuerhalten.

Das folgende Diagramm zeigt, wie das Autoscaling mit einer verwalteten Instanzgruppe und einem Back-End-Dienst interagiert:

Die Beziehungen zwischen Autoscaling, verwalteten Instanzgruppen und Load-Balancing-Back-End-Diensten
The autoscaler watches the serving capacity of the managed instance group, which is defined in the backend service, and scales based on the target utilization. In diesem Beispiel wird die Bereitstellungskapazität anhand des Werts maxRatePerInstance gemessen.

Anwendbare Load-Balancing-Konfigurationen

Sie können für die Load-Balancing-Bereitstellungskapazität eine von drei Optionen festlegen. Beim erstmaligen Erstellen des Back-Ends haben Sie die Wahl zwischen der maximalen Back-End-Auslastung, der maximalen Anzahl von Anfragen pro Sekunde und Instanz sowie der maximalen Anzahl von Anfragen pro Sekunde für die gesamte Gruppe. Das Autoscaling kann nur mit der maximalen Back-End-Auslastung und der maximalen Anzahl von Anfragen pro Sekunde und Instanz verwendet werden, weil der Wert dieser Einstellungen durch Hinzufügen oder Entfernen von Instanzen gesteuert werden kann. Wenn Sie beispielsweise festlegen, dass ein Back-End 10 Anfragen pro Sekunde und Instanz verarbeitet, und wenn das Autoscaling so konfiguriert ist, dass 80 % dieser Rate aufrechterhalten werden, dann werden vom Autoscaling unter Umständen Instanzen hinzugefügt oder entfernt, wenn sich die Anzahl der Anfragen pro Sekunde und Instanz ändert.

Das Autoscaling kann nicht mit der maximalen Anzahl von Anfragen pro Gruppe verwendet werden, weil diese Einstellung von der Anzahl der Instanzen in der Instanzgruppe unabhängig ist. Der Load-Balancer sendet fortlaufend die maximale Anzahl von Anfragen pro Gruppe an die Instanzgruppe – unabhängig von der Anzahl der Instanzen in der Gruppe.

Wenn Sie beispielsweise festlegen, dass das Back-End maximal 100 Anfragen pro Gruppe und Sekunde verarbeiten soll, sendet der Load-Balancer weiter 100 Anfragen pro Sekunde an die Gruppe, unabhängig davon, ob die Gruppe 2 oder 100 Instanzen enthält. Da dieser Wert nicht angepasst werden kann, funktioniert das Autoscaling nicht mit einer Load-Balancing-Konfiguration, die auf der maximalen Anzahl von Anfragen pro Sekunde und Gruppe beruht.

Autoscaling anhand der Load-Balancing-Bereitstellungskapazität aktivieren

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Instanzgruppen.

    Zu den Instanzgruppen

  2. Wenn Sie eine Instanzgruppe haben, wählen Sie sie aus und klicken Sie auf Bearbeiten. Wenn Sie keine Instanzgruppe haben, klicken Sie auf Instanzgruppe erstellen.
  3. Wählen Sie unter Autoscaling-Modus die Option Ein: Der Gruppe Instanzen hinzufügen und daraus entfernen aus, um Autoscaling zu aktivieren.
  4. Geben Sie die minimale und maximale Anzahl von Instanzen an, die das Autoscaling in dieser Gruppe erstellen soll.
  5. Klicken Sie unter Messwerte für Autoscaling auf Messwert hinzufügen.
  6. Setzen Sie den Messwerttyp auf HTTP-Load-Balancing-Auslastung.
  7. Geben Sie die HTTP-Load-Balancing-Zielauslastung ein. Dieser Wert wird als Prozentsatz behandelt. Bei einer HTTP-Load-Balancing-Auslastung von beispielsweise 60 % geben Sie den Wert 60 ein.

  8. Sie können die Wartezeit verwenden, um den Initialisierungszeitraum festzulegen, der dem Autoscaling mitteilt, wie lange Ihre Anwendung zur Initialisierung benötigt. Wenn Sie einen genauen Initialisierungszeitraum angeben, verbessern Sie die Autoscaling-Entscheidungen. Beim horizontalen Skalieren werden so beispielsweise Daten von VMs ignoriert, die noch initialisiert werden, da diese möglicherweise nicht die normale Nutzung Ihrer Anwendung darstellen. Die Standardinitialisierungszeit beträgt 60 Sekunden.

  9. Speichern Sie die Änderungen.

gcloud

Mit dem Unterbefehl set-autoscaling aktivieren Sie das Autoscaling zum Skalieren der Bereitstellungskapazität. Durch den folgenden Befehl wird z. B. ein Autoscaling erstellt, das die verwaltete Zielinstanzgruppe so skaliert, dass 60 % der Bereitstellungskapazität aufrechterhalten werden. Neben dem Parameter --target-load-balancing-utilization ist beim Erstellen eines Autoscalings auch der Parameter --max-num-replicas erforderlich:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-load-balancing-utilization 0.6 \
    --cool-down-period 90

Sie können das Flag --cool-down-period verwenden, um den Initialisierungszeitraum festzulegen, der dem Autoscaling mitteilt, wie lange Ihre Anwendung zur Initialisierung benötigt. Wenn Sie die Initialisierungsphase genau definieren, verbessern Sie die Autoscaling-Entscheidungen. Beim horizontalen Skalieren werden so beispielsweise Daten von VMs ignoriert, die noch initialisiert werden, da diese möglicherweise nicht die normale Nutzung Ihrer Anwendung darstellen. Die Standardinitialisierungszeit beträgt 60 Sekunden.

Mit dem Unterbefehl instance-groups managed describe können Sie prüfen, ob das Autoscaling erfolgreich erstellt wurde:

gcloud compute instance-groups managed describe example-managed-instance-group

Eine Liste der verfügbaren gcloud-Befehle und Flags finden Sie in der Referenz zu gcloud.

REST

Verwenden Sie zum Erstellen eines Autoscalings die Methode autoscalers.insert für eine zonale MIG oder die Methode regionAutoscalers.insert für eine regionale MIG.

Im folgenden Beispiel wird ein Autoscaling für eine zonale MIG erstellt:

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

Der Text Ihrer Anfrage muss die Felder name, target und autoscalingPolicy enthalten. loadBalancingUtilization muss durch autoscalingPolicy definiert sein.

Sie können das Feld coolDownPeriodSec verwenden, um den Initialisierungszeitraum festzulegen, der dem Autoscaling mitteilt, wie lange Ihre Anwendung zur Initialisierung benötigt. Wenn Sie die Initialisierungsphase genau definieren, verbessern Sie die Autoscaling-Entscheidungen. Beim horizontalen Skalieren werden so beispielsweise Daten von VMs ignoriert, die noch initialisiert werden, da diese möglicherweise nicht die normale Nutzung Ihrer Anwendung darstellen. Die Standardinitialisierungszeit beträgt 60 Sekunden.

{

 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Weitere Informationen zum Aktivieren des Autoscalings auf Grundlage der Load-Balancing-Bereitstellungskapazität finden Sie in der Anleitung Globales Autoscaling eines Webdienstes mithilfe von Compute Engine.

Nächste Schritte