Autoscaling für hochskalierbare Anwendungen verwenden


In dieser Anleitung wird beschrieben, wie Sie mithilfe von Autoscaling die Anzahl der VM-Instanzen, die Ihre Anwendung hosten, automatisch anpassen. So kann die Anwendung auf wechselnde Trafficvolumen entsprechend reagieren.

Zur Verwendung von Autoscaling hosten Sie die Anwendung in einer verwalteten Instanzgruppe. Eine verwaltete Instanzgruppe besteht aus mehreren Instanzen, die dieselbe Anwendung ausführen und als eine Einheit verwaltet werden können. Wenn Autoscaling für eine verwaltete Instanzgruppe aktiviert ist, wird die Anzahl der VMs in der Instanzgruppe gemäß dem von Ihnen in der Autoscaling-Richtlinie angegebenen Zielwert automatisch erhöht (hochskaliert) oder verringert (herunterskaliert).

Diese Anleitung enthält ausführliche Schritte zu folgenden Vorgängen: Starten einer Webanwendung in einer verwalteten Instanzgruppe, Einrichten des Autoscalings, Konfigurieren des Netzwerkzugriffs und Beobachten des Autoscalings durch Simulation von Lastanstiegen und -abfällen. Je nachdem, wie vertraut Sie mit diesen Features sind, benötigen Sie für diese Anleitung ungefähr 20 Minuten.

Ziele

  • Demo-Webanwendung in einer verwalteten Instanzgruppe starten
  • Auswirkungen des Autoscalings durch Simulation von Trafficanstiegen und -abfällen beobachten

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • Compute Engine

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

Anwendungsarchitektur

Die Anwendung enthält die folgenden Compute Engine-Komponenten:

  • Firewallregel: eine Google Cloud-Firewall ermöglicht Ihnen, Traffic an Ihre Instanzen zuzulassen oder abzulehnen.
  • Instanzvorlage: eine Vorlage zum Erstellen der einzelnen VM-Instanzen in der verwalteten Instanzgruppe.
  • Regionale verwaltete Instanzgruppe: eine Gruppe von VM-Instanzen, auf denen dieselbe Anwendung in mehreren Zonen ausgeführt wird.

Webanwendung starten

In dieser Anleitung wird eine auf GitHub gespeicherte Webanwendung verwendet. Weitere Informationen zur Implementierung der Anwendung finden Sie im Repository GoogleCloudPlatform/python-docs-samples auf GitHub.

Starten Sie die Webanwendung auf jeder VM in einer verwalteten Instanzgruppe. Fügen Sie dazu ein Startskript in eine Instanzvorlage ein. Erstellen Sie außerdem eine Firewallregel, um HTTP-Traffic an die Webanwendung zuzulassen.

Firewallregel erstellen

Erstellen Sie eine Firewallregel, um HTTP-Traffic an die Webanwendung zuzulassen:

  1. Rufen Sie in der Google Cloud Console die Seite Firewalls auf.

    Zu Firewalls

  2. Klicken Sie auf Firewallregel erstellen.

  3. Geben Sie für Name default-allow-http ein.

  4. Legen Sie für Netzwerk default fest.

  5. Wählen Sie für Ziele Specified target tags aus.

  6. Geben Sie für Ziel-Tags http-server ein.

  7. Legen Sie Quellfilter auf IP ranges fest.

  8. Geben Sie unter Quell-IP-Bereiche 0.0.0.0/0 ein,

    um den Zugriff für alle IP-Adressen zuzulassen.

  9. Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus. Wählen Sie anschließend tcp aus und geben Sie 80 ein, um den Zugriff für HTTP-Traffic zuzulassen.

  10. Klicken Sie auf Erstellen.

Instanzvorlage erstellen

Erstellen Sie eine Instanzvorlage, die die Demo-Webanwendung beim Start hochfährt:

  1. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Zu Instanzvorlagen

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Geben Sie für Name autoscaling-web-app-template ein.

  4. Legen Sie unter Maschinenkonfiguration den Maschinentyp auf e2-standard-2 fest.

  5. Klicken Sie unter Firewall das Kästchen HTTP-Traffic zulassen an. Damit wird das Netzwerk-Tag http-server auf jede aus dieser Vorlage erstellte Instanz angewendet.

  6. Klicken Sie auf Netzwerk, Laufwerke, Sicherheit, Verwaltung, einzelne Mandanten, um erweiterte Optionen aufzurufen.

  7. Suchen Sie auf dem Tab Verwaltung nach Automatisierung und geben Sie das folgende Startskript ein:

    sudo apt update && sudo apt -y install git gunicorn3 python3-pip
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

    Dieses Skript bewirkt, dass jede Instanz die Webanwendung beim Start ausführt.

  8. Klicken Sie auf Erstellen.

Verwaltete Instanzgruppe erstellen

Erstellen Sie eine regionale Instanzgruppe, um die Webanwendung auszuführen:

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.

  3. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.

  4. Geben Sie für Name autoscaling-web-app-group ein.

  5. Wählen Sie bei Instanzvorlage die Option autoscaling-web-app-template aus.

  6. Wählen Sie unter Standort die Option Mehrere Zonen aus.

  7. Wählen Sie als Region die Option us-central1 aus.

  8. Wählen Sie unter Zonen die folgenden Zonen aus der Drop-down-Liste aus:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. Konfigurieren Sie Autoscaling für die Instanzgruppe:

    1. Wählen Sie für den Autoscaling-Modus die Option Ein: der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.
    2. Legen Sie Mindestzahl von Instanzen auf 3 fest.

    3. Legen Sie Maximale Anzahl von Instanzen auf 6 fest.

    4. Legen Sie den Initialisierungszeitraum auf 120 Sekunden fest.

    5. Wählen Sie unter Messwerte für Autoscaling den Messwerttyp CPU-Auslastung aus. Weitere Informationen zu Autoscaling-Messwerten finden Sie unter Autoscaling-Richtlinie.

    6. Legen Sie die CPU-Zielauslastung auf 60 fest.

    7. Klicken Sie auf Fertig.

  10. Wählen Sie unter Automatische Reparatur aus der Drop-down-Liste Systemdiagnose die Option Keine Systemdiagnose aus.

  11. Klicken Sie auf Erstellen. Damit kehren Sie wieder zur Seite Instanzgruppen zurück.

  12. Prüfen Sie, ob Ihre Instanzen ausgeführt werden:

    1. Klicken Sie in der Google Cloud Console auf der Seite Instanzgruppen auf autoscaling-web-app-group, um die Instanzen in dieser Gruppe aufzurufen.
    2. Klicken Sie unter Externe IP-Adresse auf eine IP-Adresse, um eine Verbindung zur jeweiligen Instanz herzustellen. Ein neuer Browsertab mit der Demo-Webanwendung wird geöffnet:

      Demo-Webanwendung mit Aktionsschaltflächen, die Informationen über die Instanz auflistet

      Wenn Sie fertig sind, schließen Sie den Browsertab der Demo-Webanwendung.

Autoscaling beobachten

Weitere Informationen zu Autoscaling-Verhaltensweisen finden Sie unter Autoscaling-Entscheidungen.

Autoscaling überwachen

Die von Ihnen erstellte Instanzgruppe verwendet eine Autoscaling-Richtlinie, die auf der CPU-Nutzung basiert. Dies bedeutet, dass das Autoscaling die Gruppe entsprechend der angestrebten CPU-Zielauslastung von 60 % vergrößert oder verkleinert.

Zum Überwachen der Größe und der CPU-Auslastung Ihrer Instanzgruppe verwenden Sie die Autoscaling-Diagramme in der Google Cloud Console:

  1. Klicken Sie auf der Seite Instanzgruppen für die Instanzgruppe autoscaling-web-app-group auf den Tab Monitoring.
  2. Sie können das Autoscaling im Gruppenumfang überwachen. Im Diagramm werden Instanzen angezeigt, die die Anzahl von VM-Instanzen in der Gruppe im Zeitverlauf darstellen.
  3. Optional: Informationen zum Überwachen der automatisch skalierten Kapazität im Vergleich zur Auslastung finden Sie im Diagramm Autoscaling-Auslastung (CPU). Das Diagramm zeigt die Verwendung an, d. h. die gesamte CPU-Auslastung der VM-Instanzen in der Gruppe, und die Kapazität, die die kumulative CPU-Zielauslastung der Gruppe darstellt (CPU-Zielauslastung multipliziert mit der Anzahl der VM-Instanzen).

    Das Autoscaling versucht, die Kapazität auf die Auslastung abzustimmen. Dafür wird die Anzahl der Instanzen nach Möglichkeit geändert.

Lassen Sie dieses Fenster geöffnet.

Hochskalierung simulieren

Wenn die durchschnittliche CPU-Auslastung der Instanzgruppe wesentlich höher als der Zielwert ist, erfolgt eine Hochskalierung. Dabei wird die Größe der Instanzgruppe vom Autoscaling graduell aufgestockt, bis die CPU-Auslastung auf den Zielwert für die CPU-Auslastung abfällt oder die Größe der Instanzgruppe der maximalen Anzahl von Instanzen entspricht, die auf 6 festgelegt wurde.

Erhöhen Sie zum Auslösen der Hochskalierung die CPU-Auslastung für Ihre Instanzen:

  1. Öffnen Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell öffnen

    Cloud Shell wird unten in der Google Cloud Console geöffnet. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Erstellen Sie eine lokale Bash-Variable für die Projekt-ID:

    export PROJECT_ID=[PROJECT_ID]
    

    Dabei ist PROJECT_ID die Projekt-ID Ihres aktuellen Projekts, die in jeder neuen Cloud Shell-Zeile angezeigt wird:

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. Führen Sie das unten gezeigte Bash-Skript aus. Dieses Skript führt zu einer höheren Last für die Demo-Webanwendungsinstanzen, was die CPU-Auslastung erhöht. Nach einigen Minuten überschreitet die CPU-Auslastung den Zielwert, woraufhin die Größe der Instanzgruppe vom Autoscaling erhöht wird:

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. Öffnen Sie in der Google Cloud Console den Tab Monitoring.

    Nach einigen Minuten wird auf dem Tab Monitoring der Anstieg der CPU-Auslastung unter Utilization (Auslastung) angezeigt. Dadurch wird das Autoscaling ausgelöst, um Capacity (Kapazität) durch Erhöhen der Anzahl der Instanzen zu erhöhen.

    Beachten Sie auch, dass auf dem Tab Übersicht jetzt sechs Instanzen aufgeführt sind.

Lassen Sie beide Fenster geöffnet.

Herunterskalierung simulieren

Wenn die durchschnittliche CPU-Auslastung der Instanzgruppe wesentlich niedriger als der Zielwert ist, erfolgt eine Herunterskalierung. Dabei wird die Größe der Instanzgruppe vom Autoscaling graduell verringert, bis die CPU-Auslastung auf den Zielwert für die CPU-Auslastung ansteigt oder die Größe der Instanzgruppe der Mindestzahl von Instanzen entspricht, die auf 3 festgelegt wurde.

Verringern Sie zum Auslösen der Herunterskalierung die CPU-Auslastung für Ihre Instanzen:

  1. Führen Sie das unten gezeigte Bash-Skript aus. Dieses Skript führt zu einer geringeren Last für die Demo-Webanwendungsinstanzen, was die CPU-Auslastung verringert. Nach einigen Minuten unterschreitet die CPU-Auslastung den Zielwert, woraufhin die Größe der Instanzgruppe vom Autoscaling verringert wird:

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. Öffnen Sie in der Google Cloud Console den Tab Monitoring.

    Nach einigen Minuten wird im Tab Monitoring unter Auslastung der Abfall der CPU-Auslastung angezeigt. Nach dem Stabilisierungszeitraum, welcher bestätigt, dass die Last konstant niedriger ist, verringert das Autoscaling die Kapazität, indem es die Anzahl der Instanzen verringert.

    Beachten Sie auch, dass auf dem Tab Übersicht jetzt drei Instanzen aufgeführt sind.

Schließen Sie beide Fenster, wenn Sie fertig sind.

Bereinigen

Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Wenn Sie für diese Anleitung ein eigenes Projekt erstellt haben, löschen Sie das gesamte Projekt. Falls das Projekt Ressourcen enthält, die Sie behalten möchten, löschen Sie nur die in dieser Anleitung erstellten Ressourcen.

Projekt löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Bestimmte Ressourcen löschen

Instanzgruppe löschen

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie auf das Kästchen für Ihre autoscaling-web-app-group-Instanzgruppe.
  3. Klicken Sie zum Löschen der Instanzgruppe auf Löschen.

Instanzvorlage löschen

  1. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Instanzvorlagen aufrufen

  2. Klicken Sie auf das Kästchen neben autoscaling-web-app-template.

  3. Klicken Sie oben auf der Seite auf Löschen. Klicken Sie im neuen Fenster auf Löschen, um den Löschvorgang zu bestätigen.

Firewallregel löschen

  1. Rufen Sie in der Google Cloud Console die Seite Firewallregeln auf.

    Zu Firewallregeln

  2. Klicken Sie auf das Kästchen neben der Firewallregel namens default-allow-http.

  3. Klicken Sie oben auf der Seite auf Löschen. Klicken Sie im neuen Fenster auf Löschen, um den Löschvorgang zu bestätigen.

Weitere Informationen