Auf dieser Seite finden Sie zwei Beispiele für den klassischen Anwendungs-Load-Balancer:
Informationen zum Konfigurieren der Trafficverwaltung für den globalen externen Anwendungs-Load-Balancer und den regionalen externen Anwendungs-Load-Balancer finden Sie auf den folgenden Seiten:
- Trafficverwaltung für globale externe Anwendungs-Load-Balancer einrichten
- Trafficverwaltung für regionale externe Anwendungs-Load-Balancer einrichten
Hinweise
- Übersicht über die Trafficverwaltung für externe Anwendungs-Load-Balancer
- Machen Sie sich mit der URL-Zuordnungs-API vertraut.
Routing anhand von Abfrageparametern einrichten
In diesem Beispiel wird gezeigt, wie Anfrageparameter für A/B Testing verwendet werden, indem der Abfragestring abgeglichen wird.
Zwei Backend-Instanzgruppen hinzufügen
Damit das Routing funktioniert, müssen Sie mehrere Back-Ends haben.
Zum Einrichten von zwei Back-Ends müssen sich die VMs in zwei Instanzgruppen befinden. In dieser Anleitung wird beschrieben, wie Sie verwaltete Instanzgruppen mit Linux-VMs erstellen, auf denen Apache ausgeführt wird, und wie Sie dann das Load-Balancing einrichten.
Die verwalteten Instanzgruppen stellen VMs bereit, die die Back-End-Server eines externen HTTP-Load-Balancers ausführen. Zu Demonstrationszwecken stellen Back-Ends ihre eigenen Hostnamen bereit.
Der Einfachheit halber befinden sich die Back-Ends in derselben Region. Wenn ein multiregionaler Standort eingerichtet werden soll, müssen Sie für die zweite Region eine Instanzvorlage einrichten.
Console
eine Instanzvorlage erstellen Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.
- Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie für Name
lb-backend-template
ein. - Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 12 (bookworm) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get
. - Klicken Sie auf Erweiterte Optionen.
- Klicken Sie auf Netzwerk und konfigurieren Sie das folgende Feld:
- Geben Sie bei Netzwerk-Tags den Wert
allow-health-check
ein.
- Geben Sie bei Netzwerk-Tags den Wert
Klicken Sie auf Verwaltung. Fügen Sie im Feld Startskript das nachfolgende Skript ein.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Klicken Sie auf Erstellen.
Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
- Klicken Sie auf Instanzgruppe erstellen.
- Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
- Geben Sie für Name
first-example-ig
ein. - Wählen Sie unter Ort die Option Einzelne Zone aus.
- Wählen Sie unter Region die gewünschte Region aus. In diesem Beispiel wird
us-east1
verwendet. - Wählen Sie bei Zone die Option
us-east1-b
aus. - Wählen Sie unter Instanzvorlage die Instanzvorlage
lb-backend-template
aus. - Geben Sie
2
bei Maximale Anzahl von Instanzen ein. - Wählen Sie
Off:do not autoscale
unter Autoscaling-Modus aus. - Klicken Sie auf Erstellen.
Erstellen Sie eine weitere verwaltete Instanzgruppe wie diese. Nennen Sie den zweiten Namen second-example-ig
und verwenden Sie die Vorlage lb-backend-template
.
gcloud
Erstellen Sie eine Instanzvorlage.
gcloud compute instance-templates create `lb-backend-template` \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Erstellen Sie die erste verwaltete Instanzgruppe anhand der Vorlage.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Erstellen Sie die zweite verwaltete Instanzgruppe anhand der Vorlage.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
Firewallregel konfigurieren
In diesem Beispiel erstellen Sie die Firewallregel fw-allow-health-check
.
Dies ist eine Ingress-Regel, die Traffic von den Systemdiagnosen von Google Cloud (130.211.0.0/22
und 35.191.0.0/16
) zulässt. In diesem Beispiel wird das Ziel-Tag allow-health-check
zur Identifizierung der VMs verwendet.
Console
- Rufen Sie in der Google Cloud Console die Seite Firewall auf.
Zu den Firewall-Richtlinien - Klicken Sie auf Firewallregel erstellen, um die zweite Firewallregel zu erstellen:
- Geben Sie als Namen
fw-allow-health-check
ein. - Wählen Sie unter Netzwerk die Option
Default
aus. - Wählen Sie unter Ziele Angegebene Ziel-Tags aus.
- Tragen Sie im Feld Ziel-Tags
allow-health-check
ein. - Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
- Legen Sie unter Quell-IPv4-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest. - Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Klicken Sie das Kästchen TCP an und geben Sie
80
als Portnummer ein. - Klicken Sie auf Erstellen.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp
Externe IP-Adresse reservieren
Nachdem die Instanzen nun ausgeführt werden, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden den Load-Balancer erreichen können.
Console
- Gehen Sie in der Google Cloud Console auf die Seite "Externe IP-Adressen".
Zur Seite "Externe IP-Adressen" - Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
- Weisen Sie als Name
lb-ipv4-1
zu. - Legen Sie für die Netzwerkstufe Standard fest.
- Setzen Sie die IP-Version auf IPv4.
- Legen Sie für Typ Global fest.
- Klicken Sie auf Reservieren.
- Prüfen Sie, dass der Typ auf Global festgelegt ist.
- Klicken Sie auf Reservieren.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Load-Balancer-Back-Ends einrichten
Console
In der Google Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
- Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-basic-check \ --port 80
- Create the first backend service.
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
load-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen klassischen Application Load Balancer
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
- Erstellen Sie den zweiten Backend-Dienst.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Fügen Sie dem ersten Back-End-Dienst Ihre erste Instanzgruppe als Back-End hinzu.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Fügen Sie Ihre zweite Instanzgruppe als Back-End zum zweiten Back-End-Dienst hinzu.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
URL-Zuordnung erstellen
Console
In der Google Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
Erstellen Sie eine YAML-Datei vom Typ
/tmp/web-map-http.yaml
. Ersetzen SiePROJECT_ID
durch Ihre Projekt-ID.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?ABTest=A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?ABTest=A - description: Test routing for query ABTest with B host: example.com path: /?ABTest=B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b expectedOutputUrl: http://example.com/?ABTest=B
Validieren Sie die URL-Zuordnung.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Wenn die Tests erfolgreich sind und der Befehl eine Erfolgsmeldung ausgibt, speichern Sie die Änderungen in der URL-Zuordnung.
Aktualisieren Sie die URL-Zuordnung.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Zielproxy und Weiterleitungsregel erstellen
Console
In der Google Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
- Erstellen Sie einen HTTP-Zielproxy, um Anfragen an Ihre URL-Zuordnung zu leiten.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
-
Verwenden Sie für einen globalen externen Anwendungs-Load-Balancer den gcloud CLI-Befehl mit
load-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen klassischen Anwendungs-Load-Balancer
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Verwenden Sie für einen globalen externen Anwendungs-Load-Balancer den gcloud CLI-Befehl mit
Test
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Führen Sie folgenden Befehl aus, um diese Einrichtung zu testen:
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
Öffnen Sie http://IP_ADDRESS?ABTest=A
und http://IP_ADDRESS?ABTest=B
in einem Browser.
HTTP-Header-basiertes Routing einrichten
In diesem Beispiel wird das Hinzufügen und Entfernen von HTTP-Headern für intelligentes Routing veranschaulicht.
Hinweise
Sie können einen vorhandenen externen Anwendungs-Load-Balancer verwenden oder einen neuen erstellen.
Sie können dieses Feature mit jedem der unterstützten Backend-Typen verwenden. In diesem Beispiel wird davon ausgegangen, dass Sie VMs in einer Instanzgruppe verwenden.
Informationen zum Einrichten eines einfachen Load-Balancers finden Sie oben im Beispiel für die Einrichtung anhand von Abfrageparametern.
URL-Zuordnung aktualisieren
Console
In der Google Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
In diesem Beispiel wird gezeigt, wie HTTP-Anfrage-Header für A/B Testing verwendet werden, indem Werte in den HTTP-Headern der Anfrage abgeglichen werden.
Erstellen Sie eine YAML-Datei vom Typ
/tmp/web-map-http.yaml
. Ersetzen SiePROJECT_ID
durch Ihre Projekt-ID.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: example.com path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: example.com path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Validieren Sie die URL-Zuordnung.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Wenn die Tests erfolgreich sind und der Befehl eine Erfolgsmeldung ausgibt, speichern Sie die Änderungen in der URL-Zuordnung.
Aktualisieren Sie die URL-Zuordnung.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Test
Testen Sie diese Einrichtung mit der IPv4-Adresse des zugehörigen Load-Balancers mit folgendem Befehl:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"