Globales Autoscaling eines Webdiensts mithilfe der Compute Engine

In dieser Anleitung erfahren Sie, wie Sie einen global verfügbaren Webdienst mit regionalen, von Compute Engine verwalteten Instanzgruppen einrichten, die sich automatisch skalieren, um die Kapazitätsanforderungen zu erfüllen. 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.
  • Test-Traffic aus verschiedenen Regionen der Welt generieren.
  • Mit der Google Cloud Platform Console visualisieren, wie der Load-Balancer Anfragen steuert und wie Instanzgruppen sich je nach Bedarf automatisch skalieren.

Kosten

In dieser Anleitung werden unter anderem die folgenden kostenpflichtigen GCP-Komponenten verwendet:

  • Compute Engine

Hinweis

  1. Wählen Sie ein Google Cloud Platform-Projekt aus oder erstellen Sie eines.

    Zur Seite "Ressourcen verwalten"

  2. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist.

    Informationen zum Aktivieren der Abrechnung

  3. Aktivieren Sie die Compute Engine erforderliche 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 der Systemarchitektur, das einen Load-Balancer mit mehreren regionalen Instanzgruppen zeigt

Webdienst einrichten

Instanzgruppen erstellen

Konsole

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

    1. Wechseln Sie in der GCP Console zur Seite VPC-Netzwerke.
      Zur VPC-Netzwerkseite
    2. Klicken Sie auf VPC-Netzwerk erstellen.
    3. Legen Sie für Name fortressnet fest.
    4. Wählen Sie bei 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. Diese Regel lässt alle an Ihre Instanzen gesendeten HTTP-Anfragen zu.

    1. Öffnen Sie in der GCP Console die Seite Firewallregeln.
      Zur Seite "Firewallregeln"
    2. Klicken Sie auf Firewallregel erstellen.
    3. Legen Sie für Name fortressnet-allow-http fest.
    4. Wählen Sie für Netzwerk fortressnet aus.
    5. Wählen Sie für Ziele All instances in the network aus.
    6. Legen Sie für Quell-IP-Bereiche 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 GCP Console die Seite Instanzvorlagen.
      Zur Seite "Instanzvorlagen"
    2. Klicken Sie auf Instanzvorlage erstellen.
    3. Legen Sie für Name fort-template fest.
    4. Wählen Sie für die Maschinenkonfiguration micro (f1-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 fortressnet aus.
    8. Klicken Sie auf den Tab Verwaltung.
    9. Geben Sie unter Automatisierung folgendes Startskript ein:

      apt-get update && apt-get install -y 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 GPC Console die Seite Instanzgruppen.
      Zur Seite "Instanzgruppen"
    2. Klicken Sie auf Instanzgruppenvorlage erstellen.
    3. Legen Sie für Name us-central1-pool fest.
    4. Wählen Sie für Standort Multi-zone aus.
    5. Wählen Sie für Region us-central1 aus.
    6. Wählen Sie für Instanzvorlage fort-template aus.
    7. Wählen Sie unter Autoscaling die Option An aus.
    8. Wählen Sie für Automatisch skalieren auf der Grundlage von HTTP load balancing usage aus.
    9. Setzen Sie den Zielwert für Load-Balancing-Nutzung 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. Öffnen Sie in der GCP Console die Seite VM-Instanzen.
      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-Standardseite' 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. Diese 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 f1-micro \
        --network fortressnet \
        --metadata startup-script='apt-get update && apt-get install -y 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
      

    Sie sollten HTML-Text sehen können, einschließlich der Zeile <title>Apache2 Debian Default Page: It works</title>.

    Wenn dies nicht funktioniert, warten Sie einige Augenblicke.

Load-Balancer konfigurieren

Der Load-Balancer verteilt Client-Anfragen auf Ihre verschiedenen Back-Ends.

Konsole

Konfiguration des Load-Balancers starten

  1. Öffnen Sie in der GCP 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 für Name fortressnet-balancer fest.

Back-End-Konfiguration

  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. Sie sollten das Dialogfeld Back-End-Dienst erstellen sehen.
  3. Legen Sie als Name für den Back-End-Dienst fortressnet-backend-service fest.
  4. Legen Sie im Dialogfeld Neues Back-End für Instanzgruppe asia-east1-pool fest.
  5. Für den Ausgleichsmodus wählen Sie Rate.
  6. Setzen Sie Maximale Anzahl der Anfragen pro Sekunde auf 100 Anfragen pro Sekunde pro Instanz.
  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 auf 100 Anfragen pro Sekunde pro Instanz.
  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 auf 100 Anfragen pro Sekunde pro Instanz.
  17. Klicken Sie auf Fertig.
  18. Klicken Sie bei Systemdiagnose auf Systemdiagnose erstellen.
  19. Legen Sie für Name http-basic-check fest.
  20. Wählen Sie für Protokoll HTTP aus.
  21. Geben Sie für Port den Wert 80 ein.
  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. Also können wir die voreingestellten Standardwerte akzeptieren.

Front-End-Konfiguration

  1. Klicken Sie im linken Bereich der Seite Neuer HTTP(S)-Load-Balancer auf Front-End-Konfiguration.
  2. Legen Sie für 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 für 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 für 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.
  12. Legen Sie im Dialogfeld für 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.

Konsole

  1. Öffnen Sie in der GCP Console die Seite Load-Balancing.
    Zur Seite "Load-Balancing".
  2. Warten Sie, bis für fortressnet-balancer in der Spalte Back-Ends ein grünes Häkchen angezeigt wird.
  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.) Sie benötigen nicht die nachgestellte Portnummer :nn.) Wenn der Front-End-Abschnitt fehlt, warten Sie einen Moment und laden Sie dann 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
    

Sie sollten HTML-Text sehen können, einschließlich der Zeile <title>Apache2 Debian Default Page: It works</title>.

Wenn Sie stattdessen <title>Error 404 (Not Found)!!1</title> sehen, warten Sie noch 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 jede HTTP-Anfrage zugelassen hat. Dadurch wird verhindert, dass einzelne Instanzen für externe Clients zugänglich sind.

Konsole

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

    1. Öffnen Sie in der GCP Console die Seite Firewallregeln.
      Zur Seite "Firewallregeln"
    2. Klicken Sie auf Firewallregel erstellen.
    3. Legen Sie für Name fortressnet-allow-load-balancer fest.
    4. Wählen Sie für Netzwerk fortressnet aus.
    5. Wählen Sie für Ziele 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. Setzen Sie das Häkchen bei 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.

Konsole

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

    1. Öffnen Sie in der GCP Console die Seite VM-Instanzen.
      Zur Seite "VM-Instanzen"
    2. Klicken Sie auf Instanz erstellen.
    3. Legen Sie für Name europe-loadtest fest.
    4. Wählen Sie für Region 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-get install -y 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 GCP 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. Öffnen Sie in der GCP Console die Seite VM-Instanzen.
      Zur Seite "VM-Instanzen"
    2. Warten Sie, bis für die Instanz europe-loadtest in der Spalte Name ein grünes Häkchen angezeigt wird.
    3. Klicken Sie für europe-loadtest in der Spalte Verbinden auf SSH.
  4. Starten Sie Siege. Setzen 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-get -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]
      

Nach dem Ausführen des siege-Befehls sollte die Ausgabe anzeigen: The server is now under siege...

[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 GCP Console die Seite Load-Balancing.
    Zur Seite "Load-Balancer"
  2. Klicken Sie auf den Load-Balancer mit dem Namen fortressnet-balancer.
  3. Klicken Sie auf den Tab Überwachung.
  4. Wählen Sie im Drop-down Back-End 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:

Die Überwachungsanzeige der GCP Console zeigt Anfragen aus Europa, die gleichmäßig auf alle drei Back-Ends verteilt werden

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 Ihre Autoscaling-Grenzen und kann sogar dazu führen, dass Ihre Server auf der Überwachungsanzeige Backend 5xx errors zurückgeben. 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.

Konsole

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

    1. Öffnen Sie in der GCP Console die Seite VM-Instanzen.
      Zur Seite "VM-Instanzen"
    2. Klicken Sie auf Instanz erstellen.
    3. Legen Sie für Name asia-loadtest fest.
    4. Wählen Sie für Region 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-get install -y 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 GCP 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, bis für die Instanz asia-loadtest in der Spalte Name ein grünes Häkchen angezeigt wird.
    2. Klicken Sie für asia-loadtest in der Spalte Verbinden auf SSH.
  4. Starten Sie Siege. Setzen 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-get -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. Setzen Sie als Ziel die IPv4-Adresse des Load-Balancers fest.

      siege -c150 http://[LOAD_BALANCER_IP_ADDRESS]
      

Wieder sollte die Ausgabe anzeigen: The server is now under siege...

[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:

Die Überwachungsanzeige der GCP Console zeigt Anfragen aus Europa und Asien, die gleichmäßig auf alle drei Back-Ends verteilt werden

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 Kapazitätsbedarf auf. Der Load-Balancer zieht es dennoch vor, Anfragen an die nächstliegendsten Back-Ends weiterzuleiten. Deshalb wird das Asien-Back-End schließlich vor allem Anfragen aus Asien und das Europa-Back-End vor allem Anfragen aus Europa empfangen, während das US-Back-End alles empfängt, was übrig bleibt.

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.

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. Rufen Sie in der GCP Console die Seite "Projekte" auf.

    Zur Seite "Projekte"

  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.

Instanzen löschen

So löschen Sie eine Compute Engine-Instanz:

  1. Rufen Sie in der GCP Console die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf das Kästchen neben der Instanz, die Sie löschen wollen.
  3. Auf die Schaltfläche Löschen im oberen Seitenbereich klicken, um die Instanz zu löschen.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation