Globales Autoscaling eines Webdienstes in Compute Engine

In dieser Anleitung erfahren Sie, wie Sie einen global verfügbaren Webdienst mit regionalen, von Compute Engine verwalteten Instanzgruppen einrichten, die je nach Kapazitätsanforderungen automatisch skalieren. Sie können die in dieser Anleitung gezeigten Verfahren einsetzen, um Ihr eigenes global verteiltes und skalierbares Projekt auf Compute Engine zu implementieren.

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 unter anderem die folgenden kostenpflichtigen GCP-Komponenten verwendet:

  • Compute Engine

Vorbereitung

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

    Zur Projektauswahl

  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  3. Aktivieren Sie die Compute Engine API.

    Aktivieren Sie die API

Anwendungsarchitektur

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

  1. Instanzvorlage: Mit dieser Vorlage werden alle Instanzen der Instanzgruppen erstellt.
  2. Instanzgruppen: Mehrere Instanzgruppen, die sich je nach eingehendem Traffic automatisch skalieren.
  3. Load-Balancer: Ein HTTP-Load-Balancer, der den Traffic zwischen den Instanzgruppen verteilt.
  4. Instanzen: Mehrere Testinstanzen zum Generieren von Test-Traffic aus verschiedenen Teilen der Welt.

Diagramm: Systemarchitektur eines Load-Balancers mit mehreren regionalen Instanzgruppen

Webdienst einrichten

Instanzgruppen erstellen

Console

  1. Erstellen Sie ein Netzwerk für die Instanzgruppen.

    1. Rufen Sie in der Cloud Console die Seite VPC-Netzwerke auf.
      Zur Seite "VPC-Netzwerke"
    2. Klicken Sie auf VPC-Netzwerk erstellen.
    3. Legen Sie als Name fortressnet fest.
    4. Wählen Sie unter Modus für Subnetzerstellung die Option Automatisch aus.
    5. Klicken Sie unten auf der Seite auf Erstellen.
  2. Erstellen Sie eine Firewallregel für das Netzwerk. Die Regel lässt alle an Ihre Instanzen gesendeten HTTP-Anfragen zu.

    1. Rufen Sie in der Cloud Console die Seite Firewallregeln auf.
      Zur Seite "Firewall"
    2. Klicken Sie auf Firewallregel erstellen.
    3. Legen Sie als Name fortressnet-allow-http fest.
    4. Wählen Sie für Netzwerk die Option fortressnet aus.
    5. Wählen Sie für Ziele die Option All instances in the network aus.
    6. Legen Sie für Quell-IP-Bereiche den Wert 0.0.0.0/0 fest.
    7. Wählen Sie unter Protokolle und Ports die Option tcp aus und geben Sie 80 ein.
    8. Klicken Sie auf Erstellen.
  3. Erstellen Sie eine Instanzvorlage. Fügen Sie ein Startskript ein, das auf jeder Instanz einen einfachen Apache-Webserver startet.

    1. Öffnen Sie in der Cloud Console die Seite Instanzvorlagen.
      Zur Seite "Instanzvorlagen"
    2. Klicken Sie auf Instanzvorlage erstellen.
    3. Legen Sie als Name fort-template fest.
    4. Wählen Sie für Maschinenkonfiguration die Option micro (e2-micro) aus.
    5. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten, um erweiterte Optionen aufzurufen. Sie sollten eine Reihe von Tabs sehen.
    6. Klicken Sie auf den Tab Netzwerk.
    7. Wählen Sie für Netzwerk die Option fortressnet aus.
    8. Klicken Sie auf den Tab Verwaltung.
    9. Geben Sie unter Automatisierung folgendes Startskript ein:

      apt update && apt -y install apache2
      

    10. Klicken Sie unten auf der Seite auf Erstellen.

  4. Erstellen Sie mehrere regional verwaltete Instanzgruppen mit der Instanzvorlage. Konfigurieren Sie Autoscaling für jede Instanzgruppe.

    1. Öffnen Sie in der Cloud Console die Seite Instanzgruppen.
      Zur Seite "Instanzgruppen"
    2. Klicken Sie auf Instanzgruppe erstellen, um eine neue verwaltete Instanzgruppe zu erstellen.
    3. Legen Sie als Name us-central1-pool fest.
    4. Wählen Sie für Typ den Wert Multi-zone aus.
    5. Wählen Sie für Region die Option us-central1 aus.
    6. Wählen Sie für Instanzvorlage die Option fort-template aus.
    7. Wählen Sie für den Autoscaling-Modus die Option Automatisch skalieren aus.
    8. Bearbeiten Sie unter Messwerte für Autoscaling die Standardauswahl (CPU-Auslastung) und setzen Sie den Messwerttyp auf HTTP load balancing usage.
    9. Setzen Sie den Zielwert für Load-Balancing-Auslastung auf 80.
    10. Setzen Sie die Mindestanzahl der Instanzen auf 1.
    11. Setzen Sie die Höchstanzahl der Instanzen auf 5.
    12. Klicken Sie auf Erstellen.
    13. 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 Region europe-west1.
      • Erstellen Sie eine Gruppe mit dem Namen asia-east1-pool und der Region asia-east1.
  5. (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.

    1. Rufen Sie in der Cloud Console die Seite VM-Instanzen auf.
      Zur Seite "VM-Instanzen".
    2. Überprüfen Sie, ob für jede laufende Instanz ein grünes Häkchen in der Spalte Name angezeigt wird.
    3. 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

  1. Erstellen Sie ein Netzwerk für die Instanzgruppen.

    gcloud compute networks create fortressnet --subnet-mode auto
    
  2. 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
    
  3. 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'
    
  4. 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
    
  5. (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.

    1. Listen Sie Ihre Instanzen auf.

      gcloud compute instances list
      

    2. Prüfen Sie in der Spalte STATUS, ob für die Instanzen RUNNING angegeben wird.

    3. Ü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 des Load-Balancers starten

  1. Öffnen Sie in der Cloud Console die Seite Load-Balancing.
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf Load-Balancer erstellen.
  3. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  4. Legen Sie als Name fortressnet-balancer fest.

Back-End konfigurieren

  1. Klicken Sie auf der Seite Neuer HTTP(S)-Load-Balancer auf Back-End-Konfiguration.
  2. Wählen Sie im Drop-down-Menü Back-End-Dienste und Back-End-Buckets erstellen oder auswählen die Option Back-End-Dienste und anschließend Back-End-Dienst erstellen aus. Das Dialogfeld Back-End-Dienst erstellen wird aufgerufen.
  3. Legen Sie als Name für den Back-End-Dienst fortressnet-backend-service fest.
  4. Legen Sie im Dialogfeld Neues Back-End als Instanzgruppe asia-east1-pool fest.
  5. Für den Ausgleichsmodus wählen Sie Rate.
  6. Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf 100.
  7. Klicken Sie auf Fertig.
  8. Klicken Sie auf Back-End hinzufügen.
  9. Legen Sie im Dialogfeld Neues Back-End für Instanzgruppe europe-west1-pool fest.
  10. Für den Ausgleichsmodus wählen Sie Rate.
  11. Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf 100.
  12. Klicken Sie auf Fertig.
  13. Klicken Sie auf Back-End hinzufügen.
  14. Legen Sie im Dialogfeld Neues Back-End für Instanzgruppe us-central1-pool fest.
  15. Für den Ausgleichsmodus wählen Sie Rate.
  16. Setzen Sie Maximale Anzahl der Anfragen pro Sekunde pro Instanz auf 100.
  17. Klicken Sie auf Fertig.
  18. Klicken Sie bei Systemdiagnose auf Systemdiagnose erstellen.
  19. Legen Sie als Name http-basic-check fest.
  20. Wählen Sie für Protokoll die Option HTTP aus.
  21. Legen Sie für Port den Wert 80 fest.
  22. Klicken Sie auf Speichern und fortfahren.
  23. Klicken Sie auf Erstellen.

Host- und Pfadregeln

  1. Klicken Sie im linken Bereich der Seite Neuer HTTP(S)-Load-Balancer 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.

Front-End-Konfiguration

  1. Klicken Sie im linken Bereich der Seite Neuer HTTP(S)-Load-Balancer auf Front-End-Konfiguration.
  2. Legen Sie als Name fortressnet-http-rule fest.
  3. Setzen Sie die IP-Version auf IPv4.
  4. Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen.
  5. Legen Sie im Dialogfeld Neue statische IP-Adresse reservieren als Name fortressnet-ip fest.
  6. Klicken Sie auf Reservieren und warten Sie einige Sekunden.
  7. Klicken Sie unten im Dialogfeld Neue Front-End-IP-Adresse und Port auf Fertig.
  8. Klicken Sie auf Front-End-IP und Port hinzufügen.
  9. Legen Sie als Name fortressnet-http-ipv6-rule fest.
  10. Setzen Sie die IP-Version auf IPv6.
  11. Wählen Sie unter IP-Adresse die Option IP-Adresse erstellen aus.
  12. Legen Sie im Dialogfeld als Name fortressnet-ipv6 fest.
  13. Klicken Sie auf Reservieren und warten Sie einige Sekunden.
  14. Klicken Sie unten im Dialogfeld Neue Front-End-IP-Adresse und Port auf Fertig.

Überprüfen und abschließen

  1. Klicken Sie im linken Bereich der Seite Neuer HTTP(S)-Load-Balancer erstellen auf Überprüfen und abschließen.
  2. Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
  3. 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

Back-End-Konfiguration

  1. 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
    
  2. 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
    
  3. 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

  1. 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
    
  2. 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
    

Front-End-Konfiguration

  1. 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 \
        --global
    gcloud compute addresses create fortressnet-ipv6 \
        --ip-version IPV6 \
        --global
    
  2. Schlagen Sie die externen IP-Adressen des Load-Balancers nach.

    gcloud compute addresses list
    
  3. 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 \
        --global \
        --target-http-proxy fortressnet-http-proxy \
        --ports 80 \
        --address LOAD_BALANCER_IP_ADDRESS
    
    gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \
        --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

  1. Öffnen Sie in der Cloud Console die Seite Load-Balancing.
    Zur Seite "Load-Balancing"
  2. Warten Sie auf das grüne Häkchen für fortressnet-balancer in der Spalte Back-Ends.
  3. Klicken Sie auf fortressnet-balancer.
  4. Kopieren Sie unter Front-End 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 Front-End fehlt, warten Sie einige Sekunden und laden Sie die Webseite neu.
  5. 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

  1. Schlagen Sie die externen IP-Adressen des Load-Balancers nach.

    gcloud compute addresses list
    
  2. 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

  1. Erstellen Sie eine sichere Firewall, die nur internen Traffic vom Load-Balancer und der Systemdiagnose zulässt.

    1. Rufen Sie in der Cloud Console die Seite Firewallregeln auf.
      Zur Seite "Firewall"
    2. Klicken Sie auf Firewallregel erstellen.
    3. Legen Sie als Name fortressnet-allow-load-balancer fest.
    4. Wählen Sie für Netzwerk die Option fortressnet aus.
    5. Wählen Sie für Ziele die Option All instances in the network aus.
    6. Geben Sie für Quell-IP-Bereiche 130.211.0.0/22 ein und drücken Sie die Eingabetaste. Geben Sie dann 35.191.0.0/16 ein und drücken Sie die Eingabetaste noch einmal.
    7. Wählen Sie unter Protokolle und Ports die Option tcp aus und geben Sie 80 ein.
    8. Klicken Sie auf Erstellen.
  2. Löschen Sie die alte Firewall, die alles zulässt.

    1. Wählen Sie das Häkchen neben fortressnet-allow-http.
    2. Klicken Sie oben auf der Seite auf Löschen.
    3. Klicken Sie im Dialogfeld auf Löschen.

gcloud

  1. 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
    
  2. 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

  1. Erstellen Sie eine mit dem Siege-Lasttesttool installierte Instanz.

    1. Rufen Sie in der Cloud Console die Seite VM-Instanzen auf.
      Zur Seite "VM-Instanzen".
    2. Klicken Sie auf Instanz erstellen.
    3. Legen Sie als Name europe-loadtest fest.
    4. Wählen Sie für Region die Option europe-west1 aus.
    5. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten, um erweiterte Optionen aufzurufen. Sie sollten eine Reihe von Tabs sehen.
    6. Klicken Sie auf den Tab Verwaltung.
    7. Geben Sie unter Automatisierung folgendes Startskript ein:

      apt -y install siege
      

    8. Klicken Sie unten auf der Seite auf Erstellen.

  2. Rufen Sie die IPv4-Adresse des Load-Balancers ab.

    1. Öffnen Sie in der Cloud Console die Seite Load-Balancing.
      Zur Seite "Load-Balancing"
    2. Klicken Sie auf fortressnet-balancer.
    3. Kopieren Sie unter Front-End die IPv4-Adresse in der Spalte IP:Port. (IPv4-Adressen haben die Form www.xxx.yyy.zzz.)
  3. Stellen Sie eine SSH-Verbindung mit der Lasttestinstanz her.

    1. Rufen Sie in der Cloud Console die Seite VM-Instanzen auf.
      Zur Seite "VM-Instanzen".
    2. Warten Sie auf das grüne Häkchen für die Instanz europe-loadtest in der Spalte Name.
    3. Klicken Sie in der Spalte Verbinden für europe-loadtest auf SSH.
  4. Starten Sie Siege. Legen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. 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'
    
  2. Rufen Sie die IPv4-Adresse des Load-Balancers ab.

    gcloud compute addresses list
    
  3. Öffnen Sie eine neue Shell-Sitzung, in der der Befehl gcloud verfügbar ist.

    1. Stellen Sie in Ihrer neuen Shell-Sitzung eine SSH-Verbindung mit der Lasttestinstanz her.

      gcloud compute ssh --zone europe-west1-c europe-loadtest
      
    2. 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

  1. Öffnen Sie in der Cloud Console die Seite Load-Balancing.
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf den Load-Balancer fortressnet-balancer.
  3. Klicken Sie auf den Tab Monitoring.
  4. 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:

Monitoring-Bildschirm der Cloud Console zeigt Anfragen aus Europa, die gleichmäßig auf alle drei Back-Ends verteilt sind

Das passiert hier:

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

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

  1. Erstellen Sie eine weitere mit dem Siege-Lasttesttool installierte Instanz.

    1. Rufen Sie in der Cloud Console die Seite VM-Instanzen auf.
      Zur Seite "VM-Instanzen".
    2. Klicken Sie auf Instanz erstellen.
    3. Legen Sie als Name asia-loadtest fest.
    4. Wählen Sie für Region die Option asia-east1 aus.
    5. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten, um erweiterte Optionen aufzurufen. Sie sollten eine Reihe von Tabs sehen.
    6. Klicken Sie auf den Tab Verwaltung.
    7. Geben Sie unter Automatisierung folgendes Startskript ein:

      apt -y install siege
      

    8. Klicken Sie unten auf der Seite auf Erstellen.

  2. Rufen Sie die IP-Adresse des Load-Balancers ab.

    1. Öffnen Sie in der Cloud Console die Seite Load-Balancing.
      Zur Seite "Load-Balancing"
    2. Klicken Sie auf fortressnet-balancer.
    3. Kopieren Sie unter Front-End die IPv4-Adresse in der Spalte IP:Port. (IPv4-Adressen haben die Form www.xxx.yyy.zzz.)
  3. Stellen Sie eine SSH-Verbindung mit der Lasttestinstanz her.

    1. Warten Sie auf das grüne Häkchen für die Instanz asia-loadtest in der Spalte Name.
    2. Klicken Sie in der Spalte Verbinden für asia-loadtest auf SSH.
  4. Starten Sie Siege. Legen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.

    siege -c150 http://LOAD_BALANCER_IP_ADDRESS
    

gcloud

  1. 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'
    
  2. Rufen Sie die IPv4-Adresse des Load-Balancers ab.

    gcloud compute addresses list
    
  3. Öffnen Sie eine neue Shell-Sitzung, in der der Befehl gcloud verfügbar ist.

    1. Stellen Sie in Ihrer neuen Shell-Sitzung eine SSH-Verbindung mit der Lasttestinstanz her.

      gcloud compute ssh --zone asia-east1-c asia-loadtest
      
    2. Starten Sie Siege. Legen 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:

Monitoring-Bildschirm der Cloud Console zeigt Anfragen aus Europa und Asien, die gleichmäßig auf alle drei Back-Ends verteilt sind

Das passiert hier:

  1. Der Lasttest sendet erneut 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.

  2. 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 diese Autoscaling-Anleitung abgeschlossen haben, bereinigen Sie die in Google Cloud erstellten Ressourcen, damit sie keine kostenpflichtigen Kontingente verbrauchen. 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:

  1. Wechseln Sie in der 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 Beenden, um das Projekt zu löschen.

Instanzen löschen

So löschen Sie eine Compute Engine-Instanz:

  1. Öffnen Sie in der Cloud Console die Seite VM-Instanzen.

    Die Seite VM-Instanzen aufrufen

  2. Klicken Sie auf das Kästchen für die Instanz, die Sie löschen möchten.
  3. Klicken Sie auf Löschen , um die Instanz zu löschen.

Weitere Informationen