Autoscaling-Richtlinie mit mehreren Signalen verwenden


Wenn Sie eine Autoscaling-Richtlinie mit mehreren Signalen erstellen, erfolgt die Skalierung auf Grundlage des Signals, das die höchste Anzahl VM-Instanzen in der verwalteten Instanzgruppe (Managed Instance Group, MIG) bereitstellt. Dadurch wird sichergestellt, dass immer genügend VMs für die Verarbeitung der Anwendungsarbeitslasten vorhanden sind, und Sie können Anwendungen mit mehreren möglichen Engpässen skalieren.

Weitere Informationen zu den verschiedenen Arten von Autoscaling-Signalen finden Sie unter Autoscaling-Richtlinie.

Hinweise

  • Informieren Sie sich über die Grundlagen des Autoscalings.
  • 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

Autoscaling mit mehreren Signalen

Ein Autoscaling verarbeitet mehrere Signale, indem die empfohlene Anzahl von VMs für jedes Signal berechnet wird und dann das Signal ausgewählt wird, mit dem die größte Anzahl von VMs in der MIG erreicht wird.

Das Autoscaling kann ein Signal pro Messwerttyp verarbeiten, außer bei Cloud Monitoring-Messwerten und Skalierungsplänen. Sie können bis zu 5 Autoscaling-Signale für Cloud Monitoring-Messwerte auswählen und bis zu 128 Zeitpläne pro MIG erstellen. Sie können beispielsweise ein Autoscaling einrichten, das bis zu 1 CPU-Auslastungssignal, bis zu 1 Load-Balancing-Signal, bis zu 5 benutzerdefinierte Messwertsignale und bis zu 128 Skalierungspläne verwendet.

Sie können beispielsweise ein Autoscaling mit den folgenden Signalen definieren:

  • cpuUtilization mit einer Zielvorgabe von 0,8
  • loadBalancingUtilization mit einer Zielvorgabe von 0,6
  • customMetricUtilization für Messwert1 mit einer Zielvorgabe von 1.000
  • customMetricUtilization für Messwert2 mit einer Zielvorgabe von 2.000.
  • scalingSchedules
    • Mindestens 6 VMs jeden Samstag und Sonntag um 00:00 Uhr
    • Mindestens 15 VMs jeden Montag bis Freitag um 9:00 Uhr für 8 Stunden

In diesem Beispiel wird vom Autoscaling die folgenden durchschnittlichen Auslastungswerte für eine MIG gemessen, die zum Zeitpunkt der Messung 10 VMs enthält:

  • 0,5 für CPU-Auslastung
  • 0,4 für Load-Balancing-Auslastung
  • 1.100 für Messwert1
  • 2.700 für Messwert2

Anhand der vorherigen Werte berechnet das Autoscaling die empfohlene Anzahl von VMs auf der Grundlage jedes Signals:

  • 7 VMs basierend auf der CPU-Auslastung
  • 7 VMs basierend auf der Load-Balancing-Auslastung
  • 11 VMs basierend auf Messwert1
  • 14 VMs basierend auf Messwert2
  • 6 VMs jeden Samstag und Sonntag für den ganzen Tag basierend auf dem ersten Skalierungsplan
  • 15 VMs zwischen Montag bis Freitag, 9:00 Uhr bis 17:00 Uhr, basierend auf dem zweiten Skalierungsplan

Der Autoscaler wählt das Signal aus, die zur größten Anzahl von VMs in der MIG führt, und legt die empfohlene Größe der MIG auf diesen Wert fest. In diesem Fall passt das Autoscaling die MIG auf 15 VMs an, wenn der zweite Zeitplan derzeit aktiv ist oder andernfalls auf 14 VMs.

Autoscaling mit mehreren Signalen erstellen

Je nachdem, ob Sie die Google Cloud Console, die gcloud CLI oder REST verwenden, gibt es beim Anlegen eines Autoscalings geringfügige Unterschiede.

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 einer MIG. Klicken Sie dann auf Bearbeiten.

  3. Aktivieren Sie Autoscaling auf der Bearbeitungsseite unter Autoscaling-Modus. Wählen Sie dazu im Drop-down-Menü die Option Ein: Der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.

  4. Geben Sie unter Mindestanzahl der Instanzen die Mindestanzahl von VMs ein, die Sie für diese MIG verwenden möchten. Die Mindestgröße dieser MIG bleibt unabhängig von den Autoscaling-Signalen immer erhalten.

  5. Geben Sie unter Maximale Anzahl von Instanzen die maximale Anzahl von VMs ein, die für diese MIG verwendet werden sollen. Die maximale Größe dieser MIG wird niemals überschritten, unabhängig von der von den Autoscaling-Signalen generierten empfohlenen Größe.

  6. Klicken Sie für jedes messwertbasierte Autoscaling-Signal, das Sie hinzufügen möchten, unter Autoscaling-Messwerte auf Messwert hinzufügen.

    • Wählen Sie zum Erstellen eines Autoscaling-Signals basierend auf der durchschnittlichen CPU-Auslastung unter Messwerttyp im Drop-down-Menü die Option CPU-Auslastung aus. Geben Sie dann eine CPU-Zielauslastung ein und klicken Sie auf Fertig. Weitere Informationen hierzu finden Sie unter Basierend auf der CPU-Auslastung skalieren.
    • Wählen Sie zum Erstellen eines Autoscaling-Signals basierend auf der HTTP-Load-Balancing-Bereitstellungskapazität unter Messwerttyp die Option HTTP-Load-Balancing-Auslastung aus dem Drop-down-Menü aus. Geben Sie dann eine Ziel-HTTP-Load-Balancing-Auslastung ein und klicken Sie auf Fertig. Weitere Informationen finden Sie unter Anhand von Load-Balancing-Bereitstellungskapazität skalieren.
    • Wählen Sie zum Erstellen eines Autoscaling-Signals basierend auf Cloud Monitoring-Messwerten unter Messwerttyp die Option Cloud Monitoring-Messwert aus dem Drop-down-Menü aus. Füllen Sie dann die übrigen Felder aus und klicken Sie auf Fertig. Weitere Informationen finden Sie unter Anhand von Cloud Monitoring-Messwerten skalieren.
  7. Erweitern Sie für jedes zeitplanbasierte Autoscaling-Signal, das Sie hinzufügen möchten, den Abschnitt Autoscaling-Zeitpläne, klicken Sie auf Zeitpläne verwalten und dann auf Zeitplan erstellen.

  8. Füllen Sie im neuen Bereich Skalierungsplan erstellen die Pflichtfelder aus und klicken Sie auf Speichern. Klicken Sie dann im Bereich Skalierungspläne auf Fertig. Weitere Informationen hierzu finden Sie unter Anhand von Zeitplänen skalieren.

  9. Geben Sie unter Initialisierungsphase die Anzahl der Sekunden ein, die Ihre Anwendung initialisieren muss, damit Ihre VMs die Initialisierung abschließen können, bevor das Autoscaling die Nutzungsdaten zuverlässig berücksichtigt. Weitere Informationen finden Sie unter Initialisierungsphase.

  10. Optional: Klicken Sie zum Aktivieren der Steuerelemente für die Herunterskalierung auf Steuerelemente für die Herunterskalierung und dann auf das Kästchen Steuerelemente für die Herunterskalierung aktivieren. Weitere Informationen finden Sie unter Steuerelemente für die Herunterskalierung.

  11. Klicken Sie auf Speichern.

gcloud

Zum Erstellen eines Autoscalings mit mehreren Signalen verwenden Sie den Befehl set-autoscaling. Übergeben Sie mehrere Signalspezifikationen mithilfe ihrer jeweiligen Befehlszeilen-Flags.

Der folgende Befehl erstellt beispielsweise ein Autoscaling, das CPU-Auslastung, Load-Balancing-Bereitstellungskapazität, zwei benutzerdefinierte Messwerte und einen Skalierungsplan verwendet. Die Flags --max-num-replicas und --min-num-replicas schränken ein, wie groß oder klein die MIG erreichen kann.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

Dabei gilt:

  • MIG_NAME: der Name einer MIG.
  • PATH_TO_CUSTOM_METRIC_1 und PATH_TO_CUSTOM_METRIC_2: Optional: Pfade zu benutzerdefinierten Messwerten mit einem Format, das etwa custom.cloudmonitoring.googleapis.com/path/to/metric1 und custom.cloudmonitoring.googleapis.com/path/to/metric2 entspricht. Weitere Informationen finden Sie unter Benutzerdefinierte Messwerte.

Mit Ausnahme der Flags für benutzerdefinierte Messwerte können Sie pro gcloud-Befehl nur maximal ein Flag für jeden Messwerttyp übergeben. Bei benutzerdefinierten Messwerten können Sie mehrere benutzerdefinierte Messwerte in einem einzigen Befehl bereitstellen. Wiederholen Sie dazu das Flag --custom-metric-utilization.

Weitere Informationen zum Konfigurieren der Flags für jeden Signaltyp für die automatische Skalierung finden Sie auf den folgenden Seiten:

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.

Durch die folgende Anfrage wird beispielsweise ein Autoscaling erstellt, das die CPU-Auslastung, die Load-Balancing-Bereitstellungskapazität, zwei benutzerdefinierte Messwerte und zwei Skalierungspläne verwendet. Die Felder maxNumReplicas und minNumReplicas schränken ein, wie groß oder klein die MIG erreichen kann.

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

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

Dabei gilt:

  • PROJECT: Ihre Projekt-ID
  • ZONE: Zone, in der sich die MIG befindet
  • MIG_NAME: der Name einer MIG.
  • PATH_TO_CUSTOM_METRIC_1 und PATH_TO_CUSTOM_METRIC_2: Optional: Pfade zu benutzerdefinierten Messwerten mit einem Format, das etwa custom.cloudmonitoring.googleapis.com/path/to/metric1 und custom.cloudmonitoring.googleapis.com/path/to/metric2 entspricht. Weitere Informationen finden Sie unter Benutzerdefinierte Messwerte.

Wie in diesem Beispiel gezeigt, können Sie mehrere benutzerdefinierte Messwerte und Skalierungspläne in derselben Anfrage bereitstellen.

Weitere Informationen zum Konfigurieren der Felder für die einzelnen Signaltypen für die automatische Skalierung finden Sie auf den folgenden Seiten: