Ziele
- Mehrere von Compute Engine verwaltete regionale Instanzgruppen mit aktiviertem Autoscaling bereit stellen.
- Einen regionenübergreifenden Load-Balancer einrichten.
- Testtraffic aus verschiedenen Regionen der Welt generieren
- In der Google Cloud Console die Weiterleitung von Anfragen durch den Load-Balancer und die automatische bedarfsgerechte Skalierung der Instanzgruppen visualisieren
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:- Compute Engine
Vorbereitung
-
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.
-
Enable the Compute Engine API.
Anwendungsarchitektur
Die Anwendung enthält die folgenden Compute Engine-Komponenten:
- Instanzvorlage: Mit dieser Vorlage werden alle Instanzen der Instanzgruppen erstellt.
- Instanzgruppen: Mehrere Instanzgruppen, die sich je nach eingehendem Traffic automatisch skalieren.
- Load-Balancer: Ein HTTP-Load-Balancer, der den Traffic zwischen den Instanzgruppen verteilt.
- Instanzen: Mehrere Testinstanzen zum Generieren von Test-Traffic aus verschiedenen Teilen der Welt.
Webdienst einrichten
Instanzgruppen erstellen
Console
Erstellen Sie ein Netzwerk für die Instanzgruppen.
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Legen Sie als Name
fortressnet
fest.Wählen Sie unter Modus für Subnetzerstellung die Option Automatisch aus.
Klicken Sie unten auf der Seite auf Erstellen.
Erstellen Sie eine Firewallregel für das Netzwerk. Die Regel lässt alle an Ihre Instanzen gesendeten HTTP-Anfragen zu.
Rufen Sie in der Google Cloud Console die Seite Firewallregeln auf.
Klicken Sie auf Firewallregel erstellen.
Legen Sie als Name
fortressnet-allow-http
fest.Wählen Sie für Netzwerk die Option
fortressnet
aus.Wählen Sie für Ziele die Option
All instances in the network
aus.Legen Sie für Quell-IPv4-Bereiche den Wert
0.0.0.0/0
fest.Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus, klicken Sie das Kästchen tcp an und geben Sie
80
ein.Klicken Sie auf Erstellen.
Erstellen Sie eine Instanzvorlage. Fügen Sie ein Startskript ein, das auf jeder Instanz einen einfachen Apache-Webserver startet.
Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
Klicken Sie auf Instanzvorlage erstellen.
Legen Sie als Name
fort-template
fest.Wählen Sie unter Maschinenkonfiguration die Option
e2-micro
(2 vCPUs, 1 GB Arbeitsspeicher) aus.Maximieren Sie im Abschnitt Erweiterte Optionen den Bereich Netzwerk und gehen Sie dann so vor:
- Maximieren Sie im Bereich Netzwerkschnittstellen eine Netzwerkschnittstelle, um sie zu bearbeiten.
- Wählen Sie für Netzwerk die Option
fortressnet
aus.
Geben Sie im Bereich Verwaltung unter Automatisierung folgendes Startskript ein:
apt update && apt -y install apache2
Klicken Sie auf Erstellen.
Erstellen Sie mehrere regional verwaltete Instanzgruppen mit der Instanzvorlage. Konfigurieren Sie Autoscaling für jede Instanzgruppe.
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Klicken Sie auf Instanzgruppe erstellen, um eine neue verwaltete Instanzgruppe zu erstellen.
Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.
Legen Sie als Name
us-central1-pool
fest.Wählen Sie bei Instanzvorlage die Option
fort-template
aus.Wählen Sie für Standort die Option Mehrere Zonen aus.
Wählen Sie bei Region die Option
us-central1
aus. Behalten Sie für Zonen die ausgewählten vordefinierten Werte bei.Wählen Sie für den Autoscaling-Modus die Option Ein: der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.
Setzen Sie die Mindestanzahl der Instanzen auf
1
.Setzen Sie die Höchstanzahl der Instanzen auf
5
.Bearbeiten Sie unter Autoscaling-Signale die Standardauswahl (CPU-Auslastung) und setzen Sie den Signaltyp auf HTTP-Load-Balancing-Auslastung.
Setzen Sie den Zielwert für die HTTP-Load-Balancing-Auslastung auf
80
.Klicken Sie auf Fertig.
Klicken Sie auf Erstellen. Ein Dialogfeld zeigt die Meldung an, dass Sie die Instanzgruppe auch einem Backend-Dienst eines HTTP-Load-Balancers zuweisen müssen.
Klicken Sie im Dialogfeld zur Bestätigung auf Bestätigen. Sie können den Load Balancer konfigurieren, nachdem Sie alle Instanzgruppen erstellt haben.
Wiederholen Sie diese Schritte, um zwei weitere Instanzgruppen mit folgenden Änderungen zu erstellen:
- Erstellen Sie eine Gruppe mit dem Namen
europe-west1-pool
und der Regioneurope-west1
. - Erstellen Sie eine Gruppe mit dem Namen
asia-east1-pool
und der Regionasia-east1
.
- Erstellen Sie eine Gruppe mit dem Namen
(Optional) Prüfen Sie, ob die Instanzen ordnungsgemäß arbeiten und HTTP-Traffic unterstützen. Testen Sie die externe IP-Adresse einer oder mehrerer Instanzen. Möglicherweise müssen Sie eine Minute warten, bis die Instanzen den Startvorgang abgeschlossen haben.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Prüfen Sie, ob für jede laufende Instanz ein grünes Häkchen in der Spalte Status neben dem Namen Ihrer Instanzgruppe angezeigt wird.
Kopieren Sie die externe IP-Adresse einer Instanz und fügen Sie sie in einen Browser ein.
Sie sollten die Webseite "Apache2 Debian Default Page" sehen.
Wenn dies nicht funktioniert, warten Sie einige Augenblicke.
gcloud
Erstellen Sie ein Netzwerk für die Instanzgruppen.
gcloud compute networks create fortressnet --subnet-mode auto
Erstellen Sie eine Firewallregel für das Netzwerk. Die Regel lässt alle an Ihre Instanzen gesendeten HTTP-Anfragen zu.
gcloud compute firewall-rules create fortressnet-allow-http \ --network fortressnet \ --allow tcp:80
Erstellen Sie eine Instanzvorlage. Fügen Sie ein Startskript ein, das auf jeder Instanz einen einfachen Apache-Webserver startet.
gcloud compute instance-templates create fort-template \ --machine-type e2-micro \ --network fortressnet \ --metadata startup-script='apt update && apt -y install apache2'
Erstellen Sie mehrere regional verwaltete Instanzgruppen mit der Instanzvorlage. Konfigurieren Sie Autoscaling für jede Instanzgruppe.
gcloud compute instance-groups managed create us-central1-pool \ --region us-central1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling us-central1-pool \ --region us-central1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
gcloud compute instance-groups managed create europe-west1-pool \ --region europe-west1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling europe-west1-pool \ --region europe-west1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
gcloud compute instance-groups managed create asia-east1-pool \ --region asia-east1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling asia-east1-pool \ --region asia-east1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
(Optional) Prüfen Sie, ob die Instanzen ordnungsgemäß arbeiten und HTTP-Traffic unterstützen. Testen Sie die externe IP-Adresse einer oder mehrerer Instanzen. Möglicherweise müssen Sie eine Minute warten, bis die Instanzen den Startvorgang abgeschlossen haben.
Listen Sie Ihre Instanzen auf.
gcloud compute instances list
Prüfen Sie in der Spalte
STATUS
, ob für die InstanzenRUNNING
angegeben wird.Überprüfen Sie eine Instanz, indem Sie ihre IP-Adresse in der Spalte
EXTERNAL_IP
abfragen.curl http://EXTERNAL_IP | head
Der angezeigte HTML-Text sollte unter anderem die Zeile
<title>Apache2 Debian Default Page: It works</title>
enthalten.Wenn dies nicht funktioniert, warten Sie einige Augenblicke.
Load-Balancer konfigurieren
Der Load-Balancer verteilt Client-Anfragen auf Ihre verschiedenen Back-Ends.
Console
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
- Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
- Wählen Sie unter Generation des Load Balancers die Option Globaler externer Application Load Balancer aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Legen Sie
fortressnet-balancer
als Namen des Load Balancers fest.
Backend-Konfiguration
- Klicken Sie auf der Seite Globalen externen Application Load Balancer erstellen auf Backend-Konfiguration.
- Wählen Sie im Drop-down-Menü Backend-Dienste und Backend-Buckets erstellen oder auswählen die Option Backend-Dienste und anschließend Backend-Dienst erstellen aus. Das Dialogfeld Back-End-Dienst erstellen wird aufgerufen.
- Legen Sie als Name für den Back-End-Dienst
fortressnet-backend-service
fest. - Legen Sie im Dialogfeld Neues Back-End als Instanzgruppe
asia-east1-pool
fest. - Für den Ausgleichsmodus wählen Sie Rate.
- Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf
100
. - Klicken Sie auf Fertig.
- Klicken Sie auf Back-End hinzufügen.
- Legen Sie im Dialogfeld Neues Back-End als Instanzgruppe
europe-west1-pool
fest. - Für den Ausgleichsmodus wählen Sie Rate.
- Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf
100
. - Klicken Sie auf Fertig.
- Klicken Sie auf Back-End hinzufügen.
- Legen Sie im Dialogfeld Neues Back-End als Instanzgruppe
us-central1-pool
fest. - Für den Ausgleichsmodus wählen Sie Rate.
- Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf
100
. - Klicken Sie auf Fertig.
- Klicken Sie bei Systemdiagnose auf Systemdiagnose erstellen.
- Legen Sie als Name
http-basic-check
fest. - Wählen Sie für Protokoll die Option
HTTP
aus. - Legen Sie für Port den Wert
80
fest. - Klicken Sie auf Speichern und fortfahren.
- Klicken Sie auf Erstellen.
Host- und Pfadregeln
- Klicken Sie im linken Bereich der Seite Globalen externen Application Load Balancer erstellen auf Host- und Pfadregeln.
In diesem Beispiel müssen keine Host- oder Pfadregeln konfiguriert werden, da der gesamte Traffic unter die Standardregel fällt. Die voreingestellten Standardwerte können daher übernommen werden.
Frontend-Konfiguration
- Klicken Sie im linken Bereich der Seite Globalen externen Application Load Balancer erstellen auf Frontend-Konfiguration.
- Legen Sie als Name
fortressnet-http-rule
fest. - Setzen Sie die IP-Version auf IPv4.
- Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen.
- Legen Sie im Dialogfeld Neue statische IP-Adresse reservieren als Name
fortressnet-ip
fest. - Klicken Sie auf Reservieren und warten Sie einige Sekunden.
- Klicken Sie unten im Dialogfeld Neue Frontend-IP-Adresse und Port auf Fertig.
- Klicken Sie auf Frontend-IP und Port hinzufügen.
- Legen Sie als Name
fortressnet-http-ipv6-rule
fest. - Setzen Sie die IP-Version auf IPv6.
- Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen aus.
- Legen Sie im Dialogfeld als Name
fortressnet-ipv6
fest. - Klicken Sie auf Reservieren und warten Sie einige Sekunden.
- Klicken Sie unten im Dialogfeld Neue Frontend-IP-Adresse und Port auf Fertig.
Überprüfen und abschließen
- Klicken Sie im linken Bereich der Seite Globalen externen Application Load Balancer erstellen auf Prüfen und abschließen.
- Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
- Wenn die Einstellungen korrekt sind, klicken Sie unten im linken Bereich auf Erstellen. Sie werden zum Bildschirm „Load-Balancing” zurückgeleitet. Nachdem der Load-Balancer erstellt wurde, weist ein grünes Häkchen darauf hin, dass er ausgeführt wird.
gcloud
Backend-Konfiguration
Erstellen Sie eine grundlegende Systemdiagnose. Dadurch wird geprüft, ob ein Back-End des Load-Balancers auf HTTP-Anfragen reagiert.
gcloud compute health-checks create http http-basic-check
Erstellen Sie einen globalen Back-End-Dienst. Dieser Back-End-Dienst empfängt HTTP-Traffic vom Load-Balancer.
gcloud compute backend-services create fortressnet-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
Fügen Sie die Instanzgruppen als regionale Back-Ends des Back-End-Dienstes hinzu. Diese Konfiguration verteilt den Traffic zwischen den Back-Ends anhand einer maximalen Anzahl von Anfragen pro Sekunde (RPS) pro Instanz.
gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group us-central1-pool \ --instance-group-region us-central1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group europe-west1-pool \ --instance-group-region europe-west1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group asia-east1-pool \ --instance-group-region asia-east1 \ --global
Host- und Pfadregeln
Definieren Sie eine URL-Zuordnung. URL-Zuordnungen leiten verschiedene URLs an verschiedene Back-End-Dienste weiter. Da wir nur einen Back-End-Dienst haben, legen Sie einfach diesen Back-End-Dienst als Standarddienst für alle URLs fest.
gcloud compute url-maps create fortressnet-balancer \ --default-service fortressnet-backend-service
Erstellen Sie eine HTTP-Proxy-Route. HTTP-Proxy-Routen akzeptieren HTTP-Anfragen und leiten diese entsprechend Ihrer URL-Zuordnung weiter. In diesem Fall werden alle Anfragen an Ihren einzelnen Back-End-Dienst gesendet.
gcloud compute target-http-proxies create fortressnet-http-proxy \ --url-map fortressnet-balancer
Frontend-Konfiguration
Erstellen Sie zwei globale statische externe IP-Adressen: eine für IPv4 und eine für IPv6. Dies sind die globalen externen IP-Adressen des Load-Balancers.
gcloud compute addresses create fortressnet-ip \ --ip-version IPV4 \ --network-tier=PREMIUM \ --global gcloud compute addresses create fortressnet-ipv6 \ --ip-version IPV6 \ --network-tier=PREMIUM \ --global
Schlagen Sie die externen IP-Adressen des Load-Balancers nach.
gcloud compute addresses list
Erstellen Sie globale Weiterleitungsregeln für die externen IP-Adressen. Dadurch werden sowohl IPv4- als auch IPv6-HTTP-Anfragen an Ihren HTTP-Proxy weitergeleitet.
gcloud compute forwarding-rules create fortressnet-http-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IP_ADDRESS
gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IPV6_ADDRESS
(Optional) Überprüfen Sie, ob der Load-Balancer funktioniert. Möglicherweise müssen Sie eine bis drei Minuten warten.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Warten Sie auf das grüne Häkchen für
fortressnet-balancer
in der Spalte Back-Ends.Klicken Sie auf
fortressnet-balancer
.Kopieren Sie unter Frontend die IPv4-Adresse in der Spalte IP:Port. (IPv4-Adressen haben die Form
www.xxx.yyy.zzz
. Die nachgestellte Portnummer:nn
ist nicht erforderlich.) Falls der Abschnitt Frontend fehlt, warten Sie einige Sekunden und laden Sie die Webseite neu.Geben Sie die IP-Adresse in einen Webbrowser ein.
Sie sollten die Webseite 'Apache2-Debian-Standardseite' sehen.
Wenn Sie stattdessen die Webseite "Fehler 404 (nicht gefunden)" erhalten, warten Sie noch einige Minuten.
gcloud
Schlagen Sie die externen IP-Adressen des Load-Balancers nach.
gcloud compute addresses list
Fragen Sie die IPv4-Adresse ab. (IPv4-Adressen haben die Form
www.xxx.yyy.zzz
.curl http://LOAD_BALANCER_IP_ADDRESS | head
Der angezeigte HTML-Text sollte unter anderem die Zeile <title>Apache2 Debian Default Page: It works</title>
enthalten.
Wenn stattdessen <title>Error 404 (Not Found)!!1</title>
ausgegeben wird, warten Sie einige Minuten.
Best Practice: Erstellen Sie eine sichere Firewall, die nur internen Traffic vom Load-Balancer und der Systemdiagnose zulässt. Löschen Sie anschließend die ursprüngliche Firewall, die HTTP-Anfragen zugelassen hat. Dadurch wird verhindert, dass einzelne Instanzen für externe Clients zugänglich sind.
Console
Erstellen Sie eine sichere Firewall, die nur internen Traffic vom Load-Balancer und der Systemdiagnose zulässt.
Rufen Sie in der Google Cloud Console die Seite Firewallregeln auf.
Klicken Sie auf Firewallregel erstellen.
Legen Sie als Name
fortressnet-allow-load-balancer
fest.Wählen Sie für Netzwerk die Option
fortressnet
aus.Wählen Sie für Ziele die Option
All instances in the network
aus.Geben Sie für Quell-IP-Bereiche
130.211.0.0/22
ein und drücken Sie die Eingabetaste. Geben Sie dann35.191.0.0/16
ein und drücken Sie die Eingabetaste noch einmal.Wählen Sie unter Protokolle und Ports die Option tcp aus und geben Sie
80
ein.Klicken Sie auf Erstellen.
Löschen Sie die alte Firewall, die alles zulässt.
- Wählen Sie das Häkchen neben
fortressnet-allow-http
. - Klicken Sie oben auf der Seite auf Löschen.
- Klicken Sie im Dialogfeld auf Löschen.
- Wählen Sie das Häkchen neben
gcloud
Erstellen Sie eine sichere Firewall, die nur internen Traffic vom Load-Balancer und der Systemdiagnose zulässt.
gcloud compute firewall-rules create fortressnet-allow-load-balancer \ --network fortressnet \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --allow tcp:80
Löschen Sie die alte Firewall, die alles zulässt.
gcloud compute firewall-rules delete fortressnet-allow-http -q
(Optional) Prüfen Sie, ob Autoscaling und Load-Balancing ordnungsgemäß funktionieren
Test-Traffic generieren
Angenommen, es ist Morgen in Europa und Ihr Webdienst wird im Internet plötzlich viral. Generieren Sie auf einen Schlag eine hohe Anzahl von Clientanfragen aus Europa.
Console
Erstellen Sie eine mit dem Siege-Lasttesttool installierte Instanz.
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Legen Sie als Name
europe-loadtest
fest.Wählen Sie für Region die Option
europe-west1
aus.Maximieren Sie für erweiterte Einstellungen den Abschnitt Erweiterte Optionen und gehen Sie so vor:
- Maximieren Sie den Bereich Verwaltung.
- Geben Sie im Feld Automatisierung folgendes Startskript ein:
apt -y install siege
Klicken Sie auf Erstellen, um die VM zu erstellen.
Rufen Sie die IPv4-Adresse des Load-Balancers ab.
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf
fortressnet-balancer
.Kopieren Sie unter Frontend die IPv4-Adresse in der Spalte IP:Port. (IPv4-Adressen haben die Form
www.xxx.yyy.zzz
.
Stellen Sie eine SSH-Verbindung mit der Lasttestinstanz her.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Warten Sie auf das grüne Häkchen für die Instanz
europe-loadtest
in der Spalte Name.Klicken Sie in der Spalte SSH für
europe-loadtest
auf SSH.
Starten Sie Siege. Setzen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.
siege -c150 http://LOAD_BALANCER_IP_ADDRESS
gcloud
Erstellen Sie eine mit dem Siege-Lasttesttool installierte Instanz.
gcloud compute instances create europe-loadtest \ --network default \ --zone europe-west1-c \ --metadata startup-script='apt -y install siege'
Rufen Sie die IPv4-Adresse des Load-Balancers ab.
gcloud compute addresses list
Öffnen Sie eine neue Shell-Sitzung, in der der Befehl
gcloud
verfügbar ist.Stellen Sie in Ihrer neuen Shell-Sitzung eine SSH-Verbindung mit der Lasttestinstanz her.
gcloud compute ssh --zone europe-west1-c europe-loadtest
Starten Sie Siege. Setzen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.
siege -c150 http://LOAD_BALANCER_IP_ADDRESS
Nachdem der Befehl siege
ausgeführt wurde, wird die Meldung The server is now under siege...
ausgegeben.
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Load-Balancing und Autoscaling überwachen
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Load-Balancer mit dem Namen
fortressnet-balancer
.Klicken Sie auf den Tab Monitoring.
Wählen Sie im Drop-down Back-End den Dienst
fortressnet-backend-service
aus.
Es kann bis zu zehn Minuten dauern, bis genügend Daten angezeigt werden. Bald sollten Sie eine Anzeige ähnlich der folgenden sehen:
Das passiert hier:
Der Lasttest beginnt, gleichzeitig eine große Menge an Traffic zu senden. Zuerst verteilt der Load-Balancer die Anfragen gleichmäßig auf die drei Back-Ends. Die Anzahl der Anfragen überschreitet schnell die festgelegten Autoscaling-Limits. Möglicherweise geben Ihre Server auf dem Monitoring-Bildschirm sogar die Meldung
Backend 5xx errors
zurück. Autoscaling beginnt je nach Bedarf weitere Instanzen auszulösen.Autoscaling schließt zum Kapazitätsbedarf auf. Wenn Sie die Anfragelatenz minimieren möchten, versucht der Load-Balancer von Compute Engine, Anfragen an jeweils das Back-End weiterzuleiten, das dem Client am nächsten ist. Da der Lasttestverkehr aus Europa stammt, zieht der Load-Balancer es in diesem Fall vor, mehr Anfragen an das Europa-Back-End weiterzuleiten. Dadurch kann das Autoscaling mehr Instanzen im Europa-Back-End auslösen, um einen höheren Anteil an Anfragen zu bearbeiten.
Test-Traffic an anderer Stelle generieren
Angenommen, Ihr Webdienst wird am Nachmittag auch in Asien bei einer Menge Usern populär. Generieren Sie eine hohe Anzahl von Anfragen aus Asien.
Console
So erstellen Sie eine weitere mit dem Siege-Lasttesttool installierte Instanz:
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Legen Sie als Name
asia-loadtest
fest.Wählen Sie für Region die Option
asia-east1
aus.Maximieren Sie den Bereich Erweiterte Optionen.
Maximieren Sie den Bereich Verwaltung.
Geben Sie im Feld Automatisierung folgendes Startskript ein:
apt -y install siege
Klicken Sie auf Erstellen.
So rufen Sie die IP-Adresse des Load Balancers ab:
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf
fortressnet-balancer
.Kopieren Sie unter Frontend die IPv4-Adresse in der Spalte IP:Port. (IPv4-Adressen haben die Form
www.xxx.yyy.zzz
.
Stellen Sie eine SSH-Verbindung mit der Lasttestinstanz her.
- Warten Sie auf das grüne Häkchen für die Instanz
asia-loadtest
in der Spalte Name. - Klicken Sie in der Spalte SSH für
asia-loadtest
auf SSH.
- Warten Sie auf das grüne Häkchen für die Instanz
Starten Sie Siege. Setzen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.
siege -c150 http://LOAD_BALANCER_IP_ADDRESS
gcloud
Erstellen Sie in Ihrer ursprünglichen Shell-Sitzung eine weitere mit dem Siege-Lasttest-Tool installierte Instanz.
gcloud compute instances create asia-loadtest \ --network default \ --zone asia-east1-c \ --metadata startup-script='apt -y install siege'
Rufen Sie die IPv4-Adresse des Load-Balancers ab.
gcloud compute addresses list
Öffnen Sie eine neue Shell-Sitzung, in der der Befehl
gcloud
verfügbar ist.Stellen Sie in Ihrer neuen Shell-Sitzung eine SSH-Verbindung mit der Lasttestinstanz her.
gcloud compute ssh --zone asia-east1-c asia-loadtest
Starten Sie Siege. Setzen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.
siege -c150 http://LOAD_BALANCER_IP_ADDRESS
Auch hier sollte die Meldung The server is now under siege...
ausgegeben werden.
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Load-Balancing und Autoscaling überwachen
Gehen Sie zurück zur Überwachungsanzeige des Load-Balancings aus dem letzten Beispiel. Es kann bis zu zehn Minuten dauern, bis genügend Daten angezeigt werden. Bald sollten Sie eine Anzeige ähnlich der folgenden sehen:
Das passiert hier:
Der Lasttest sendet noch einmal eine große Anzahl von Anfragen auf einmal. Zuerst verteilt der Load-Balancer die Anfragen gleichmäßig auf die drei Back-Ends. Wenn die Anzahl der Anfragen Ihre Autoscaling-Grenzen überschreitet, werden nach Bedarf weitere Instanzen durch das Autoscaling ausgelöst.
Das Autoscaling schließt zum neuen Kapazitätsbedarf auf. Der Load-Balancer zieht es dennoch vor, Anfragen an die nächsten verfügbaren Back-Ends weiterzuleiten. Deshalb wird das Back-End in Asien schließlich vor allem Anfragen aus Asien und das Back-End in Europa vor allem Anfragen aus Europa empfangen, während das Back-End in den USA alles andere empfängt.
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.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- 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.
Instanzen löschen
So löschen Sie eine Compute Engine-Instanz:
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
Nächste Schritte
- Auf Basis der Load-Balancing-Bereitstellungskapazität skalieren.
- Optimierung der Anwendungskapazität mit globalem Load-Balancing.
- Skalierbare und robuste Anwendungen erstellen.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center