Anhand von CPU oder Load-Balancing-Bereitstellungskapazität skalieren

Die Skalierung, die sich an der CPU-Auslastung einer Gruppe von VM-Instanzen orientiert, ist die einfachste Form des Autoscalings. Das Autoscaling kann auch entsprechend der HTTP(S)-Load-Balancing-Bereitstellungskapazität einer Gruppe von Instanzen ausgeführt werden.

In diesem Dokument werden beide Möglichkeiten beschrieben.

Hinweise

Anhand der CPU-Auslastung skalieren

Sie können ein Autoscaling anhand der durchschnittlichen CPU-Auslastung einer verwalteten Instanzgruppe durchführen. Anhand dieser Richtlinie erfasst das Autoscaling die CPU-Auslastung der Instanzen in der Gruppe und bestimmt, ob eine Skalierung erforderlich ist. Sie legen die Ziel-CPU-Auslastung fest, die das Autoscaling nach Möglichkeit einhalten soll.

Das Autoscaling behandelt das Ziel-CPU-Auslastungsniveau als Bruchteil der durchschnittlichen Nutzung aller vCPUs in der Instanzgruppe im Zeitverlauf. Wenn die durchschnittliche Auslastung aller vCPUs die Zielauslastung überschreitet, fügt das Autoscaling weitere virtuelle Maschinen hinzu. Wenn die durchschnittliche Auslastung aller vCPUs geringer als die Zielauslastung ist, entfernt das Autoscaling Instanzen. Bei einer Zielauslastung von 0,75 muss das Autoscaling beispielsweise eine durchschnittliche Nutzung von 75 % für alle vCPUs in der Instanzgruppe aufrechterhalten.

Autoscaling anhand der CPU-Auslastung aktivieren

Console


  1. Rufen Sie die Seite Instanzgruppen auf.
  2. Wenn Sie eine Instanzgruppe haben, wählen Sie sie aus und klicken Sie auf Gruppe bearbeiten. Wenn Sie keine Instanzgruppe haben, klicken Sie auf Instanzgruppe erstellen.
  3. Wählen Sie unter Autoscaling die Option An aus.
  4. Wählen Sie unter Automatisch skalieren auf der Grundlage von die Option CPU-Auslastung aus.
  5. Geben Sie die gewünschte Ziel-CPU-Auslastung ein. Dieser Wert wird als Prozentsatz behandelt. Bei einer CPU-Auslastung von beispielsweise 60 % geben Sie den Wert 60 ein.
  6. Geben Sie eine Zahl für die maximale Anzahl der Instanzen in dieser Instanzgruppe ein. Sie können auch die Mindestanzahl der Instanzen und die Wartezeit festlegen. Die Wartezeit ist die Anzahl von Sekunden, die das Autoscaling nach dem Start einer VM warten muss, bevor Informationen gesammelt werden. Dadurch wird die zur Initialisierung der VM erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Daten für das Autoscaling nicht verlässlich. Die Standardwartezeit beträgt 60 Sekunden.
  7. Speichern Sie die Änderungen.

gcloud


Mit dem Unterbefehl set-autoscaling können Sie das Autoscaling für eine verwaltete Instanzgruppe aktivieren. Durch den folgenden Befehl wird z. B. ein Autoscaling mit einer CPU-Zielauslastung von 75 % erstellt. Neben dem Parameter --target-cpu-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-cpu-utilization 0.75 \
    --cool-down-period 90

Optional können Sie das Flag --cool-down-period verwenden, das dem Autoscaling vorgibt, wie viele Sekunden nach dem Start der neuen Instanz gewartet werden muss, bevor Daten aus der neuen Instanz berücksichtigt werden. Mit dieser Wartezeit wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Nach Ablauf der Wartezeit beginnt das Autoscaling, die Auslastungsdaten der Instanz zu berücksichtigen, um zu bestimmen, ob die Gruppe skaliert werden muss. Die Standardwartezeit beträgt 60 Sekunden.

Mit dem Unterbefehl instance-groups managed describe können Sie prüfen, ob Autoscaling erfolgreich aktiviert ist. Damit wird die entsprechende verwaltete Instanzgruppe beschrieben und es werden Informationen zu den Autoscaling-Features für diese Instanzgruppe bereitstellt:

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.

API


Hinweis: Auch wenn das Autoscaling eine Funktion verwalteter Instanzgruppen ist, handelt es sich doch um eine separate API-Ressource. Beachten Sie dies, wenn Sie API-Anfragen für das Autoscaling erstellen.

Senden Sie in der API eine POST-Anfrage an die Methode autoscalers.insert:

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. cpuUtilization und maxNumReplicas müssen durch autoscalingPolicy definiert sein.

Optional können Sie das Feld coolDownPeriodSec verwenden, das dem Autoscaling vorgibt, wie viele Sekunden nach dem Start der neuen Instanz gewartet werden muss, bevor Daten aus der neuen Instanz berücksichtigt werden. Mit dieser Wartezeit wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Nach Ablauf der Wartezeit beginnt das Autoscaling, die Auslastungsdaten der Instanz zu berücksichtigen, um zu bestimmen, ob die Gruppe skaliert werden muss. Die Standardwartezeit beträgt 60 Sekunden.

{
 "name": "example-autoscaler",
 "target": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Weitere Informationen zum Aktivieren des Autoscalings auf Grundlage der CPU-Auslastung finden Sie in der Anleitung Autoscaling für hochskalierbare Anwendungen verwenden.

Autoscaling bei starker CPU-Auslastung

Wenn bei einer starken CPU-Auslastung fast ein Wert von 100 % erreicht wird, schätzt das Autoscaling, dass die Gruppe möglicherweise bereits stark überlastet ist. In diesen Fällen erhöht das Autoscaling die Anzahl virtueller Maschinen um höchstens 50 %.

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 HTTP(S)-Load-Balancer verteilt die Last auf Back-Ends, die zu den Back-End-Diensten des Load-Balancers gehören. Handelt es sich bei den Back-Ends um Instanzgruppen, bietet der HTTP(S)-Load-Balancer zwei Balancing-Modi: Auslastung und Rate. Mit dem Modus "Auslastung" können Sie ein maximales Ziel für die durchschnittliche Back-End-Auslastung der Instanzen in jeder Instanzgruppe festlegen. Mit dem Modus "Rate" können Sie ein maximales Ziel für die Anfragen pro Sekunde auf Instanz- oder Gruppenebene festlegen. Regional verwaltete Instanzgruppen bieten keine Unterstützung für die Definition einer maximalen Rate pro Gruppe.

Die Bedingungen, unter denen Google Cloud ermittelt, ob eine Back-End-VM ausgelastet ist, werden anhand des Balancing-Modus und des angegebenen maximalen Ziels definiert. Google Cloud versucht, Traffic an fehlerfrei arbeitende VMs mit freier Kapazität zu senden. Sind alle VMs bereits ausgelastet, wird die maximale Zielauslastung oder -rate überschritten.

Wenn Sie einem HTTP(S)-Load-Balancer 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
Das Autoscaling überwacht die Bereitstellungskapazität der verwalteten Instanzgruppe, die im Back-End-Dienst definiert ist, und skaliert basierend auf der Zielauslastung. 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.

    Zur Seite Instanzgruppen

  2. Wenn Sie eine Instanzgruppe haben, wählen Sie sie aus und klicken Sie auf Gruppe bearbeiten. Wenn Sie keine Instanzgruppe haben, klicken Sie auf Instanzgruppe erstellen.
  3. Wählen Sie unter Autoscaling die Option An aus.
  4. Wählen Sie unter Automatisch skalieren auf der Grundlage von die Option HTTP-Load-Balancing-Auslastung aus.
  5. Geben Sie die 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.
  6. Geben Sie eine Zahl für die maximale Anzahl der Instanzen in dieser Instanzgruppe ein. Sie können auch die Mindestanzahl der Instanzen und die Wartezeit festlegen. Die Wartezeit ist die Anzahl von Sekunden, die das Autoscaling nach dem Start der virtuellen Maschine warten muss, bevor Informationen gesammelt werden. Dadurch wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt. In dieser Zeit sind die erfassten Daten für das Autoscaling nicht verlässlich. Die Standardwartezeit beträgt 60 Sekunden.
  7. 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

Optional können Sie das Flag --cool-down-period verwenden, das dem Autoscaling vorgibt, wie viele Sekunden nach dem Start der neuen Instanz gewartet werden muss, bevor Daten aus der neuen Instanz berücksichtigt werden. Mit dieser Wartezeit wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Nach Ablauf der Wartezeit beginnt das Autoscaling, die Auslastungsdaten der Instanz zu berücksichtigen, um zu bestimmen, ob die Gruppe skaliert werden muss. Die Standardwartezeit beträgt 60 Sekunden.

Mit dem Unterbefehl 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.

API


Hinweis: Auch wenn das Autoscaling eine Funktion verwalteter Instanzgruppen ist, handelt es sich doch um eine separate API-Ressource. Beachten Sie dies, wenn Sie API-Anfragen für das Autoscaling erstellen.

Senden Sie in der API eine POST-Anfrage an die Methode autoscalers.insert:

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.

Optional können Sie das Feld coolDownPeriodSec verwenden, das dem Autoscaling vorgibt, wie viele Sekunden nach dem Start der neuen Instanz gewartet werden muss, bevor Daten aus der neuen Instanz berücksichtigt werden. Mit dieser Wartezeit wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Nach Ablauf der Wartezeit beginnt das Autoscaling, die Auslastungsdaten der Instanz zu berücksichtigen, um zu bestimmen, ob die Gruppe skaliert werden muss. Die Standardwartezeit 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.

Anhand des Netzwerk-Load-Balancings skalieren

Ein Netzwerk-Load-Balancer verteilt Last mit Protokollen niedrigerer Ebene, wie TCP und UDP. Mit dem Netzwerk-Load-Balancing können Sie Traffic verteilen, der nicht auf HTTP(S) basiert, z. B. SMTP.

Sie können eine verwaltete Instanzgruppe, die Teil eines Zielpools des Netzwerk-Load-Balancers ist, anhand der Back-End-Auslastung oder anhand benutzerdefinierter Messwerte automatisch skalieren. Weitere Informationen finden Sie unter Anhand der Back-End-Auslastung skalieren oder Anhand von Cloud Monitoring-Messwerten skalieren.