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

Die Skalierung basierend auf der CPU-Auslastung einer Gruppe von VM-Instanzen ist die einfachste Form des Autoscalings. Es kann auch basierend auf der HTTP(S)-Lastenausgleichs-Bereitstellungskapazität einer Gruppe von Instanzen skaliert werden.

In diesem Dokument werden beide Möglichkeiten beschrieben.

Vorbereitung

Basierend auf der CPU-Auslastung skalieren

Sie können ein Autoscaling basierend auf 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 Nutzung aller vCPUs die Zielauslastung überschreitet, fügt das Autoscaling weitere virtuelle Maschinen hinzu. Bei einer Zielauslastung von 0,75 muss das Autoscaling z. B. eine durchschnittliche Nutzung von 75 % für alle vCPUs in der Instanzgruppe aufrechterhalten.

Autoscaling anhand der CPU-Auslastung aktivieren

Weitere Informationen zum Aktivieren der Autoscaling-Funktion anhand der CPU-Auslastung finden Sie in der Anleitung Autoscaling für hochskalierbare Anwendungen verwenden.

Console


  1. Gehen Sie zu der 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 CPU-Auslastung aus.
  5. Geben Sie die CPU-Zielauslastung 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 der virtuellen Maschine warten muss, bevor Informationen gesammelt werden. Dadurch wird die zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten 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. Beim Erstellen eines Autoscalings muss außerdem zusammen mit dem Parameter --target-cpu-utilization der Parameter --max-num-replicas angegeben werden.

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 mit dem Erfassen der Auslastung begonnen wird. Nach Ablauf der Cool-down-Zeit beginnt das Autoscaling mit dem Sammeln von Auslastungsinformationen aus der neuen Instanz und bestimmt, ob die Gruppe zusätzliche Instanzen benötigt. Dadurch wird die zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Die Standardwartezeit beträgt 60 Sekunden.

Mit dem Unterbefehl instance-groups managed describe können Sie überprüfen, ob das Autoscaling erfolgreich aktiviert wurde. Er beschreibt die entsprechende verwaltete Instanzgruppe und liefert Informationen zu Autoscaling-Funktionen für diese Instanzgruppe:

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.

Stellen Sie in der API eine POST-Anfrage an die folgende URL und ersetzen Sie myproject durch Ihre eigene Projekt-ID und us-central1-f durch die Zone Ihrer Wahl:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/

Der Text der Anfrage muss die Felder name, target und autoscalingPolicy enthalten. autoscalingPolicy muss cpuUtilization und maxNumReplicas definieren.

Optional können Sie den Parameter coolDownPeriodSec verwenden, der dem Autoscaling vorgibt, wie viele Sekunden nach dem Start einer neuen Instanz gewartet werden muss, bevor mit dem Sammeln der Auslastungsinformationen begonnen wird. Nach Ablauf der Cool-down-Zeit beginnt das Autoscaling mit dem Erfassen von Auslastungsinformationen aus der neuen Instanz und bestimmt, ob die Gruppe zusätzliche Instanzen benötigt. Dadurch wird die zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. Die Standardwartezeit beträgt 60 Sekunden.

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

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 %.

Basierend auf der HTTP(S)-Lastenausgleichs-Bereitstellungskapazität skalieren

Compute Engine unterstützt den Lastenausgleich innerhalb der Instanzgruppen. Sie können das Autoscaling zusammen mit dem Lastenausgleich verwenden, indem Sie es so einrichten, dass es basierend auf der Last der Instanzen erfolgt.

Ein HTTP(S)-Load-Balancer verteilt die Last auf Back-End-Dienste, die den Traffic auf Instanzgruppen verteilen. Innerhalb des Back-End-Dienstes können Sie die Lastenausgleichs-Bereitstellungskapazität der Instanzgruppen, die mit dem Back-End verbunden sind, als maximale CPU-Auslastung, maximale Anzahl der Anfragen pro Sekunde oder maximale Anzahl der Anfragen pro Sekunde für die Gruppe definieren. Wenn eine Instanzgruppe die Bereitstellungskapazität erreicht, sendet der Back-End-Dienst den Traffic an eine andere Instanzgruppe.

Wenn Sie einem HTTP(S)-Lastenausgleichsmodul ein Autoscaling hinzufügen, skaliert dieses die verwaltete Instanzgruppe so, dass ein Teil der Bereitstellungskapazität des Lastenausgleichs aufrechterhalten wird.

Angenommen, die Lastenausgleichs-Bereitstellungskapazität einer verwalteten Instanzgruppe ist als 100 Anfragen pro Sekunde pro Instanz definiert. Wenn Sie ein Autoscaling mit der HTTP(S)-Lastenausgleichsrichtlinie erstellen und so festlegen, dass ein Zielauslastungsniveau von 0,8 oder 80 % aufrechterhalten werden soll, werden Instanzen in der verwalteten Instanzgruppe hinzugefügt oder entfernt, um 80 % der Bereitstellungskapazität oder 80 Anfragen pro Sekunde pro Instanz aufrechtzuerhalten.

Im folgenden Diagramm wird die Interaktion des Autoscalings mit einer verwalteten Instanzgruppe und dem Back-End-Dienst dargestellt:

Diagramm der Beziehungen zwischen Autoscaling, verwalteten Instanzgruppen und Lastenausgleichs-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 im maxRatePerInstance-Wert gemessen.

Anwendbare Lastenausgleichskonfigurationen

Sie können eine von drei Optionen für die Lastenausgleichs-Bereitstellungskapazität festlegen, wenn Sie das Back-End erstmals erstellen: maximale CPU-Auslastung, maximale Anzahl der Anfragen pro Sekunde/Instanz oder maximale Anzahl der Anfragen pro Sekunde für die gesamte Gruppe. Das Autoscaling kann nur mit maximale CPU-Auslastung und maximale Anzahl der Anfragen pro Sekunde/Instanz verwendet werden, weil der Wert dieser Einstellungen durch Hinzufügen oder Entfernen von Instanzen gesteuert werden kann. Wenn Sie z. B. festlegen, dass ein Back-End 10 Anfragen pro Sekunde/Instanz verarbeitet, und das Autoscaling so konfiguriert ist, dass 80 % dieser Rate aufrechterhalten werden, können Instanzen hinzugefügt oder entfernt werden, wenn sich die Anzahl der Anfragen pro Sekunde/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. Das Lastenausgleichsmodul sendet fortlaufend die maximale Anzahl von Anfragen pro Gruppe an die Instanzgruppe – unabhängig von der Anzahl der Instanzen in der Gruppe.

Wenn Sie z. B. festlegen, dass das Back-End maximal 100 Anfragen pro Gruppe/Sekunde verarbeiten soll, sendet das Lastenausgleichsmodul 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, kann das Autoscaling nicht mit einer Lastenausgleichskonfiguration verwendet werden, bei der die maximale Anzahl von Anfragen pro Sekunde/Gruppe verwendet wird.

Autoscaling anhand der Load-Balancing-Bereitstellungskapazität aktivieren

Weitere Informationen zum Aktivieren der Autoscaling-Funktion anhand der Auslastung des Load-Balancing-Servers finden Sie in der Anleitung Globales Autoscaling eines Webdienstes mithilfe von Compute Engine.

Console


  1. Rufen Sie in der Google Cloud Platform Console den Bereich 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 HTTP-Lastenausgleich-Nutzung aus.
  5. Geben Sie den Zielwert für Load-Balancing-Nutzung ein. Dieser Wert wird als Prozentsatz behandelt. Bei einer HTTP-Load-Balancing-Nutzung 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 Auslastungsdaten 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 zur Skalierung 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. Beim Erstellen eines Autoscalings muss außerdem zusammen mit dem Parameter --target-load-balancing-utilization der Parameter --max-num-replicas angegeben werden:

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 einer neuen virtuellen Maschine gewartet werden muss, bevor das Autoscaling mit dem Erfassen von Nutzungsinformationen aus der virtuellen Maschine beginnt. Dadurch wird die möglicherweise zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt, während der die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich sind. Die Standard-Cool-down-Zeit beträgt 60 Sekunden.

Mit dem Unterbefehl describe können Sie überprü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.

Stellen Sie in der API eine POST-Anfrage an die folgende URL und ersetzen Sie myproject durch Ihre Projekt-ID und us-central1-f durch die Zone Ihrer Wahl:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/

Der Anfragetext muss die Felder name, target und autoscalingPolicy enthalten. autoscalingPolicy muss loadBalancingUtilization definieren.

Optional können Sie den Parameter coolDownPeriodSec verwenden, der dem Autoscaling vorgibt, wie viele Sekunden nach dem Start einer neuen Instanz gewartet werden muss, bevor mit dem Sammeln der Auslastungsinformationen begonnen wird. Nach Ablauf der Cool-down-Zeit beginnt das Autoscaling mit dem Erfassen von Auslastungsinformationen aus der neuen Instanz und bestimmt, ob die Gruppe zusätzliche Instanzen benötigt. Dadurch wird die zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt. In dieser Zeit sind die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich. 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
  }
}

Basierend auf dem Netzwerk-Load-Balancing skalieren

Ein Netzwerklastenausgleichsmodul verteilt die Last mit Protokollen niedrigerer Ebene, wie TCP und UDP. Mit dem Netzwerklastenausgleich 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 Netzwerklastenausgleichsmoduls ist, anhand der CPU-Auslastung oder anhand benutzerdefinierter Messwerte automatisch skalieren. Weitere Informationen finden Sie unter Anhand der CPU-Auslastung skalieren oder Anhand von Stackdriver Monitoring-Messwerten skalieren.

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

Feedback geben zu...

Compute Engine-Dokumentation