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 Ihr Unternehmen an wechselnde Marktbedürfnisse anpassen und Ihre Anwendungen schrittweise modernisieren können. Die Hybridunterstützung für externe und interne HTTP(S)-Load-Balancer von Google Cloud erweitert Cloud Load Balancing auf Back-Ends, die sich lokal und in anderen Clouds befinden. Sie ist ein wichtiger Faktor für Ihre Hybridstrategie. Dies kann eine temporäre Hybridbereitstellung sein, um die Migration zu einer modernen cloudbasierten Lösung zu ermöglichen, oder eine dauerhafte Bereitstellung der IT-Infrastruktur Ihres Unternehmens.

3312e69c63b02f73.png

In diesem Lab erfahren Sie, wie Sie eine Netzwerkendpunktgruppe (NEG) mit zwei virtuellen Maschinen erstellen, auf die über einen externen globalen HTTP(S)-Loadbalancer zugegriffen werden kann. Obwohl sich das NEG im Lab in der GCP befindet, wird dasselbe Verfahren verwendet, um mit öffentlichen oder lokalen Ressourcen mit IP-Erreichbarkeit zu kommunizieren.

Lerninhalte

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

Voraussetzungen

  • Kenntnisse über Load Balancer

Umgebung zum selbstbestimmten 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 alles verwenden, was Sie möchten, und es jederzeit aktualisieren.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (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 die Projekt-ID verweisen (die in der Regel als PROJECT_ID angegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Sobald das Projekt erstellt wurde, wird es „eingefroren“.
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.

Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“, in der Sie erfahren, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.

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 GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

bce75f34b2c53987.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

f6ef2b5f13479f3a.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. Für dieses Lab benötigen Sie lediglich einen Browser.

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

Über Cloud Shell

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

Subnetz erstellen

Über 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

Obwohl dies keine Voraussetzung für Hybrid-Networking ist, benötigt die Compute-Instanz eine Internetverbindung, um Anwendungen und Updates herunterzuladen.

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

Cloud Router erstellen

Über Cloud Shell

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

Cloud NAT erstellen

Über 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 On-Premise-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 On-Premise-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 mit Ihrem On-Premise-Endpunkt erstellen

Erstellen Sie zuerst eine NEG mit dem Namen „on-prem-neg-1“ und „on-prem-neg-2“. Sie geben außerdem an, dass der Load-Balancer für Routing- und Load-Balancing-Zwecke davon ausgehen soll, dass sich diese Endpunkte in der GCP-Zone „us-west1-a“ befinden. Wir empfehlen, dass die konfigurierte Zone mit einer Zone übereinstimmt, die der Region des Interconnect-Anhangs/VPN-Gateways für proximitätsbasiertes Load-Balancing zugeordnet ist, das für das Load-Balancing verwendet wird.

Erstellen Sie on-prem-neg-1 in Cloud Shell.

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

Erstellen Sie on-prem-neg-2 in Cloud Shell.

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, auf der Apache in der GCP ausgeführt wird. Alternativ können Sie einen lokalen oder Internetendpunkt als Netzwerkendpunkt angeben.

GCE-IP-Adressen in Cloud Shell ermitteln

gcloud compute instances list | grep -i on-prem

Ordnen Sie die Netzwerk-Endpunktgruppe der GCE-Instanz-IP-Adresse zu, die Sie im vorherigen Schritt ermittelt haben. Für jede NEG: on-prem-neg-1 & on-prem-neg-2.

Ordnen Sie in Cloud Shell „on-prem-neg-1“ zu. Ersetzen Sie „x.x.x.x“ durch die ermittelte 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"

Ordnen Sie in Cloud Shell on-prem-neg-2 zu. Ersetzen Sie x.x.x.x durch die ermittelte 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 erstellen

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 Ihre NEG sendet.

Erstellen Sie zuerst eine Systemdiagnose mit dem Namen „on-prem-health-check“, um den Zustand aller Endpunkte zu überwachen, die zu dieser NEG gehören (d. h. Ihres lokalen Endpunkts).

Über 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.

Über 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 zu ermöglichen.

Über 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 Backend-Dienst verknüpfen

Fügen Sie diesem Backend-Dienst die NEG „on-prem-neg-1“ hinzu.

Über 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

Fügen Sie diesem Backend-Dienst die NEG „on-prem-neg-2“ hinzu.

Über 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-Adresse reservieren, die für den Zugriff auf Ihren Netzwerkendpunkt verwendet wird

Über Cloud Shell

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

Die CLI-Konfiguration ist abgeschlossen. Wir schließen die Konfiguration in der Cloud Console ab.

8. Externen HTTP-Load-Balancer erstellen und Back-End-Service zuordnen

Rufen Sie in der Cloud Console „Load Balancing“ auf und wählen Sie „Load-Balancer erstellen“ aus.

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

70ccd168957e89d9.png

Wählen Sie gemäß dem Screenshot unten „Vom Internet zu meinen VMs“ aus, um öffentlichen Zugriff auf Ihre VM zu ermöglichen.

a55cd31dbeadfecc.png

Geben Sie „xlb“ als Namen des Load-Balancers an und wählen Sie den zuvor erstellten Backend-Dienst „on-prem-backend-service“ aus. Klicken Sie dann auf „Ok“, wie im Screenshot gezeigt.

f1589df43bf9e3e8.png

Wählen Sie die Frontend-Konfiguration aus, aktualisieren Sie den Namen „xlb-fe“ und wählen Sie die zuvor erstellte statische IPv4-Adresse aus. Achten Sie darauf, dass die Konfiguration dem Screenshot entspricht b47cd48c7c1ccfc3.png.

Wählen Sie „Überprüfen und abschließen“ aus, um den Screenshot zu erstellen.

bfa39f7dc3ad91e1.png

Validierung der Back-End-Systemdiagnose

Prüfen Sie in der Cloud Console, ob das Backend „xlb“ fehlerfrei ist (grün), wie im Screenshot dargestellt.

131bbfc955d6166c.png

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

Die externe statische IP-Adresse, die beim Erstellen des Load-Balancers verwendet wurde, ist jetzt die Frontend-IP-Adresse Ihrer Netzwerkendpunkte. Lassen Sie uns die IP-Adresse validieren, bevor wir den endgültigen Test ausführen.

Über Cloud Shell

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

Ausgabe (Ihre IP-Adresse wird sich unterscheiden)

Ausgabe von Cloud Shell

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

Über die IP-Adresse des globalen Load-Balancer-Frontends können Sie auf das Netzwerkendpunkt-Backend zugreifen. Im Codelab ist der Endpunkt eine GCE-Instanz. Sie können ihn aber auch mit lokalen Endpunkten verwenden.

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

Führen Sie auf Ihrer Workstation einen Curl-Befehl für die IP-Adresse des Front-Ends aus. Achten Sie auf die Meldung „200 OK“ und die Seitendetails, die aus dem Namen und der Region der negativen 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

Sie haben erfolgreich einen Hybrid-Load Balancer der Schicht 7 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, Back-End-Dienst und zugehörige Systemdiagnosen erstellen
  • Firewallregel erstellen, die den Zugriff auf den Load-Balancer zulässt
  • Erreichbarkeit von Netzwerk-Endpunktgruppen prüfen

10. Bereinigungsschritte

Suchen Sie in der Cloud Console-Benutzeroberfläche nach dem Load-Balancer „xlb“, setzen Sie ein Häkchen und wählen Sie „Löschen“ über „Netzwerkdienste“ → „Load-Balancing“ aus. Wenn Sie die Dienste ausgewählt haben, setzen Sie ein Häkchen bei „On-Premise-Backend-Dienst“ und „On-Premise-Systemdiagnose“ und wählen Sie dann „Löschen“ aus.

53d7463fe354fe66.png

Rufen Sie in der Cloud Console-UI „Compute Engine“ → „Netzwerk-Endpunktgruppen“ auf. Wählen Sie „on-prem-neg-1“ und „on-prem-neg-2“ aus und klicken Sie auf „Löschen“.

4d8f04264b44d03c.png

Lab-Komponenten über 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