Netzwerk-Load-Balancer von Zielpools auf regionale Back-End-Dienste umstellen

1. Einführung

In dieser Anleitung wird beschrieben, wie Sie einen vorhandenen Netzwerk-Load-Balancer von einem Zielpool-Backend auf einen regionalen Backend-Dienst umstellen.

Aufgaben in diesem Lab

  • Vorteile regionaler Back-End-Dienste
  • Netzwerk-Load-Balancer mit Zielpools erstellen
  • Zielpool-Validierung durchführen
  • Regionalen Backend-Dienst mit nicht verwalteten Instanzgruppen erstellen
  • Migration von Zielpool zu Backend-Dienst ausführen
  • Validierung der Backend-Dienste durchführen

Voraussetzungen

  • Erfahrung mit Load-Balancern

2. Regionale Back-End-Dienste für Netzwerk-Load-Balancing – Übersicht

Google Cloud-Kunden haben dank Netzwerk-Load-Balancing ein leistungsstarkes Tool für die Verteilung von externem Traffic zwischen virtuellen Maschinen in einer Google Cloud-Region. Um unseren Kunden die Verwaltung des eingehenden Traffics zu erleichtern und das Verhalten des Load-Balancers zu steuern, unterstützen wir seit Kurzem Back-End-Dienste für das Netzwerk-Load-Balancing. So profitieren unsere Kunden von einer verbesserten Skalierung, Geschwindigkeit, Leistung und Ausfallsicherheit bei der Bereitstellung – und das alles auf einfache Weise.

Ab sofort unterstützen wir Back-End-Dienste mit Netzwerk-Load-Balancing – eine deutliche Verbesserung gegenüber dem bisherigen Ansatz, Zielpools. Ein Back-End-Dienst definiert, wie unsere Load-Balancer eingehenden Traffic auf angehängte Back-Ends verteilen und bietet detaillierte Kontrolle über das Verhalten des Load-Balancers.

3. Vorteile regionaler Backend-Dienste

Die Auswahl eines regionalen Back-End-Dienstes als Load-Balancer bringt eine Reihe von Vorteilen für Ihre Umgebung mit sich.

267db35a58145be.png

Regionale Back-End-Dienste bieten von Anfang an Folgendes:

  • Zuverlässige Systemdiagnose mit einheitlichen Systemdiagnosen: Mit regionalen Back-End-Diensten können Sie jetzt die Load-Balancing-Funktionen für Systemdiagnosen in vollem Umfang nutzen, ohne Einschränkungen durch Legacy-HTTP-Systemdiagnosen zu vermeiden. Aus Compliancegründen waren TCP-Systemdiagnosen mit Unterstützung für benutzerdefinierte Anfrage- und Antwortstrings oder HTTPS eine häufige Anfrage von Netzwerk-Load-Balancing-Kunden.
  • Bessere Ausfallsicherheit mit Failover-Gruppen: Mit Failover-Gruppen können Sie eine Instanzgruppe als primäre und eine andere als sekundäre Gruppe festlegen und den Traffic Failover ausführen, wenn die Integrität der Instanzen in der aktiven Gruppe einen bestimmten Schwellenwert unterschreitet. Um mehr Kontrolle über den Failover-Mechanismus zu erhalten, können Sie einen Agent wie keepaowned oder pacemaker verwenden und anhand von Statusänderungen der Back-End-Instanz eine fehlerfreie oder fehlerhafte Systemdiagnose verfügbar machen.
  • Skalierbarkeit und Hochverfügbarkeit mit verwalteten Instanzgruppen: Regionale Back-End-Dienste unterstützen verwaltete Instanzgruppen als Back-Ends. Sie können jetzt eine Vorlage für Ihre Back-End-VM-Instanzen festlegen und Autoscaling auf der Grundlage der CPU-Auslastung oder anderer Monitoring-Messwerte nutzen.

Zusätzlich zu den oben genannten Funktionen können Sie den Verbindungsausgleich für das verbindungsorientierte Protokoll (TCP) und eine schnellere Programmierung bei großen Bereitstellungen nutzen.

Codelab-Netzwerktopologie

In dieser Anleitung wird beschrieben, wie Sie einen vorhandenen Netzwerk-Load-Balancer von einem Zielpool-Backend auf einen regionalen Backend-Dienst umstellen.

Durch den Wechsel zu einem regionalen Back-End-Dienst können Sie Features wie Nicht-Legacy-Systemdiagnosen (für TCP, SSL, HTTP, HTTPS und HTTP/2), verwaltete Instanzgruppen, den Verbindungsausgleich und die Failover-Richtlinie nutzen.

Dieser Leitfaden führt Sie durch die Umstellung des folgenden beispielhaften Zielpool-basierten Netzwerk-Load-Balancers auf einen regionalen Back-End-Dienst

b2ac8a09e53e27f8.png

Vorher: Netzwerk-Load-Balancing mit einem Zielpool

Die daraus resultierende Bereitstellung des auf einem Back-End-Dienst basierenden Netzwerk-Load-Balancers sieht so aus.

f628fdad64c83af3.png

Nachher: Netzwerk-Load-Balancing mit einem regionalen Back-End-Dienst

In diesem Beispiel wird davon ausgegangen, dass Sie einen herkömmlichen Zielpool-basierten Netzwerk-Load-Balancer mit zwei Instanzen in der Zone us-central-1a und zwei Instanzen in der Zone us-central-1c haben.

Für eine solche Umstellung sind folgende Schritte erforderlich:

  1. Gruppieren Sie die Zielpool-Instanzen in Instanzgruppen. Backend-Dienste funktionieren nur mit verwalteten oder nicht verwalteten Instanzgruppen. Beachten Sie, dass es keine Begrenzung für die Anzahl von Instanzen gibt, die in einem einzelnen Zielpool platziert werden können, aber Instanzgruppen haben eine maximale Größe. Wenn Ihr Zielpool mehr als diese maximale Anzahl von Instanzen enthält, müssen Sie seine Back-Ends auf mehrere Instanzgruppen aufteilen. Wenn Ihre vorhandene Bereitstellung einen Sicherungszielpool enthält, erstellen Sie für diese Instanzen eine separate Instanzgruppe. Diese Instanzgruppe wird als Failover-Gruppe konfiguriert.
  2. Erstellen Sie einen regionalen Backend-Dienst. Wenn Ihre Bereitstellung einen Sicherungszielpool enthält, müssen Sie beim Erstellen des Back-End-Dienstes ein Failover-Verhältnis angeben. Diese sollte der Failover-Quote entsprechen, die zuvor für die Zielpoolbereitstellung konfiguriert wurde.
  3. Fügen Sie dem Back-End-Dienst Instanzgruppen hinzu, die zuvor erstellt wurden. Wenn Ihre Bereitstellung einen Sicherungszielpool enthält, markieren Sie die entsprechende Failover-Instanzgruppe mit dem Flag -failover, wenn Sie sie dem Back-End-Dienst hinzufügen.
  4. Konfigurieren Sie eine Weiterleitungsregel, die auf den neuen Back-End-Dienst verweist. Sie haben hier zwei Möglichkeiten:
  • Empfohlen: Aktualisieren Sie die vorhandene Weiterleitungsregel, sodass sie auf den Back-End-Dienst verweist. ODER
  • Erstellen Sie eine neue Weiterleitung, die auf den Back-End-Dienst verweist. Dazu müssen Sie eine neue IP-Adresse für das Front-End des Load-Balancers erstellen. Ändern Sie dann Ihre DNS-Einstellungen, um nahtlos von der IP-Adresse des alten Zielpool-basierten Load-Balancers zur neuen IP-Adresse zu wechseln.

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

Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID bezeichnet.

  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.

In Cloud Shell anmelden und Projekt-ID festlegen

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

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

echo $projectid

4. VPC-Netzwerk erstellen

VPC-Netzwerk

Aus Cloud Shell

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

Subnetz erstellen

Aus Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

Firewallregeln erstellen

Aus Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Nicht verwaltete Instanzen erstellen

Erstellen Sie Instanzen 2 Instanzen pro Zone, us-central1-a und us-central1-c

In Cloud Shell Instanz 1 erstellen

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

In Cloud Shell Instanz 2 erstellen

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

In Cloud Shell Instanz 3 erstellen

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

In Cloud Shell Instanz 4 erstellen

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

Firewallregel erstellen, um externen Traffic zu diesen VM-Instanzen zuzulassen

Aus Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Statische externe IP-Adresse für den Load-Balancer erstellen

Aus Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

Legacy-HTTP-Systemdiagnose-Ressource hinzufügen

Aus Cloud Shell

gcloud compute http-health-checks create basic-check

5. Weiterleitungsregel und Zielpool erstellen

Zielpool erstellen

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

Instanzen zum Zielpool us-central1-a hinzufügen

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

Fügen Sie Ihre Instanzen dem Zielpool us-central1-c hinzu.

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

Weiterleitungsregel hinzufügen

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

Validieren Sie die Funktionalität des Zielpools

Identifizieren Sie die Frontend-IP-Adresse, indem Sie Load Balancer → Frontends (www-rule) auswählen.

Greifen Sie mit dem curl-Befehl von Ihrem Workstationterminal aus auf die externe IP-Adresse zu und beobachten Sie das Load-Balancing für alle vier Zielinstanzen. Schließen Sie das Terminal nach der Validierung.

while true; do curl -m1 IP_ADDRESS; done

6. Netzwerk-Load-Balancer vom Zielpool auf den Backend-Dienst umstellen

Einheitliche Systemdiagnosen für den Back-End-Dienst erstellen

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

Instanzgruppen aus vorhandenen Instanzen aus dem Zielpool erstellen

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

Instanzgruppen aus vorhandenen Instanzen aus dem Zielpool erstellen

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

Back-End-Dienst erstellen und mit den neu erstellten Systemdiagnosen verknüpfen

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

Back-End-Dienst konfigurieren und Instanzgruppen hinzufügen

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

Vorhandene Weiterleitungsregel zur Unterstützung von Back-End-Diensten aktualisieren

Notieren Sie sich den Namen der Weiterleitungsregel „www-rule“. und die zugehörige IP-Adresse an, indem Sie Folgendes tun:

Load-Balancer → Front-Ends auswählen

Außerdem sind die vier Zielpools

Load Balancer auswählen → „www-pool“ auswählen

Traffic durch Aktualisierung der vorhandenen Weiterleitungsregel an Back-End-Dienste weiterleiten

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

Load Balancer „www-pool“ prüfen ist nicht mehr mit dem Front-End "www-rule" konfiguriert. (siehe Screenshot unten)

Load-Balancer auswählen → www-pool

9a393b3ca4e0942c.png

Validieren, dass die Frontend-Weiterleitungsregel jetzt mit dem Load-Balancer "my-backend-service" verknüpft ist

Load-Balancer → Front-Ends auswählen

Beachten Sie den Regelnamen „www-rule“ Die IP-Adresse bleibt erhalten und der Load-Balancer „my-backend-service“ wird jetzt verwendet

Greifen Sie über den curl-Befehl auf dem Workstation-Terminal auf die externe IP-Adresse zu und beobachten Sie das Load-Balancing für den neu zugeordneten Back-End-Dienst. Schließen Sie das Terminal nach der Validierung.

while true; do curl -m1 IP_ADDRESS; done

7. Bereinigungsschritte

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. Glückwunsch!

Herzlichen Glückwunsch zum Abschluss des Codelabs.

Behandelte Themen

  • Vorteile regionaler Back-End-Dienste
  • Netzwerk-Load-Balancer mit Zielpools erstellen
  • Zielpool-Validierung durchführen
  • Regionalen Backend-Dienst mit nicht verwalteten Instanzgruppen erstellen
  • Migration von Zielpool zu Backend-Dienst ausführen
  • Validierung der Backend-Dienste durchführen