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

1. Einführung

Willkommen beim Codelab zum externen HTTPS-Load-Balancer mit erweiterter Traffic-Verwaltung (Envoy).

Die neueste Version des externen HTTP(S)-Load-Balancers mit erweiterter Traffic-Verwaltung enthält alle Features unseres bestehenden klassischen globalen externen HTTP(S)-Load-Balancers, allerdings mit einer stetig wachsenden Liste von Funktionen zur erweiterten Traffic-Verwaltung. Einige dieser Funktionen sind neu für unsere Load Balancer, andere bieten erweiterte Features für bestehende Funktionen. Zu diesen Funktionen gehören:

  • Gewichtete Traffic-Aufteilung
  • Anfragespiegelung
  • Ausreißererkennung
  • Wiederholung von Anfragen
  • Fault Injection (Fehlerinjektion)
  • Zusätzliche Optionen für die Back-End-Sitzungsaffinität
  • Zusätzliche Optionen für Header-Transformation
  • Cross-Origin Resource Sharing (CORS)
  • Neue Load-Balancing-Algorithmen

Aufgaben in diesem Lab

  • Verwaltete Instanzgruppe sowie die zugehörigen VPC- und Firewallregeln einrichten
  • So verwenden Sie die erweiterten Traffic-Verwaltungsfeatures des neuen Load-Balancers
  • So prüfen Sie, ob die Funktionen der erweiterten Trafficverwaltung wie vorgesehen funktionieren

Voraussetzungen

  • Grundkenntnisse in Netzwerken und HTTP-Kenntnissen
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen

Codelab-Topologie und Anwendungsfall

dd8bd5e8e1341878.png

Abbildung 1 – Routingtopologie für den HTTP-Load-Balancer

In diesem Code-Lab richten Sie drei verwaltete Instanzgruppen ein, eine in East, West und Central. Sie erstellen einen globalen externen HTTPS-Load-Balancer. Der Load-Balancer nutzt mehrere Features 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

Umgebung für das selbstbestimmte Lernen einrichten

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als PROJECT_ID identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

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

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Sie können alle Aufgaben in diesem Lab ganz einfach in einem Browser erledigen.

Hinweis

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

gcloud config list project

gcloud config set project [IHR-PROJEKTNAME]

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

Von 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, legen Sie Firewallregeln fest. Die Firewallregel wird verwendet, um allen IP-Adressen den Zugriff auf die externe IP-Adresse der Website der Testanwendung über Port 80 für HTTP-Traffic zu ermöglichen.

Von 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 der VMs definiert wird, die für die einzelnen Regionen erstellt werden sollen. Als Nächstes erstellen wir für ein Backend in jeder Region eine verwaltete Instanzgruppe, die auf eine Instanzvorlage verweist.

Verwaltete Instanzgruppen können zonal oder regional sein. Für diese Lab-Ü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 bei der Instanzerstellung verwiesen wird. Dieses Startskript installiert und aktiviert Webserverfunktionen, mit denen wir eine Webanwendung simulieren. Sie können sich dieses Skript gerne ansehen.

Vorlagen für den Osten, den Westen und die zentrale Instanz erstellen

Zuerst erstellen Sie die Instanzvorlage "us-east-1".

Von Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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

Im nächsten Schritt erstellen Sie die Instanzvorlage "us-west-1".

Von Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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.

Von Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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 jetzt prüfen, ob die Instanzvorlagen erfolgreich erstellt wurden:

Von 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

Osten, Westen und zentral verwaltete Instanzgruppen erstellen

Nun müssen wir eine verwaltete Instanzgruppe aus den Instanzvorlagen erstellen, die wir zuvor erstellt haben.

Von 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

Von 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

Von 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 Sie prüfen, ob die Instanzgruppen erfolgreich erstellt wurden:

Von 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 ausführt:

c87ca81d3125ac61.png

Um sicherzustellen, dass Ihre Webserver ordnungsgemäß funktionieren, gehen Sie zu Compute Engine -> VM-Instanzen: Achten Sie darauf, dass 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. Dies kann einen Moment 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.

Oder navigieren Sie in Ihrem Browser zu http://<IP_Address>.

5. Load-Balancer einrichten

Systemdiagnose erstellen

Zuerst müssen wir eine grundlegende Systemdiagnose erstellen, um sicherzustellen, dass unsere Dienste erfolgreich ausgeführt werden. Wir erstellen eine einfache Systemdiagnose. Es sind noch viele weitere Anpassungen verfügbar.

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

Von 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 Back-End-Dienst erstellen. Eine für „Osten“, „Westen“ und „Mitte“.

Back-End-Dienst für die verwaltete Instanzgruppe East erstellen

Von 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

Von 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

Back-End-Dienst für die zentral verwaltete Instanzgruppe erstellen

Von 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 Back-End-Diensten hinzufügen

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

Fügen Sie die lokale MIG zum Back-End-Dienst hinzu.

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

Von 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

Zentrale MIG zum Back-End-Dienst hinzufügen.

Von 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

In der URL-Zuordnung befinden sich die erweiterten Traffic-Verwaltungsfunktionen für dieses Lab. Wir müssen eine .yaml-Datei erstellen, die die Konfiguration enthält. In der YAML-Datei haben wir eine Präfixübereinstimmung für /roundrobbin erstellt, sodass nur Traffic, der mit /roundrobbin übereinstimmt, von diesen Konfigurationen betroffen ist. Wir haben festgelegt, dass 50% des Traffics an den Dienst „east-backend-service“ und 50% an den Dienst „west-backend-service“ gehen sollen. Außerdem haben wir den Antwortheaderwert {test} hinzugefügt, der in allen Antworten vorhanden ist. Schließlich haben wir hinzugefügt, dass der gesamte Traffic an den zentralen Back-End-Dienst gespiegelt werden soll. Der Traffic wird dupliziert und nur zu Testzwecken an diese Stelle 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, mit der Sie das Dokument von Ihrem Computer importieren. Der Quellpfad unterscheidet sich je nachdem, wo Sie die .yaml-Datei speichern.

Von 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 besteht darin, das Front-End zu erstellen. Dadurch wird die zuvor reservierte IP-Adresse der von Ihnen erstellten URL-Zuordnung des Load-Balancers zugeordnet.

Von 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, die die zuvor reservierte IP-Adresse dem HTTP-Proxy zuordnet.

Von 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 überprüfen, ob die implementierte Funktion zur Traffic-Teilung 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, müssen Sie zuerst eine Firewallregel erstellen, die SSH-Traffic zur VM zulässt.

Von 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

Jetzt erstellen Sie die „siege-vm“, mit der Sie die Last generieren

Von 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 zu der von Ihnen erstellten VM herstellen. Klicken Sie danach auf SSH, um ein Terminal zu starten und eine Verbindung herzustellen.

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

Von 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

Jetzt, da die Siege ausgeführt wird, ist es an der Zeit zu prüfen, ob der Traffic gleichmäßig auf die von Osten und Westen verwalteten Instanzgruppen verteilt wird. Außerdem können Sie prüfen, ob die Trafficspiegelung funktioniert und der Traffic an die zentral 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. Wenn Sie zum Tab „Monitoring“ gehen, sehen Sie das Diagramm unten.

f4d6803db44be253.png

Sie können die Trafficaufteilung für diese verwaltete Instanzgruppe in Echtzeit sehen. Der Traffic wird gleichmäßig aufgeteilt, da Sie eine Aufteilung von 50:50 nach dem Round-Robbin-Prinzip konfiguriert haben.

Um zu überprüfen, ob die von Ihnen erstellte Richtlinie für die Trafficspiegelung funktioniert, müssen Sie die Auslastung der verwalteten Instanzgruppe des zentralen Back-End-Dienstes prüfen. Gehen Sie dazu zu Compute Engine, Compute Engine und Instanzgruppen und wählen Sie „us-central1-mig“ aus. Rufen Sie als Nächstes den Tab „Monitoring“ auf.

cf25e44d511529e7.png

Die Diagramme werden dargestellt, die zeigen, dass Traffic in diese verwaltete Instanzgruppe gespiegelt wurde.

Halte die Belagerung an

Nachdem Sie nun gezeigt haben, dass die erweiterte Trafficaufteilung funktioniert, ist es an der Zeit, die Siege zu stoppen. Kehren Sie dazu zum SSH-Terminal von siege-vm zurück und drücken Sie Strg + C, um „siege“ zu beenden.

Senden des Antwortheaders validieren

Vor der Bereinigung können Sie schnell prüfen, ob der entsprechende Antwortheader vom HTTP-Load-Balancer gesendet wird. Sie haben ihn so konfiguriert, dass der Headertest mit dem Inhaltswert gesendet wird. Wenn Sie den Befehl „curl“ in Cloud Shell ausführen, erhalten Sie die erwartete Antwort.

Von 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

Da wir die Lab-Umgebung nun fertiggestellt haben, ist es an der Zeit, sie zu entfernen. Führen Sie die folgenden Befehle aus, um die Testumgebung zu löschen.

Von 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 zum externen HTTPS-Load-Balancer mit der erweiterten Traffic-Verwaltung (Envoy) abgeschlossen.

Behandelte Themen

  • Verwaltete Instanzgruppe sowie die zugehörigen VPC- und Firewallregeln einrichten
  • So verwenden Sie die erweiterten Traffic-Verwaltungsfeatures des neuen Load-Balancers
  • So prüfen Sie, ob die Funktionen der erweiterten Trafficverwaltung wie vorgesehen funktionieren

Weiteres Vorgehen

  • Probieren Sie einige der anderen erweiterten Routingfunktionen aus, z. B. URL-Umschreibung oder CORS-Header. Link