Mit Service Extensions können unterstützte Application Load Balancer Callouts vom Datenverarbeitungspfad an vom Nutzer verwaltete Callout-Backend-Dienste senden. So können Application Load Balancer benutzerdefinierte Logik im Verarbeitungspfad verwenden. Auf dieser Seite wird beschrieben, wie Sie einen vom Nutzer verwalteten Callout-Backend-Dienst konfigurieren.
Eine Übersicht über Application Load Balancer-Erweiterungen finden Sie unter Übersicht über Cloud Load Balancing-Erweiterungen.
Hinweis
Sie benötigen entweder die Rolle „Projektinhaber“ oder „Projektbearbeiter“ oder die folgenden IAM-Rollen für Compute Engine:
- So erstellen Sie Instanzen:
compute.instanceAdmin.v1 - So erstellen Sie Cloud Load Balancing-Komponenten:
compute.networkAdmin
- So erstellen Sie Instanzen:
Aktivieren Sie die Compute Engine API und die Network Services API.
Console
Rufen Sie in der Google Cloud Console die Seite Zugriff auf APIs aktivieren auf.
Folgen Sie der Anleitung.
gcloud
Führen Sie den Befehl
gcloud services enableaus:gcloud services enable compute.googleapis.com networkservices.googleapis.com
Erstellen und konfigurieren Sie einen Application Load Balancer, der Erweiterungen unterstützt. In diesem Beispiel richten Sie einen regionalen internen Application Load Balancer mit VM-Instanzgruppen-Back-Ends ein. Verwenden Sie die angegebenen Beispielwerte.
Nur für Routenerweiterungen. Richten Sie einen zusätzlichen Backend-Dienst ein und aktualisieren Sie die URL-Zuordnung, um einen Host-Matcher hinzuzufügen, der Traffic an diesen Backend-Dienst weiterleitet, wenn der HTTP-Host der angegebenen Bedingung entspricht.
Console
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Geben Sie die folgenden Beispielwerte an:
- Name:
l7-ilb-backend2-vm - Tags:
allow-sshundload-balanced-backend - Zone:
us-west1-a - Netzwerk:
lb-network - Subnetzwerk:
backend-subnet - Bild:
debian-11 - Familie:
debian-cloud Erweiterte Optionen > Verwaltung > Automatisierung:
'#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'
- Name:
Nicht verwaltete Instanzgruppe erstellen
Geben Sie die folgenden Beispielwerte an:
- Name:
l7-ilb-backend-service2-ig - Zone:
us-west1-a
- Name:
Fügen Sie die neue VM der Instanzgruppe hinzu.
Geben Sie unter VM-Instanzen den Wert
l7-ilb-backend2-vmein.Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.
Load-Balancer aktualisieren, indem Sie einen Backend-Dienst erstellen und ein Backend hinzufügen.
Geben Sie für den Back-End-Dienst die folgenden Beispielwerte an:
- Name:
l7-ilb-backend-service2 - Protokoll:
HTTP - Systemdiagnose > Name:
l7-ilb-basic-check - Systemdiagnose > Region:
us-west1
Geben Sie für das Backend die folgenden Beispielwerte an:
- Instanzgruppe:
l7-ilb-backend-service2-ig - Ausgleichsmodus:
Utilization
- Name:
Fügen Sie der URL-Zuordnung des Backend-Dienstes einen Host-Matcher hinzu.
Geben Sie die folgenden Beispielwerte an:
- Name:
l7-ilb-map - Host:
service-extensions.com - Pfad:
callouts - Protokoll:
HTTP - Backend:
l7-ilb-backend-service2
- Name:
gcloud
Erstellen Sie eine VM-Instanz. Verwenden Sie den Befehl
gcloud compute instances createmit den folgenden Beispielwerten:gcloud compute instances create l7-ilb-backend2-vm \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'Erstellen Sie eine nicht verwaltete Instanzgruppe. Verwenden Sie den Befehl
gcloud compute instance-groups unmanaged createmit den folgenden Beispielwerten:gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
Fügen Sie die neue VM der Instanzgruppe hinzu. Verwenden Sie den Befehl
gcloud compute instance-groups unmanaged add-instancesmit den folgenden Beispielwerten:gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \ --zone=us-west1-a \ --instances=l7-ilb-backend2-vm
Erstellen Sie einen Back-End-Dienst. Verwenden Sie den Befehl
gcloud compute backend-services createmit den folgenden Beispielwerten:gcloud compute backend-services create l7-ilb-backend-service2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Fügen Sie dem Backend-Dienst ein Backend hinzu. Verwenden Sie den Befehl
gcloud compute backend-services add-backendmit den folgenden Beispielwerten:gcloud compute backend-services add-backend l7-ilb-backend-service2 \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-service2-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Fügen Sie der URL-Zuordnung des Backend-Dienstes einen Host-Matcher hinzu. Verwenden Sie den Befehl
gcloud compute url-maps add-path-matchermit den folgenden Beispielwerten:gcloud compute url-maps add-path-matcher l7-ilb-map \ --path-matcher-name=callouts \ --default-service=l7-ilb-backend-service2 \ --new-hosts=service-extensions.com \ --region=us-west1
Backend-Dienst für Callout einrichten
Für dieses Beispiel ist ein einfacher Python-basierter Erweiterungsserver verfügbar, der die ext_proc-gRPC-API von Envoy implementiert. Ein Docker-Container mit diesem Server ist unter us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main im GitHub-Repository für Service Extensions von Google Cloudverfügbar. Dieses Repository enthält mehrere andere Python- und Go-Beispiele für ext_proc-Server, mit denen Aufgaben wie Header- und Body-Mutationen ausgeführt werden können.
So erstellen und richten Sie einen Backend-Dienst für Zusatzinformationen ein:
Erstellen Sie eine virtuelle Maschine (VM)-Instanz für den Callout-Backend-Dienst, auf dem der Beispielserver für die Python-Erweiterung ausgeführt wird.
Console
Instanz mit einem Container-Image erstellen
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Geben Sie die folgenden Beispielwerte an:
- Name:
callouts-vm - Zone:
us-west1-a - Netzwerk:
lb-network - Subnetzwerk:
backend-subnet - Tags:
allow-sshundload-balanced-backend - Container-Image:
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- Name:
gcloud
Erstellen Sie eine Instanz mit einem Container-Image. Verwenden Sie den Befehl
gcloud compute instances create-with-containermit den folgenden Beispielwerten:gcloud compute instances create-with-container callouts-vm \ --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh,load-balanced-backend
Fügen Sie die VM einer nicht verwalteten Instanzgruppe hinzu.
Console
Nicht verwaltete Instanzgruppe erstellen
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
Geben Sie die folgenden Beispielwerte an:
- Name:
callouts-ig - Zone:
us-west1-a
- Name:
Legen Sie einen Port für die Instanzgruppe fest.
Geben Sie für Portzuordnung die folgenden Portnamen und Werte an:
http:80undgrpc:443.Fügen Sie die neue VM der Instanzgruppe hinzu.
Geben Sie unter VM-Instanzen den Wert
callouts-vmein.
gcloud
Erstellen Sie eine nicht verwaltete Instanzgruppe. Verwenden Sie den Befehl
gcloud compute instance-groups unmanaged createmit den folgenden Beispielwerten:gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
Legen Sie einen Port für die Instanzgruppe fest. Verwenden Sie den Befehl
gcloud compute instance-groups unmanaged set-named-portsmit den folgenden Beispielwerten:gcloud compute instance-groups unmanaged set-named-ports callouts-ig \ --named-ports=http:80,grpc:443 \ --zone=us-west1-a
Fügen Sie der nicht verwalteten Instanzgruppe die neue VM-Instanz hinzu. Verwenden Sie den Befehl
gcloud compute instance-groups unmanaged add-instancesmit den folgenden Beispielwerten:gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
Erstellen Sie einen Backend-Dienst für Callouts und fügen Sie ein Backend hinzu. Wie andere Backend-Server benötigen Callout-Server möglicherweise Firewallregeln, um Proxy-Traffic zuzulassen.
Console
Erstellen Sie einen Callout-Backend-Dienst, der das HTTP/2-Protokoll verwendet und eine HTTP-Systemdiagnose hat.
Rufen Sie in der Google Cloud Console die Seite Backends für Cloud Load Balancing auf.
Fügen Sie einen regionalen Backend-Dienst mit den folgenden Beispielwerten hinzu:
- Name:
l7-ilb-callout-service - Region:
us-west1 - Load Balancer-Typ:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - Protokoll:
HTTP2 - Portname:
grpc - Systemdiagnose > Name:
callouts-hc - Systemdiagnose > Portnummer:
80 - Cloud Armor-Sicherheitsrichtlinie für Back-Ends:
None
- Name:
Fügen Sie die Instanzgruppe mit dem Erweiterungsserver als Backend zum Backend-Dienst hinzu. In der Instanzgruppe wird der Dienst
ext_procausgeführt.Geben Sie die folgenden Beispielwerte an:
- Instanzgruppe:
callouts-ig - Ausgleichsmodus:
Utilization
- Instanzgruppe:
gcloud
Erstellen Sie eine einfache HTTP-Systemdiagnose für die Instanz. Verwenden Sie den Befehl
gcloud compute health-checks create httpmit den folgenden Beispielwerten:gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
Erstellen Sie einen Callout-Backend-Dienst, der das HTTP/2-Protokoll verwendet. Verwenden Sie den Befehl
gcloud compute backend-services create.gcloud compute backend-services create l7-ilb-callout-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP2 \ --port-name=grpc \ --health-checks=callouts-hc \ --health-checks-region=us-west1 \ --region=us-west1
Fügen Sie die Instanzgruppe mit dem Erweiterungsserver als Backend zum Backend-Dienst hinzu. In der Instanzgruppe wird der Dienst
ext_procausgeführt. Verwenden Sie den Befehlgcloud compute backend-services add-backendmit den folgenden Beispielwerten:gcloud compute backend-services add-backend l7-ilb-callout-service \ --balancing-mode=UTILIZATION \ --instance-group=callouts-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Nachdem Sie einen Backend-Dienst eingerichtet haben, können Sie Route-, Autorisierungs- und Traffic-Erweiterungen konfigurieren.
Nächste Schritte
- Routenerweiterung konfigurieren
- Autorisierungserweiterung konfigurieren
- Traffic-Erweiterung konfigurieren