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.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
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:
Rufen Sie in der Google Cloud Console die Seite Firewalls auf.
Klicken Sie auf Firewallregel erstellen.
Geben Sie für Name
default-allow-http
ein.Legen Sie für Netzwerk
default
fest.Wählen Sie für Ziele
Specified target tags
aus.Geben Sie für Ziel-Tags
http-server
ein.Legen Sie für Quellfilter
IPv4 ranges
fest.Geben Sie unter Quell-IPv4-Bereiche
0.0.0.0/0
ein,um den Zugriff für alle IP-Adressen zuzulassen.
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.Klicken Sie auf Erstellen.
Instanzvorlage erstellen
Erstellen Sie eine Instanzvorlage, die die Demo-Webanwendung beim Start hochfährt:
Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
Klicken Sie auf Instanzvorlage erstellen.
Geben Sie für Name
autoscaling-web-app-template
ein.Legen Sie unter Maschinenkonfiguration den Maschinentyp auf
e2-standard-2
fest.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.Maximieren Sie den Abschnitt Erweiterte Optionen, um erweiterte Einstellungen einzublenden.
Maximieren Sie den Bereich Verwaltung.
Geben Sie im Feld Automatisierung folgendes 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 VM die Webanwendung beim Start ausführt.
Klicken Sie auf Erstellen.
Verwaltete Instanzgruppe erstellen
Erstellen Sie eine regionale Instanzgruppe, um die Webanwendung auszuführen:
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Klicken Sie auf Instanzgruppe erstellen, um eine neue Instanzgruppe zu erstellen.
Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.
Geben Sie für Name
autoscaling-web-app-group
ein.Wählen Sie bei Instanzvorlage die Option
autoscaling-web-app-template
aus.Wählen Sie unter Standort die Option Mehrere Zonen aus.
Wählen Sie als Region die Option us-central1 aus.
Wählen Sie unter Zonen die folgenden Zonen aus der Drop-down-Liste aus:
- us-central1-b
- us-central1-c
- us-central1-f
Konfigurieren Sie Autoscaling für die Instanzgruppe:
- Wählen Sie für den Autoscaling-Modus die Option Ein: der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.
Legen Sie Mindestzahl von Instanzen auf
3
fest.Legen Sie Maximale Anzahl von Instanzen auf
6
fest.Legen Sie den Initialisierungszeitraum auf
120
Sekunden fest.Wählen Sie unter Messwerte für Autoscaling den Messwerttyp CPU-Auslastung aus. Weitere Informationen zu Autoscaling-Messwerten finden Sie unter Autoscaling-Richtlinie.
Legen Sie die CPU-Zielauslastung auf
60
fest.Klicken Sie auf Fertig.
Wählen Sie unter Automatische Reparatur aus der Drop-down-Liste Systemdiagnose die Option Keine Systemdiagnose aus.
Klicken Sie auf Erstellen. Damit kehren Sie wieder zur Seite Instanzgruppen zurück.
Prüfen Sie, ob Ihre Instanzen ausgeführt werden:
- Klicken Sie in der Google Cloud Console auf der Seite Instanzgruppen auf
autoscaling-web-app-group
, um die Instanzen in dieser Gruppe aufzurufen. 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:
Wenn Sie fertig sind, schließen Sie den Browsertab der Demo-Webanwendung.
- Klicken Sie in der Google Cloud Console auf der Seite Instanzgruppen auf
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:
- Klicken Sie auf der Seite Instanzgruppen für die Instanzgruppe
autoscaling-web-app-group
auf den Tab Monitoring. - 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.
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:
Öffnen Sie Cloud Shell in der Google Cloud Console.
Cloud Shell wird unten in der Google Cloud Console geöffnet. Das Initialisieren der Sitzung kann einige Sekunden dauern.
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])$
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
Ö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:
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
Ö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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Bestimmte Ressourcen löschen
Instanzgruppe löschen
- In the Google Cloud console, go to the Instance groups page.
-
Select the checkbox for
your
autoscaling-web-app-group
instance group. - To delete the instance group, click Delete.
Instanzvorlage löschen
Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
Klicken Sie auf das Kästchen neben
autoscaling-web-app-template
.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
Rufen Sie in der Google Cloud Console die Seite Firewallregeln auf.
Klicken Sie auf das Kästchen neben der Firewallregel namens
default-allow-http
.Klicken Sie auf
Löschen. Klicken Sie im neuen Fenster auf Löschen, um den Löschvorgang zu bestätigen.
Nächste Schritte
- Probieren Sie eine andere Anleitung aus.
- Mehr über verwaltete Instanzgruppen erfahren
- Mehr über Autoscaling erfahren
- Robuste Systeme konzipieren
- Skalierbare und robuste Webanwendungen auf der Google Cloud erstellen