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.

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



- 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_IDangegeben 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“.
- 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:

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

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

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

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.

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
.
Wählen Sie „Überprüfen und abschließen“ aus, um den Screenshot zu erstellen.

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

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.

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

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