Mehrere Richtlinien verwenden

Wenn Sie ein Autoscaling mit mehreren Richtlinien erstellen, erfolgt die Skalierung anhand jener Richtlinie, mit der die größte Anzahl an virtuellen Maschinen in der Gruppe vorhanden ist. So stehen immer genügend virtuelle Maschinen für Ihre Anwendungs-Arbeitslasten bereit und Anwendungen mit mehreren möglichen Engpässen können skaliert werden.

Vorbereitung

Autoscaling mit mehreren Richtinien

Das Autoscaling berechnet bei Verwendung mehrerer Richtlinien die empfohlene Anzahl an virtuellen Maschinen für jede Richtlinie. Die Skalierung erfolgt auf Grundlage jener Richtlinie, mit der die größte Anzahl an virtuellen Maschinen in der Gruppe bleibt.

Ein Autoscaling kann eine Richtlinie pro Messwerttyp verarbeiten, außer im Fall von Cloud Monitoring-Messwerten. Sie können bis zu fünf Richtlinien für Cloud Monitoring-Messwerte auswählen. Sie können beispielsweise ein Autoscaling einrichten, das eine CPU-Nutzungsrichtlinie, eine Load-Balancing-Richtlinie und bis zu fünf benutzerdefinierte Messwertrichtlinien verwendet.

Angenommen, Sie haben ein Autoscaling mit den folgenden Richtliniendefinitionen festgelegt:

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

Das Autoscaling analysiert die folgenden Durchschnittswerte für die verwaltete Instanzgruppe, die zehn virtuelle Maschinen 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 dieser Durchschnittswerte empfiehlt das Autoscaling für jede Richtlinie die passende Anzahl an virtuellen Maschinen.

  • 7 virtuelle Maschinen basierend auf der CPU-Auslastung.
  • 7 virtuelle Maschinen basierend auf der Load-Balancing-Auslastung.
  • 11 virtuelle Maschinen basierend auf Messwert1.
  • 14 virtuelle Maschinen basierend auf Messwert2.

Da hier mehr als eine Richtlinie angewendet wird, wählt das Autoscaling automatisch den größten empfohlenen Wert – in diesem Fall 14 virtuelle Maschinen – und ändert die Größe der verwalteten Instanzgruppe auf 14 virtuelle Maschinen.

Autoscaling mit mehreren Richtlinien erstellen

Je nachdem, ob Sie das gcloud-Befehlszeilentool oder die API verwenden, gibt es beim Anlegen eines Autoscalings geringfügige Unterschiede.

Console


  1. Gehen Sie zur Seite Instanzgruppen.
  2. Wählen Sie die gewünschte Instanzgruppe aus der Liste aus und klicken Sie auf Edit.
  3. Wählen Sie zum Aktivieren der Funktion Autoscaling unter Autoscaling auf der Seite der Instanzgruppendetails im Drop-down-Menü die Option On aus.
  4. Wählen Sie im Drop-down-Menü unter Autoscale based on die Option Multiple metrics aus.

    Screenshot zum Auswählen mehrerer Richtlinien

  5. Füllen Sie bei Bedarf die Felder für CPU-Auslastung und Auslastung bei Load-Balancing aus.

  6. Klicken Sie zum Hinzufügen eigener Messwertrichtlinien im Abschnitt Target monitoring metrics auf das Symbol + und füllen Sie die für eine benutzerdefinierte Messwertrichtlinie benötigten Felder aus.

    Screenshot zu benutzerdefinierten Messwerten

    Sie können durch Klicken auf das Symbol + mehrere benutzerdefinierte Messwertrichtlinien hinzufügen.

gcloud


Zum Erstellen eines Autoscalings mit mehreren Richtlinien müssen Sie die Spezifikationen für mehrere Richtlinien mit den jeweiligen Befehlszeilenflags festlegen. Mit dem folgenden Befehl wird ein Autoscaling erstellt, das die CPU-Auslastung und zwei benutzerdefinierte Messwerte verwendet:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --target-cpu-utilization 0.8 \
    --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/path/to/metric1,utilization-target=1000.0,utilization-target-type=GAUGE \
    --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/path/to/metric2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
    --max-num-replicas 50

Mit Ausnahme der Flags für benutzerdefinierte Messwerte können Sie pro Messwerttyp jeweils maximal ein Flag angeben.

Bei Verwendung von benutzerdefinierten Messwerten können Sie mehrere benutzerdefinierte Messwerte durch die Wiederholung der folgenden Parameter bestimmen:

--custom-metric-utilization metric=METRIC,utilization-target=TARGET,utilization-target-type=TYPE

API


In der API können Sie eine POST-Anfrage mit allen gewünschten Richtlinien stellen:

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

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "customMetricUtilizations":[
      {
        "metric": "custom.cloudmonitoring.googleapis.com/path/to/metric1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "custom.cloudmonitoring.googleapis.com/path/to/metric2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
    }
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/example-managed-instance-group",
  "name": "example-autoscaler"
}