Vom Nutzer verwalteten Callout-Backend-Dienst konfigurieren

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

  1. Sie benötigen entweder die Rolle „Projektinhaber“ oder „Projektbearbeiter“ oder die folgenden IAM-Rollen für Compute Engine:

  2. Aktivieren Sie die Compute Engine API und die Network Services API.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Zugriff auf APIs aktivieren auf.

      Zum Abschnitt „Zugriff auf APIs aktivieren“

    2. Folgen Sie der Anleitung.

    gcloud

    Führen Sie den Befehl gcloud services enable aus:

    gcloud services enable compute.googleapis.com networkservices.googleapis.com
    
  3. 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.

  4. Client-VM zum Testen erstellen

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

    1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

      Zur Seite „Instanz erstellen“

      Geben Sie die folgenden Beispielwerte an:

      • Name: l7-ilb-backend2-vm
      • Tags: allow-ssh und load-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'
        
    2. Nicht verwaltete Instanzgruppe erstellen

      Geben Sie die folgenden Beispielwerte an:

      • Name: l7-ilb-backend-service2-ig
      • Zone: us-west1-a
    3. Fügen Sie die neue VM der Instanzgruppe hinzu.

      Geben Sie unter VM-Instanzen den Wert l7-ilb-backend2-vm ein.

    4. Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.

      Load Balancing aufrufen

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

    gcloud

    1. Erstellen Sie eine VM-Instanz. Verwenden Sie den Befehl gcloud compute instances create mit 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'
      
    2. Erstellen Sie eine nicht verwaltete Instanzgruppe. Verwenden Sie den Befehl gcloud compute instance-groups unmanaged create mit den folgenden Beispielwerten:

      gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \
        --zone us-west1-a
      
    3. Fügen Sie die neue VM der Instanzgruppe hinzu. Verwenden Sie den Befehl gcloud compute instance-groups unmanaged add-instances mit den folgenden Beispielwerten:

      gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \
        --zone=us-west1-a \
        --instances=l7-ilb-backend2-vm
      
    4. Erstellen Sie einen Back-End-Dienst. Verwenden Sie den Befehl gcloud compute backend-services create mit 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
      
    5. Fügen Sie dem Backend-Dienst ein Backend hinzu. Verwenden Sie den Befehl gcloud compute backend-services add-backend mit 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
      
    6. Fügen Sie der URL-Zuordnung des Backend-Dienstes einen Host-Matcher hinzu. Verwenden Sie den Befehl gcloud compute url-maps add-path-matcher mit 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:

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

    1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

      Zur Seite „Instanz erstellen“

    2. Geben Sie die folgenden Beispielwerte an:

      • Name: callouts-vm
      • Zone: us-west1-a
      • Netzwerk: lb-network
      • Subnetzwerk: backend-subnet
      • Tags: allow-ssh und load-balanced-backend
      • Container-Image: us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main

    gcloud

    Erstellen Sie eine Instanz mit einem Container-Image. Verwenden Sie den Befehl gcloud compute instances create-with-container mit 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
    
  2. Fügen Sie die VM einer nicht verwalteten Instanzgruppe hinzu.

    Console

    Nicht verwaltete Instanzgruppe erstellen

    1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

      Zu den Instanzgruppen

      Geben Sie die folgenden Beispielwerte an:

      • Name: callouts-ig
      • Zone: us-west1-a
    2. Legen Sie einen Port für die Instanzgruppe fest.

      Geben Sie für Portzuordnung die folgenden Portnamen und Werte an: http:80 und grpc:443.

    3. Fügen Sie die neue VM der Instanzgruppe hinzu.

      Geben Sie unter VM-Instanzen den Wert callouts-vm ein.

    gcloud

    1. Erstellen Sie eine nicht verwaltete Instanzgruppe. Verwenden Sie den Befehl gcloud compute instance-groups unmanaged create mit den folgenden Beispielwerten:

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. Legen Sie einen Port für die Instanzgruppe fest. Verwenden Sie den Befehl gcloud compute instance-groups unmanaged set-named-ports mit den folgenden Beispielwerten:

      gcloud compute instance-groups unmanaged set-named-ports callouts-ig \
        --named-ports=http:80,grpc:443 \
        --zone=us-west1-a
      
    3. Fügen Sie der nicht verwalteten Instanzgruppe die neue VM-Instanz hinzu. Verwenden Sie den Befehl gcloud compute instance-groups unmanaged add-instances mit den folgenden Beispielwerten:

      gcloud compute instance-groups unmanaged add-instances callouts-ig \
        --zone=us-west1-a \
        --instances=callouts-vm
      
  3. 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.

    1. Rufen Sie in der Google Cloud Console die Seite Backends für Cloud Load Balancing auf.

      Zu Back-Ends

    2. 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
    3. Fügen Sie die Instanzgruppe mit dem Erweiterungsserver als Backend zum Backend-Dienst hinzu. In der Instanzgruppe wird der Dienst ext_proc ausgeführt.

      Geben Sie die folgenden Beispielwerte an:

      • Instanzgruppe: callouts-ig
      • Ausgleichsmodus: Utilization

    gcloud

    1. Erstellen Sie eine einfache HTTP-Systemdiagnose für die Instanz. Verwenden Sie den Befehl gcloud compute health-checks create http mit den folgenden Beispielwerten:

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. 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
      
    3. Fügen Sie die Instanzgruppe mit dem Erweiterungsserver als Backend zum Backend-Dienst hinzu. In der Instanzgruppe wird der Dienst ext_proc ausgeführt. Verwenden Sie den Befehl gcloud compute backend-services add-backend mit 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