Codelab: Externer HTTPS-Load-Balancer mit erweiterter Traffic-Verwaltung (Envoy)

1. Einführung

Willkommen beim Codelab zum externen HTTP(S)-Load-Balancer mit erweiterter Trafficverwaltung (Envoy)!

Die aktuelle Version des externen HTTP(S)-Load-Balancers mit erweiterter Trafficverwaltung enthält alle Funktionen unseres bestehenden klassischen globalen externen HTTP(S)-Load-Balancers, aber mit einer ständig wachsenden Liste von erweiterten Funktionen für die Trafficverwaltung. Einige dieser Funktionen sind neu für unsere Load Balancer, andere bieten erweiterte Funktionen für bestehende Funktionen. Eine Teilliste dieser Funktionen:

  • Gewichtete Trafficaufteilung
  • Spiegelung anfordern
  • Ausreißererkennung
  • Wiederholung von Anfragen
  • Fehlereinschleusung
  • Zusätzliche Optionen für die Backend-Sitzungsaffinität
  • Zusätzliche Optionen für die Header-Transformation
  • Cross-Origin Resource Sharing (CORS)
  • Neue Load-Balancing-Algorithmen

Lerninhalte

  • Einrichtung einer verwalteten Instanzgruppe und der zugehörigen VPC- und Firewallregeln
  • Erweiterte Funktionen zur Traffic-Verwaltung des neuen Load-Balancers verwenden
  • So prüfen Sie, ob die erweiterten Funktionen zur Trafficverwaltung wie vorgesehen funktionieren.

Voraussetzungen

  • Grundkenntnisse in den Bereichen Netzwerk und HTTP
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen

Codelab-Topologie und ‑Anwendungsfall

dd8bd5e8e1341878.png

Abbildung 1: Routing-Topologie des HTTP-Load-Balancers

In diesem Codelab richten Sie drei verwaltete Instanzgruppen ein: eine in East, eine in West und eine in Central. Sie erstellen einen globalen externen HTTPS-Load-Balancer. Der Load Balancer nutzt mehrere Funktionen aus der Liste der erweiterten Funktionen, die der Envoy-basierte Load Balancer unterstützt. Nach der Bereitstellung generieren Sie eine simulierte Last und prüfen, ob die von Ihnen festgelegten Konfigurationen ordnungsgemäß funktionieren.

2. Einrichtung und Anforderungen

Einrichtung der Umgebung im eigenen Tempo

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eins erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach dem Festlegen nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am Programm Kostenlose Testversion mit einem Guthaben von 300$ teilnehmen.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der Google Cloud Console in der Symbolleiste oben rechts auf das Cloud Shell-Symbol:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Anschließend sehen Sie in etwa Folgendes:

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.

Hinweis

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist.

gcloud config list project

gcloud config set project [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

APIs aktivieren

Alle erforderlichen Dienste aktivieren

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. VPC‑Netzwerk erstellen

VPC-Netzwerk erstellen

Über Cloud Shell

gcloud compute networks create httplbs --subnet-mode=auto

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

VPC-Firewallregeln erstellen

Nachdem Sie die VPC erstellt haben, erstellen Sie nun eine Firewallregel. Die Firewallregel wird verwendet, um allen IP-Adressen den Zugriff auf die externe IP-Adresse der Website der Testanwendung an Port 80 für HTTP-Traffic zu ermöglichen.

Über Cloud Shell

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

Ausgabe

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

4. Verwaltete Instanzgruppen einrichten

Sie müssen verwaltete Instanzgruppen einrichten, die die Muster für Backend-Ressourcen enthalten, die vom HTTP Load Balancer verwendet werden. Zuerst erstellen wir Instanzvorlagen, in denen die Konfiguration für die VMs definiert wird, die für jede Region erstellt werden sollen. Als Nächstes erstellen wir für jedes Backend in jeder Region eine verwaltete Instanzgruppe, die auf eine Instanzvorlage verweist.

Verwaltete Instanzgruppen können zonal oder regional sein. In dieser Übung erstellen wir drei regionale verwaltete Instanzgruppen: eine in us-east1, eine in us-west1 und eine in us-central1.

In diesem Abschnitt sehen Sie ein vorab erstelltes Startskript, auf das beim Erstellen der Instanz verwiesen wird. Dieses Startskript installiert und aktiviert Webserverfunktionen, die wir zum Simulieren einer Webanwendung verwenden. Sie können sich das Skript ansehen.

Instanzvorlagen für Ost-, West- und Zentralregion erstellen

Als Erstes erstellen Sie die Instanzvorlage „us-east-1“.

Über Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --metadata=startup-script='#! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

Als Nächstes erstellen Sie die Instanzvorlage „us-west-1“.

Über Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --metadata=startup-script='#! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

Im nächsten Schritt erstellen Sie die Instanzvorlage für „us-central-1“.

Über Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --metadata=startup-script='#! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

Mit dem folgenden gcloud-Befehl können Sie prüfen, ob die Instanzvorlagen erfolgreich erstellt wurden:

Über Cloud Shell

gcloud compute instance-templates list

Ausgabe

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

Verwaltete Instanzgruppen für Ost, West und Mitte erstellen

Als Nächstes müssen wir eine verwaltete Instanzgruppe aus den zuvor erstellten Instanzvorlagen erstellen.

Über Cloud Shell

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

Über Cloud Shell

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

Über Cloud Shell

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

Ausgabe

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

Mit dem folgenden gcloud-Befehl können wir prüfen, ob unsere Instanzgruppen erfolgreich erstellt wurden:

Über Cloud Shell

gcloud compute instance-groups list

Ausgabe

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

Webserver-Funktionalität prüfen

Jede Instanz ist so konfiguriert, dass ein Apache-Webserver mit einem einfachen PHP-Skript ausgeführt wird, das Folgendes rendert:

c87ca81d3125ac61.png

Damit Ihre Webserver ordnungsgemäß funktionieren, rufen Sie „Compute Engine“ –> „VM-Instanzen“ auf. Prüfen Sie, ob Ihre neuen Instanzen (z.B. us-east1-mig-xxx) gemäß ihren Instanzgruppendefinitionen erstellt wurden.

Stellen Sie nun eine Webanfrage in Ihrem Browser, um sicherzustellen, dass der Webserver ausgeführt wird. Das kann eine Minute dauern. Wählen Sie auf der Seite „VM-Instanzen“ unter „Compute Engine“ eine von Ihrer Instanzgruppe erstellte Instanz aus und klicken Sie auf ihre externe (öffentliche) IP-Adresse.

Alternativ können Sie in Ihrem Browser http://<IP_Address> aufrufen.

5. Load-Balancer einrichten

Systemdiagnose erstellen

Zuerst müssen wir eine grundlegende Systemdiagnose erstellen, um sicherzustellen, dass unsere Dienste ordnungsgemäß ausgeführt werden. Wir erstellen eine grundlegende Systemdiagnose. Es sind jedoch viele weitere erweiterte Anpassungen möglich.

Über Cloud Shell

gcloud compute health-checks create http http-basic-check \
    --port 80

Externe IP-Adresse reservieren

Für diesen Schritt müssen Sie eine global verfügbare statische IP-Adresse reservieren, die später an den Load Balancer angehängt wird.

Über Cloud Shell

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

Notieren Sie sich die reservierte IP-Adresse.

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

Back-End-Dienste erstellen

Jetzt müssen wir für jede der zuvor erstellten verwalteten Instanzgruppen einen Backend-Dienst erstellen. Einer für Ost, West und Mitte.

Erstellen eines Back-End-Dienstes für die verwaltete Instanzgruppe „East“.

Über Cloud Shell

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Back-End-Dienst für die verwaltete Instanzgruppe „West“ erstellen.

Über Cloud Shell

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Erstellen eines Backend-Dienstes für die zentrale verwaltete Instanzgruppe.

Über Cloud Shell

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

MIGs zu Backend-Diensten hinzufügen

Nachdem wir die entsprechenden Backend-Dienste für jeden Anwendungscluster erstellt haben, müssen wir jedem Backend-Dienst die zuvor erstellten verwalteten Instanzgruppen hinzufügen.

Fügen Sie dem Backend-Dienst die MIG für die östliche Zone hinzu.

Über Cloud Shell

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

Fügen Sie dem Back-End-Dienst die West-MIG hinzu.

Über Cloud Shell

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

Fügen Sie dem Backend-Dienst die zentrale MIG hinzu.

Über Cloud Shell

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

URL-Zuordnung erstellen

Die erweiterten Funktionen zur Trafficverwaltung für dieses Lab sind in der URL-Zuordnung enthalten. Wir müssen eine YAML-Datei erstellen, die die Konfiguration enthält. In der .yaml-Datei haben wir einen Präfixabgleich für „/roundrobbin“ erstellt. Daher ist nur Traffic, der mit „/roundrobbin“ übereinstimmt, von diesen Konfigurationen betroffen. Wir haben angegeben, dass 50% des Traffics an den „east-backend-service“ und 50% an den „west-backend-service“ weitergeleitet werden sollen. Außerdem haben wir einen Antwortheader-Wert hinzugefügt:{test}. Dieser ist in allen Antworten enthalten. Schließlich haben wir hinzugefügt, dass der gesamte Traffic an den zentralen Backend-Dienst gespiegelt werden soll. Der Traffic wird dupliziert und nur zu Testzwecken hierher gesendet.

Speichern Sie das Beispiel als YAML-Datei auf Ihrem Computer.

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

Erstellen Sie die URL-Zuordnung, indem Sie das Dokument von Ihrem Computer importieren. Der Quellpfad hängt davon ab, wo Sie die YAML-Datei speichern.

Über Cloud Shell

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

HTTP-Frontend erstellen

Der letzte Schritt beim Erstellen des Load-Balancers ist das Erstellen des Frontends. Dadurch wird die IP-Adresse, die Sie zuvor reserviert haben, der von Ihnen erstellten URL-Zuordnung des Load-Balancers zugeordnet.

Über Cloud Shell

gcloud compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

Als Nächstes müssen Sie eine globale Weiterleitungsregel erstellen, mit der die zuvor reservierte IP-Adresse dem HTTP-Proxy zugeordnet wird.

Über Cloud Shell

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

6. Prüfen, ob die erweiterten Traffic-Funktionen funktionieren

Um zu prüfen, ob die implementierte Funktion zur Aufteilung des Traffics funktioniert, müssen Sie eine gewisse Last generieren. Dazu erstellen wir eine neue VM, um die Last zu simulieren.

Firewallregel zum Zulassen von SSH erstellen

Damit Sie eine SSH-Verbindung zur VM herstellen können, von der wir Traffic generieren, müssen Sie zuerst eine Firewallregel erstellen, die SSH-Traffic zur VM zulässt.

Über Cloud Shell

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

Ausgabe

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

„Siege-vm“ erstellen

Erstellen Sie jetzt die VM „siege-vm“, mit der Sie die Last generieren.

Über Cloud Shell

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

Ausgabe

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

Als Nächstes können Sie eine SSH-Verbindung zur erstellten VM herstellen. Klicken Sie nach der Erstellung auf SSH, um ein Terminal zu starten und eine Verbindung herzustellen.

Führen Sie nach der Verbindung den folgenden Befehl aus, um Last zu generieren. Verwenden Sie die IP-Adresse, die Sie zuvor für den externen HTTP-Load-Balancer reserviert haben.

Über Cloud Shell

siege -c 250 http://[$lb-ipv4-2]/roundrobbin

Ausgabe

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

Lastverteilung prüfen

Nachdem Siege ausgeführt wird, können Sie prüfen, ob der Traffic gleichmäßig auf die verwalteten Instanzgruppen für Ost und West verteilt wird. Außerdem können Sie prüfen, ob die Traffic-Spiegelung funktioniert und Traffic an die zentrale verwaltete Instanzgruppe gesendet wird.

Klicken Sie in der Cloud Console im Navigationsmenü auf „Netzwerkdienste“ > „Load-Balancing“. Wählen Sie den Load Balancer „web-map-http“ aus. Rufen Sie den Tab „Monitoring“ auf. Dort sehen Sie das folgende Diagramm.

f4d6803db44be253.png

Sie können die Traffic-Aufteilung für diese MIG in Echtzeit sehen. Der Traffic wird gleichmäßig aufgeteilt, da Sie eine 50/50-Round-Robin-Aufteilung konfiguriert haben.

Um zu prüfen, ob die von Ihnen erstellte Richtlinie zur Spiegelung von Traffic funktioniert, müssen Sie die Auslastung der verwalteten Instanzgruppe „central-backend-service“ prüfen. Rufen Sie dazu „Compute“, „Compute Engine“, „Instanzgruppen“ auf und wählen Sie „us-central1-mig“ aus. Rufen Sie als Nächstes den Tab „Monitoring“ auf.

cf25e44d511529e7.png

Die Diagramme werden mit Daten gefüllt, die zeigen, dass der Traffic in diese verwaltete Instanzgruppe gespiegelt wurde.

Belagerung beenden

Nachdem Sie nachgewiesen haben, dass die erweiterte Traffic-Aufteilung funktioniert, ist es an der Zeit, die Belagerung zu beenden. Kehren Sie dazu zum SSH-Terminal von siege-vm zurück und drücken Sie Strg + C, um den laufenden „siege“-Prozess zu beenden.

Prüfen, ob der Antwortheader gesendet wird

Bevor Sie die Bereinigung durchführen, können Sie schnell prüfen, ob der entsprechende Antwortheader vom HTTP-Load-Balancer gesendet wird. Sie hatten ihn so konfiguriert, dass der Header „test“ mit dem Wert „contents“ gesendet wird. Wenn Sie den curl-Befehl in Cloud Shell ausführen, erhalten Sie die erwartete Antwort.

Über Cloud Shell

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

Ausgabe

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

7. Lab bereinigen

Nachdem wir die Lab-Umgebung eingerichtet haben, ist es an der Zeit, sie wieder abzubauen. Führen Sie die folgenden Befehle aus, um die Testumgebung zu löschen.

Über Cloud Shell

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

8. Glückwunsch!

Sie haben das Codelab „Externer HTTPS-Load-Balancer mit erweiterter Trafficverwaltung (Envoy)“ abgeschlossen.

Behandelte Themen

  • Einrichtung einer verwalteten Instanzgruppe und der zugehörigen VPC- und Firewallregeln
  • Erweiterte Funktionen zur Traffic-Verwaltung des neuen Load-Balancers verwenden
  • So prüfen Sie, ob die erweiterten Funktionen zur Trafficverwaltung wie vorgesehen funktionieren.

Weiteres Vorgehen

  • Testen Sie einige der anderen erweiterten Routingfunktionen wie das Umschreiben von URLs, das Hinzufügen von CORS-Headern und vieles mehr ( Link).