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 dieser Anleitung werden kostenpflichtige Komponenten der Google Cloud verwendet, darunter:

  • Compute Engine

Sie können mithilfe des Preisrechners die Kosten für Ihre voraussichtliche Nutzung kalkulieren. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Vorbereitung

  1. Melden Sie sich in Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie in der GCP Console auf der Projektauswahlseite ein GCP-Projekt aus oder erstellen Sie eins.

    Zur Projektauswahl

  3. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist. So bestätigen Sie die Abrechnung für Ihr Projekt.

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 GitHub-Repository von Google Cloud.

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. Gehen Sie in der Cloud Console zur Seite Firewalls.
    Zur Seite "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 für Quellfilter IP ranges fest.
  8. Geben Sie unter Quell-IP-Bereiche den 0.0.0.0/0 ein, um 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 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. Gehen Sie in der Cloud Console zur Seite Instanzvorlagen.
    Zur Seite "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 n1-standard-1 fest.
  5. Legen Sie unter Bootlaufwerk das Image auf Debian GNU/Linux 9 (Stretch) fest.
  6. 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.
  7. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, Einzelne Mandanten, um erweiterte Optionen aufzurufen. Sie sollten eine Reihe von Tabs sehen.
  8. Suchen Sie auf dem Tab Verwaltung nach Automatisierung und geben Sie das folgende Startskript ein:

    sudo apt-get update && sudo apt-get install git gunicorn3 python3-pip -y
    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.

  9. Klicken Sie auf Erstellen.

Verwaltete Instanzgruppe erstellen

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

  1. Öffnen Sie in der Cloud Console die Seite Instanzgruppen.
    Zur Seite "Instanzgruppen"
  2. Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.
  3. Geben Sie für Name autoscaling-web-app-group ein.
  4. Wählen Sie unter Standort die Option Mehrere Zonen aus.

  5. Wählen Sie unter Region die Option us-central1 aus.

  6. Klicken Sie auf das Drop-down-Menü Zonen konfigurieren, um Zonen einzublenden. Wählen Sie die folgenden Zonen aus:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  7. Wählen Sie unter Instanzvorlage autoscaling-web-app-template aus.

  8. Konfigurieren Sie Autoscaling für die Instanzgruppe:

    1. Wählen Sie unter Autoscaling die Option An aus.
    2. Legen Sie Autoscaling-Richtlinie auf CPU-Nutzung fest. Weitere Informationen zu anderen Autoscaling-Richtlinien finden Sie unter Autoscaling-Richtlinie und Zielauslastung.

    3. Legen Sie CPU-Zielauslastung auf 60 % fest.

    4. Legen Sie Mindestzahl von Instanzen auf 3 fest.

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

    6. Legen Sie Wartezeit auf 120 Sekunden fest.

  9. Wählen Sie unter Systemdiagnose die Option Keine Systemdiagnose aus.

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

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

    1. Klicken Sie in der GCP 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:

      Screenshot der Demo-Webanwendung, der Informationen zur Instanz und Aktionsschaltflächen enthält.

      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 durchschnittlichen CPU-Auslastung Ihrer Instanzgruppe verwenden Sie die Autoscaling-Diagramme in der Cloud Console:

  1. Klicken Sie auf der Seite Instanzgruppen für die Instanzgruppe autoscaling-web-app-group auf den Tab Monitoring.
  2. Wählen Sie zum Überwachen der CPU-Auslastung und des Autoscalings die Option Automatisch skalierte Größe im Drop-down-Menü auf der linken Seite und CPU im Drop-down-Menü auf der rechten Seite aus.

    Dadurch werden zwei Grafiken angezeigt:

    • Die obere Grafik zeigt die Größe, wobei es sich um die Anzahl der Instanzen in der Instanzgruppe handelt.
    • Die untere Grafik zeigt die Auslastung und die Kapazität, wobei es sich um die durchschnittliche CPU-Auslastung bzw. die kumulative CPU-Zielauslastung der Instanzgruppe handelt.

    Das Autoscaling versucht, die Kapazität auf die Auslastung abzustimmen. Dafür wird die Größe 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 in der Cloud Console mit Cloud Shell ein Terminal.

    Cloud Shell öffnen

    Cloud Shell wird unten in der 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 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 des Werts von Size (Größe) für die Instanzgruppe zu erhöhen:

    Das Monitoring zeigt, dass die CPU-Auslastung gestiegen ist. Kurz darauf erhöht sich die Größe der Gruppe von drei Instanzen auf sechs Instanzen.

    Beachten Sie auch, dass auf dem Tab Members (Mitglieder) 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 Cloud Console den Tab Monitoring.

    Nach einigen Minuten wird auf dem Tab Monitoring der Abfall der CPU-Auslastung unter Utilization (Auslastung) angezeigt. Nach einem zehnminütigen Stabilisierungszeitraum zur Bestätigung, dass die Last konstant niedriger ist, setzt das Autoscaling den Wert von Capacity (Kapazität) durch Verringern des Werts von Size (Größe) für die Instanzgruppe herab:

    Das Monitoring zeigt, dass die CPU-Auslastung abgefallen ist. Ungefähr zehn Minuten später verringert sich die Größe der Gruppe von sechs Instanzen auf drei Instanzen.

    Beachten Sie auch, dass auf dem Tab Members (Mitglieder) jetzt drei Instanzen aufgeführt sind.

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

Bereinigen

Nachdem Sie die Autoscaling-Anleitung abgeschlossen haben, können Sie die auf der GCP erstellten Ressourcen bereinigen, damit sie keine kostenpflichtigen Kontingente verbrauchen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.

Wenn Sie für diese Anleitung ein separates 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. Rufen Sie in der GCP Console die Seite Ressourcen verwalten auf.

    Zur Seite "Ressourcen verwalten"

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

Bestimmte Ressourcen löschen

Instanzgruppe löschen

  1. Rufen Sie in der GCP Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf das Kästchen für Ihre autoscaling-web-app-group Instanzgruppe.
  3. Klicken Sie auf Löschen , um die Instanzgruppe zu löschen.

Instanzvorlage löschen

  1. Gehen Sie in der Cloud Console zur Seite Instanzvorlagen.

    Zur Seite "Instanzvorlagen"

  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 Cloud Console die Seite "Firewallregeln" auf.

    Zur Seite "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