In diesem Dokument wird beschrieben, wie Sie Infrastrukturressourcen des klassischen Application Load Balancers in die globale externe Application Load Balancer-Infrastruktur migrieren.
Hinweise
Achten Sie darauf, dass Ihre Konfiguration die folgenden Voraussetzungen erfüllt.
Standardprojekt festlegen
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID
durch das Projekt, das Sie für diesen Leitfaden verwenden.
Berechtigungen
Sie benötigen die Berechtigung zum Erstellen von Compute Engine-VM-Instanzen, Firewallregeln, reservierten IP-Adressen und Cloud Storage-Buckets in einem Google Cloud-Projekt, um die Schritte in diesem Dokument ausführen zu können. Sie müssen entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:
Aufgabe | Erforderliche Rolle |
---|---|
Instanzen erstellen | Rolle „Compute-Instanzadministrator“ (Beta) (roles/compute.instanceAdmin )
|
Firewallregeln setzen und löschen | Rolle "Compute-Sicherheitsadministrator" (roles/compute.securityAdmin )
|
Load-Balancer-Komponenten erstellen | Rolle „Compute-Netzwerkadministrator“ (roles/compute.networkAdmin )
|
Projekt erstellen (optional) | Rolle „Projektersteller“ (roles/resourcemanager.projectCreator )
|
Cloud Storage-Buckets erstellen | Rolle „Storage-Objekt-Administrator“ (roles/storage.objectAdmin )
|
Weitere Informationen finden Sie in folgenden Leitfäden:
- Zugriffssteuerung für Cloud Load Balancing mit IAM verwalten
- IAM-Bedingungen für Weiterleitungsregeln
Ressourcen für klassische Application Load Balancer erstellen
In diesem Dokument erstellen Sie die folgenden Ressourcen für klassische Application Load Balancer und migrieren sie dann zur globalen externen Application Load Balancer-Infrastruktur.
- Eine verwaltete Instanzgruppe mit VMs.
- Einen Cloud Storage-Bucket.
- Einen klassischen HTTP-Application Load Balancer mit der verwalteten Instanzgruppe und dem Cloud Storage-Bucket als Backends.
Erstellen Sie eine verwaltete Instanzgruppe.
In diesem Abschnitt wird beschrieben, wie Sie eine verwaltete Instanzgruppe mit Linux-VMs erstellen, auf denen Apache ausgeführt wird. Eine verwaltete Instanzgruppe erstellt jede ihrer verwalteten Instanzen anhand der von Ihnen angegebenen Instanzvorlagen.
Instanzvorlage erstellen
Console
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.Wählen Sie bei Region die Option
REGION
aus.Achten Sie im Abschnitt Bootlaufwerk darauf, dass das Image des Bootlaufwerks auf ein Debian-Image wie Debian GNU/Linux 12 (Bookworm) festgelegt ist. 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 geben Sie im Feld Netzwerk-Tags den Wert
allow-health-check
ein.Klicken Sie auf Verwaltung und geben Sie das folgende Skript in das Feld Startskript 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.
gcloud
Führen Sie den Befehl gcloud compute instance-templates create
aus, um die Vorlage zu erstellen.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --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'
Verwaltete Instanzgruppe erstellen
Console
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Klicken Sie auf Instanzgruppe erstellen.
Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.
Geben Sie für Name
lb-backend-example
ein.Wählen Sie unter Instanzvorlage die Instanzvorlage
lb-backend-template
aus.Wählen Sie unter Ort die Option Einzelne Zone aus.
Wählen Sie bei Region die Option
REGION
aus.Wählen Sie bei Zone die Option
ZONE
aus.Wählen Sie für den Autoscaling-Modus die Option Ein: der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.
Legen Sie für Mindestanzahl von Instanzen und Maximale Anzahl von Instanzen den Wert
2
fest.Klicken Sie im Bereich Portzuordnung auf Port hinzufügen.
Geben Sie als Portname
http
ein. Geben Sie als Portnummer80
ein.Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl gcloud compute instance-groups managed create
aus, um die verwaltete Instanzgruppe anhand der Vorlage zu erstellen.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Führen Sie den folgenden Befehl aus, um der Instanzgruppe einen benannten Port hinzuzufügen:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Firewallregel konfigurieren
In diesem Abschnitt erstellen Sie die Firewallregel fw-allow-health-check
und verwenden das Ziel-Tag allow-health-check
, um die VMs zu identifizieren. 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.
Console
Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen.
Geben Sie für Name
fw-allow-health-check
ein.Wählen Sie für Netzwerk die Option Standard aus.
Wählen Sie unter Ziele die Option Angegebene Ziel-Tags aus.
Geben Sie im Feld Zieltags
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 im Bereich Protokolle und Ports Angegebene Protokolle und Ports aus.
Klicken Sie das Kästchen TCP an und geben Sie
80
als Portnummer ein.Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl gcloud compute firewall-rules create
aus, um die Firewallregel zu erstellen.
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:80
Cloud Storage-Bucket erstellen
In diesem Abschnitt erstellen Sie einen Cloud Storage-Bucket, auf den der Load Balancer zugreifen kann. Für Produktionsbereitstellungen empfehlen wir die Auswahl eines multiregionalen Buckets, der Objekte automatisch in mehreren Google Cloud-Regionen repliziert. Dies kann die Verfügbarkeit Ihrer Inhalte verbessern und die Fehlertoleranz in Ihrer gesamten Anwendung verbessern.
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Storage-Buckets.
Klicken Sie auf Erstellen.
Geben Sie im Feld Bucket benennen
storage-backend-bucket
ein und klicken Sie auf Weiter.Klicken Sie auf Speicherort für Daten auswählen.
Legen Sie Standorttyp auf Region fest und geben Sie
REGION
an.Klicken Sie auf Erstellen.
Optional: Wenn das Dialogfeld „Der öffentliche Zugriff wird verhindert“ angezeigt wird, entfernen Sie das Häkchen bei Verhinderung des öffentlichen Zugriffs für diesen Bucket erzwingen und klicken Sie auf Bestätigen.
gcloud
Führen Sie den Befehl gcloud storage buckets create
aus, um den Bucket zu erstellen:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Inhalte in Cloud Storage-Buckets übertragen
Wenn Sie den Bucket nach dem Erstellen des Load Balancers testen möchten, kopieren Sie die folgende Bilddatei aus einem öffentlichen Cloud Storage-Bucket in Ihren eigenen Cloud Storage-Bucket.
gcloud
Klicken Sie auf
Google Cloud Shell aktivieren.Führen Sie die folgenden Befehle in Cloud Shell aus:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
Klicken Sie in der Google Cloud Console auf der Detailseite des Buckets auf Aktualisieren, um zu prüfen, ob die Datei erfolgreich kopiert wurde.
Ihren Cloud Storage-Bucket öffentlich lesbar machen
Wenn Sie einen Cloud Storage-Bucket öffentlich lesbar machen, kann jeder im Internet die zugehörigen Objekte auflisten und ansehen sowie die zugehörigen Metadaten (mit Ausnahme von ACLs) aufrufen. Nehmen Sie keine vertraulichen Informationen in Ihre öffentlichen Buckets auf.
Speichern Sie keine öffentlichen Objekte und sensiblen Daten im selben Bucket, um die Wahrscheinlichkeit einer versehentlichen Veröffentlichung vertraulicher Informationen zu verringern.
Console
So gewähren Sie allen Nutzern Zugriff auf Objekte in Ihren Buckets:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Storage-Buckets.
Klicken Sie auf den Namen der
storage-backend-bucket
und dann auf den Tab Berechtigungen.Klicken Sie auf Zugriff erlauben.
Geben Sie im Feld Neue Hauptkonten den Wert
allUsers
ein.Wählen Sie im Feld Rolle auswählen die Option Cloud Storage > Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
Klicken Sie auf Öffentlichen Zugriff erlauben.
gcloud
Führen Sie den Befehl gcloud storage buckets add-iam-policy-binding
aus, um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
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
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Klicken Sie auf Externe statische IP-Adresse reservieren, um eine IPv4-Adresse zu reservieren.
Geben Sie für Name
lb-ipv4-1
ein.Setzen Sie die Netzwerkdienststufe auf Premium.
Setzen Sie die IP-Version auf IPv4.
Setzen Sie Typ auf Global.
Klicken Sie auf Reservieren.
gcloud
Führen Sie den folgenden Befehl aus, um eine externe IP-Adresse zu reservieren:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Führen Sie den folgenden Befehl aus, um die reservierte IPv4-Adresse zu notieren:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Klassischen Application Load Balancer einrichten
In diesem Abschnitt verwenden Sie HTTP (Frontend) zwischen dem Client und dem Load Balancer.
Console
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
- Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
- Wählen Sie unter Generation des Load Balancers die Option Klassischer Application Load Balancer aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Geben Sie im Feld Name des Load Balancers den Wert
web-map-http
ein. - Klicken Sie auf Frontend-Konfiguration, konfigurieren Sie die folgenden Felder und klicken Sie dann auf Fertig.
- Protokoll: HTTP.
- IP-Version: IPv4.
- IP-Adresse:
lb-ipv4-1
- Port:
443
- Klicken Sie auf Backend-Konfiguration.
- Klicken Sie unter Back-End-Dienste und Back-End-Buckets auf Back-End-Dienst erstellen und führen Sie dann die folgenden Schritte aus:
- Konfigurieren Sie die folgenden Felder:
- Name:
web-backend-service
- Protokoll: HTTP
- Benannter Port: http
- Name:
- Konfigurieren Sie im Bereich Back-Ends > Neues Back-End die folgenden Felder und klicken Sie dann auf Fertig.
- Instanzgruppe: lb-backend-beispiel
- Portnummern:
80
- Klicken Sie unter Systemdiagnose auf Systemdiagnose erstellen, geben Sie die folgenden Felder ein und klicken Sie dann auf Speichern.
- Name:
http-basic-check
- Protokoll: HTTP
- Name:
- Wählen Sie im Bereich Logging die Option Logging aktivieren aus.
- Klicken Sie auf Erstellen.
- Konfigurieren Sie die folgenden Felder:
- Klicken Sie auf OK.
- Klicken Sie unter Backend-Dienste und Backend-Buckets auf Backend-Bucket erstellen, konfigurieren Sie die folgenden Felder und klicken Sie dann auf Erstellen.
- Name des Back-End-Buckets:
cats
- Cloud Storage-Bucket:
storage-backend-bucket
- Name des Back-End-Buckets:
- Klicken Sie auf OK.
- Klicken Sie auf Host- und Pfadregeln.
- Geben Sie für
cats
den Wert*
im Feld Host 2 und/never-fetch/*
im Feld Pfad 2 ein. - Klicken Sie auf Prüfen und abschließen.
- Prüfen Sie die Konfigurationseinstellungen des Load-Balancers.
- Klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-basic-check \ --port 80
Erstellen Sie einen Backend-Dienst.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --global
Fügen Sie Ihre Instanzgruppe als Backend zum Backend-Dienst hinzu:
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global
Fügen Sie einen Back-End-Bucket hinzu.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Erstellen Sie eine URL-Zuordnung, um die eingehenden Anfragen an den Backend-Dienst und den Backend-Bucket weiterzuleiten.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Erstellen Sie einen Ziel-HTTP-Proxy, um Anfragen an URL-Zuordnungen weiterzuleiten.
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.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
An Ihre Instanzen gesendeten Traffic testen
Da der Load-Balancing-Dienst nun ausgeführt wird, können Sie Traffic an die Weiterleitungsregel senden. Dieser wird dann an verschiedene Instanzen verteilt.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf
web-map-http
.Notieren Sie sich im Abschnitt Frontend die IP:Port des Load Balancers.
Geben Sie zum Testen der Backend-Instanz
http://IP_ADDRESS
in die Adressleiste des Webbrowsers ein.Ihr Browser sollte eine Seite mit Inhalt rendern, der den Namen der Instanz, die die Seite bereitstellt, und deren Zone enthält (z. B.
Page served from: lb-backend-example-xxxx
).Wenn Sie den Backend-Bucket testen möchten, geben Sie
http://IP_ADDRESS/never-fetch/three-cats.jpg
in die Adressleiste des Webbrowsers ein.Ihr Browser rendert das Bild.
Ressourcen des klassischen Application Load Balancers migrieren
In diesem Abschnitt migrieren Sie den Backend-Dienst, den Backend-Bucket und die Weiterleitungsregel zur globalen externen Application Load Balancer-Infrastruktur.
Back-End-Dienst migrieren
Bereiten Sie den Backend-Dienst für die Migration vor.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten).
Senden Sie einen Teil des Traffics, z. B. 10%, an den Back-End-Dienst.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten).
Nachdem die Ressource bereit ist, werden 10% der Anfragen an die globale externe Application Load Balancer-Infrastruktur und 90% der Anfragen an die klassische Application Load Balancer-Infrastruktur gesendet.
Auf den Back-End-Dienst zugreifen
Geben Sie
http://IP_ADDRESS
in die Adressleiste des Webbrowsers ein. Wenn die MeldungPage served from: lb-backend-example-xxxx
angezeigt wird, führen Sie den folgenden Befehl aus, um den Prozentsatz zu erhöhen.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Wiederholen Sie den Vorgang, bis Sie 100 % erreicht haben.
Optional: Prüfen Sie die Protokolle des Back-End-Dienstes.
Schließen Sie den Test ab und senden Sie den gesamten Traffic an den Backend-Dienst.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
Optional: Prüfen Sie die Protokolle des Back-End-Dienstes.
Ändern Sie das Schema des Back-End-Dienstes in
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten), bis der Backend-Dienst vollständig in die globale externe Application Load Balancer-Infrastruktur migriert wurde.
Optional: Prüfen Sie die Protokolle des Back-End-Dienstes. Das Load Balancing-Schema ist
EXTERNAL_MANAGED
.
Backend-Bucket migrieren
Bereiten Sie den Backend-Bucket für die Migration vor.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten).
Senden Sie einen Teil des Traffics, z. B. 10%, an den Back-End-Bucket.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten).
Nachdem die Ressource bereit ist, werden 10% der Anfragen an die globale externe Application Load Balancer-Infrastruktur und 90% der Anfragen an die klassische Application Load Balancer-Infrastruktur gesendet.
Auf den Backend-Bucket zugreifen
Geben Sie
http://IP_ADDRESS/never-fetch/three-cats.jpg
in die Adressleiste des Webbrowsers ein. Wenn Sie das Bild mit Katzen sehen, führen Sie den folgenden Befehl aus, um den Prozentsatz zu erhöhen. Wiederholen Sie den Vorgang, bis Sie 100 % erreicht haben.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
Optional: Prüfen Sie die Protokolle des Backend-Buckets.
Schließen Sie den Test ab und senden Sie den gesamten Traffic an den Backend-Bucket.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
Optional: Prüfen Sie die Protokolle des Backend-Buckets.
Weiterleitungsregel migrieren
Ändern Sie das Schema der Weiterleitungsregel in
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Warten Sie einige Zeit (ungefähr sechs Minuten), bis die Weiterleitungsregel vollständig in die globale externe Application Load Balancer-Infrastruktur migriert wurde.
Optional: Prüfen Sie die Protokolle der Weiterleitungsregel. Das Load Balancing-Schema ist
EXTERNAL_MANAGED
.