Mit einem externen HTTP(s)-Hybrid-Load-Balancer eine Netzwerk-Endpunktgruppe erreichen

1. Einführung

Eine Hybridstrategie ist eine pragmatische Lösung, mit der Sie sich an sich ändernde Marktanforderungen anpassen und Ihre Anwendungen schrittweise modernisieren können. Dank der Hybridunterstützung für externe und interne HTTP(S)-Load-Balancer von Google Cloud wird das Cloud-Load-Balancing auf Back-Ends vor Ort und in anderen Clouds ausgeweitet und ist ein wichtiger Erfolgsfaktor für Ihre Hybridstrategie. Dies kann vorübergehend sein, um die Migration zu einer modernen cloudbasierten Lösung oder einen festen Bestandteil der IT-Infrastruktur Ihres Unternehmens zu ermöglichen.

3312e69c63b02f73.png

In diesem Lab erfahren Sie, wie Sie eine Netzwerk-Endpunktgruppe (NEG) mit zwei virtuellen Maschinen erstellen, auf die über einen externen HTTP(s)-globalen Load-Balancer zugegriffen werden kann. Auch wenn sich die NEG im Lab innerhalb der GCP befindet, wird dasselbe Verfahren verwendet, um mit öffentlichen oder lokalen Ressourcen mit IP-Erreichbarkeit zu kommunizieren.

Aufgaben in diesem Lab

  • Benutzerdefinierte VPC erstellen
  • Zwei virtuelle Maschinen (VMs) erstellen, die als Netzwerk-Endpunktgruppe (NEG) verwendet werden
  • Hybrid-Load-Balancer, Backend-Dienst und zugehörige Systemdiagnosen erstellen
  • Firewallregel erstellen, die den Zugriff auf den Load-Balancer zulässt
  • Cloud Router und NAT werden erstellt, um Paketupdates aus dem Internet zu ermöglichen
  • Erreichbarkeit von Netzwerk-Endpunktgruppen validieren

Voraussetzungen

  • Kenntnisse zu Load-Balancern

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Der Projektname ist Ihre persönliche Kennung für dieses Projekt. Solange Sie die Namenskonventionen einhalten, können Sie beliebig festlegen und jederzeit aktualisieren.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann später 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“ sobald das Projekt erstellt ist.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.

Dieses Codelab sollte ohne großen Aufwand betrieben werden. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus 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:

bce75f34b2c53987.png

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

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

2. Hinweis

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID
echo $projectid

3. Neues VPC-Netzwerk im benutzerdefinierten Modus erstellen

In dieser Aufgabe erstellen Sie eine Virtual Private Cloud (VPC), die Grundlage des Netzwerks.

VPC-Netzwerk

Aus Cloud Shell

gcloud compute networks create hybrid-network-lb --subnet-mode custom

Subnetz erstellen

Aus Cloud Shell

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

Cloud NAT-Instanz erstellen

Für Hybridnetzwerke ist die Compute-Instanz keine Voraussetzung, aber zum Herunterladen von Anwendungen und Updates ist eine Internetverbindung erforderlich.

In dieser Aufgabe erstellen Sie einen Cloud Router und eine NAT-Instanz, die eine Internetverbindung zu VM-Instanzen ermöglichen.

Cloud Router erstellen

Aus Cloud Shell

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

Cloud NAT erstellen

Aus Cloud Shell

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. Zwei VM-Instanzen erstellen

In dieser Aufgabe erstellen Sie zwei VM-Instanzen, auf denen Apache ausgeführt wird. Später im Lab werden diese VM-Instanzen zu einer Netzwerk-Endpunktgruppe (NEG).

Erstellen Sie in Cloud Shell die erste lokale Instanz on-prem-neg-1.

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

Erstellen Sie in Cloud Shell die erste lokale Instanz on-prem-neg-2.

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5. NEG erstellen, die Ihren lokalen Endpunkt enthält

Erstellen Sie zuerst eine NEG mit den Namen „on-prem-neg-1“ und „on-prem-neg-2“. Sie geben außerdem an, dass der Load-Balancer berücksichtigen soll, dass sich diese Endpunkte beim Routing und Load-Balancing in der GCP-Zone befinden. Wir empfehlen, dass die konfigurierte Zone einer beliebigen Zone entspricht, die mit der Region des Interconnect-Anhangs/VPN-Gateways verbunden ist, um umgebungsbasierte Load-Balancing-Messungen für das Load-Balancing zu messen.

on-prem-neg-1 in Cloud Shell erstellen

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

on-prem-neg-2 in Cloud Shell erstellen

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

Im Codelab ist die Netzwerk-Endpunktgruppe eine GCE-Instanz, die Apache auf der GCP ausführt. Alternativ können Sie einen lokalen oder Internetendpunkt als Netzwerkendpunkt festlegen

Identifizieren Sie in Cloud Shell die GCE-IP-Adressen.

gcloud compute instances list | grep -i on-prem

Verknüpfen Sie die Netzwerk-Endpunktgruppe mit der IP-Adresse der GCE-Instanz, die zuvor im vorherigen Schritt ermittelt wurde. für jeden Neg., on-prem-neg-1 & on-prem-neg-2.

Aktualisieren Sie über die Cloud Shell-Verknüpfung „on-prem-neg-1“ x.x.x.x mit Ihrer identifizierten IP-Adresse.

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

Aktualisieren Sie in der Cloud Shell-Verknüpfung „on-prem-neg-2“ x.x.x.x mit Ihrer identifizierten IP-Adresse.

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6. HTTP-Systemdiagnose, Back-End-Dienst und Firewall

In diesem Schritt erstellen Sie einen globalen Back-End-Dienst mit dem Namen "on-prem-backend-service". Dieser Back-End-Dienst definiert, wie Ihre Datenebene Traffic an die NEG sendet.

Erstellen Sie zuerst eine Systemdiagnose mit dem Namen "on-prem-health-check", um den Status aller Endpunkte zu überwachen, die zu dieser NEG (also Ihrem lokalen Endpunkt) gehören.

Aus Cloud Shell

gcloud compute health-checks create http on-prem-health-check

Erstellen Sie einen Back-End-Dienst mit dem Namen "on-prem-backend-service" und verknüpfen Sie ihn mit der Systemdiagnose.

Aus Cloud Shell

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

Der externe HTTP(S)-Load-Balancer und das Back-End führen Systemdiagnosen aus den Subnetzen 35.191.0.0/16 und 130.211.0.0/22 durch. Daher ist eine Firewallregel erforderlich, um das Routing vom Load-Balancer zum Back-End zuzulassen.

Aus Cloud Shell

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. NEG und Back-End-Dienst verknüpfen

Diesem Back-End-Dienst die NEG "on-prem-neg-1" hinzufügen

Aus Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Diesem Back-End-Dienst die NEG "on-prem-neg-2" hinzufügen

Aus Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Statische IPv4-IP-Adresse für den Zugriff auf Ihren Netzwerkendpunkt reservieren

Aus Cloud Shell

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

Wir sind mit der Konfiguration der Befehlszeile fertig. Schließen Sie die Konfiguration über die Cloud Console ab.

8. Externen HTTP-Load-Balancer erstellen und Back-End-Dienst verknüpfen

Gehen Sie von der Cloud Console zu „Load Balancing“ und wählen Sie „Load Balancer erstellen“ aus.

HTTP(S)-Load-Balancing identifizieren und auf „Konfiguration starten“ klicken

70ccd168957e89d9.png

Wählen Sie „Vom Internet zu meinen VMs“ aus. wie im Screenshot unten gezeigt, der den öffentlichen Zugriff auf Ihre VM ermöglicht

a55cd31dbeadfecc.png

Geben Sie „xlb“ an als Namen des Load-Balancers und wählen Sie den zuvor erstellten Back-End-Dienst "on-prem-backend-service" aus dann „OK“ gemäß dem bereitgestellten Screenshot

f1589df43bf9e3e8.png

Frontend-Konfiguration auswählen, Name "xlb-fe" aktualisieren und wählen Sie die zuvor erstellte statische IPv4-Adresse aus. Achten Sie darauf, dass Sie den Screenshot b47cd48c7c1ccfc3.png spiegeln.

Wählen Sie „Überprüfen und abschließen“ aus. was dem Screenshot entspricht, und klicken Sie auf „Erstellen“

bfa39f7dc3ad91e1.png

Validierung des Back-End-Zustands

Prüfen Sie in der Cloud Console, ob das Backend „xlb“ ist fehlerfrei, gemäß dem angegebenen Screenshot grün

131bbfc955d6166c.png

9. Prüfen, ob die NEG über das Internet erreichbar ist

Denken Sie daran, dass die beim Erstellen des Load-Balancers verwendete externe statische IP-Adresse jetzt die Front-End-IP-Adresse Ihrer Netzwerkendpunkte ist. Führen wir eine Validierung der IP-Adresse durch, bevor wir den letzten Test ausführen.

Aus Cloud Shell

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

Ausgabe (Ihre IP-Adresse wird abweichen)

Ausgabe aus Cloud Shell

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

Über die Frontend-IP-Adresse des globalen Load-Balancers können Sie auf das Backend des Netzwerkendpunkts zugreifen. Hinweis: Im Codelab ist der Endpunkt eine GCE-Instanz. Sie würden diesen Typ jedoch beispielsweise für lokale Endpunkte verwenden.

Starten Sie von Ihrer lokalen Workstation aus ein Terminal und führen Sie einen curl-Befehl für die IP-Adresse des Load-Balancers aus

Führen Sie von Ihrer Workstation aus einen curl-Befehl für die Front-End-IP-Adresse aus. Sehen Sie sich die Meldung „200 OK“ und die Seitendetails an, die aus dem Namen und der Region der Neg-Instanz bestehen.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

Glückwunsch, Sie haben erfolgreich einen L7-Hybrid-Load-Balancer mit NEGs bereitgestellt

Herzlichen Glückwunsch zum Abschluss des Codelabs!

Behandelte Themen

  • Benutzerdefinierte VPC erstellen
  • Zwei virtuelle Maschinen (VMs) erstellen, die als Netzwerk-Endpunktgruppe (NEG) verwendet werden
  • Hybrid-Load-Balancer, Backend-Dienst und zugehörige Systemdiagnosen erstellen
  • Firewallregel erstellen, die den Zugriff auf den Load-Balancer zulässt
  • Erreichbarkeit von Netzwerk-Endpunktgruppen validieren

10. Bereinigungsschritte

Markieren Sie in der Cloud Console-UI das Symbol „xlb“ und markieren Sie es. Load-Balancer und wählen Sie unter Netzwerkdienste → Load-Balancing Löschen aus. Aktivieren Sie anschließend die Option "Lokaler Back-End-Dienst". &amp; ‘on-premise-health-check&#39; und wählen Sie dann „Löschen“ aus.

53d7463fe354fe66.png

Gehen Sie in der Cloud Console-UI zu Compute Engine → Netzwerk-Endpunktgruppen. Klicken Sie anschließend auf „on-prem-neg-1“. &amp; ‘on-prem-neg-2&#39; und wählen Sie dann „Löschen“ aus.

4d8f04264b44d03c.png

Lab-Komponenten aus Cloud Shell löschen

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet