Externes Backend mit einer Internet-NEG einrichten

Diese Anleitung vermittelt anhand eines Beispiels die Grundlagen für die Verwendung eines externen Backends (manchmal auch als benutzerdefinierter Ursprung bezeichnet) in einem externen Application Load Balancer. Ein externes Backend ist ein Endpunkt, der sich außerhalb von Google Cloudbefindet. Wenn Sie ein externes Backend mit einem externen Application Load Balancer verwenden, können Sie die Leistung mithilfe von Cloud CDN-Caching verbessern.

In dieser Anleitung wird beschrieben, wie Sie einen globalen externen Application Load Balancer mit einem Cloud CDN-fähigen Backend-Dienst konfigurieren, der an einen externen Backend-Server unter backend.example.com weitergeleitet wird.

Im Beispiel akzeptiert der Load Balancer HTTPS-Anfragen von Clients und leitet sie als HTTP/2 an das externe Backend weiter. In diesem Beispiel wird davon ausgegangen, dass das externe Backend HTTPS unterstützt.

Andere Optionen wären die Konfiguration eines Load Balancers zum Akzeptieren von HTTP- oder HTTP/2-Anfragen und die Verwendung von HTTPS beim Weiterleiten von Anfragen an das externe Backend.

In dieser Anleitung wird davon ausgegangen, dass Sie bereits einen Load Balancer eingerichtet haben und ein neues externes Backend hinzufügen. Weitere Informationen finden Sie unter Einen klassischen Application Load Balancer mit einem Backend einer verwalteten Instanzgruppe (Managed Instance Group, MIG) einrichten.

Abbildung 1 zeigt eine Beispielarchitektur.

Abbildung 1: Typischer Anwendungsfall für externe Backends
Abbildung 1. Typischer Anwendungsfall für externe Backends

Im Diagramm hat www.example.com ein Load-Balancer-Frontend mit der IP-Adresse 120.1.1.1. Bei einem Cache-Fehler werden Nutzeranfragen für /cart/id/1223515 über HTTP/2 vom externen Backend abgerufen. Der weitere eingehende Traffic wird anhand des URL-Mappings entweder an den Google Cloud -Backend-Dienst mit Compute Engine-VMs oder an den Backend-Bucket weitergeleitet.

Hinweis

Bevor Sie diese Anleitung durcharbeiten, sollten Sie sich mit Folgendem vertraut machen:

Berechtigungen

Damit Sie diesem Leitfaden folgen können, müssen Sie eine Internet-NEG erstellen und einen externen Application Load Balancer in einem Projekt erstellen oder ändern. Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder alle folgenden IAM-Rollen in Compute Engine haben:

Aufgabe Erforderliche Rolle
Load-Balancer-Komponenten erstellen und ändern Netzwerkadministrator
NEGs erstellen und ändern Compute Instance Admin

Load Balancer mit einem externen Backend konfigurieren

In dieser Anleitung erfahren Sie, wie Sie eine Internet-NEG konfigurieren und testen.

Einrichtung: Übersicht

Das Einrichten einer Internet-NEG umfasst Folgendes:

  • Internet-Endpunkt in einer Internet-NEG definieren
  • Internet-NEG als Backend zu einem Backend-Dienst hinzufügen
  • Definieren, welcher Nutzer-Traffic diesem Backend-Dienst durch Konfiguration des URL-Mappings Ihres externen Application Load Balancers zugeordnet werden soll
  • Erforderliche IP-Bereiche auf die Zulassungsliste setzen

In diesem Beispiel werden die folgenden Ressourcen erstellt:

  • Eine Weiterleitungsregel mit der IP-Adresse 120.1.1.1 leitet eingehende Anfragen an einen Ziel-Proxy weiter.
    • Die networkTier der Weiterleitungsregel muss PREMIUM sein.
  • Der Ziel-Proxy prüft bei jeder Anfrage, ob diese mit dem URL-Mapping übereinstimmt, um den passenden Backend-Dienst für die Anfrage auswählen zu können.
    • Für externe Backends muss der Ziel-Proxy TargetHttpProxy oder TargetHttpsProxy lauten. In diesem Beispiel wird TargetHttpsProxy verwendet.
  • Ist Cloud CDN für den Backend-Dienst aktiviert (optional), können Antworten aus den Cloud CDN-Caches zwischengespeichert und bereitgestellt werden.
  • Dieses Beispiel enthält den benutzerdefinierten Header, der erforderlich ist, wenn das externe Backend einen bestimmten Wert für den Host-Header der HTTP-Anfrage erwartet.

Einrichtung wird im Folgenden beschrieben.

Abbildung 2. Cloud CDN mit lokalem Backend
Abbildung 2. Cloud CDN mit lokalem Backend

NEG und Internetendpunkt erstellen

Console

  1. Rufen Sie in der Console von Google Cloud die Seite Netzwerk-Endpunktgruppen auf.

    Zu „Netzwerk-Endpunktgruppen“

  2. Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.
  3. Geben Sie den Namen der Netzwerk-Endpunktgruppe ein: example-fqdn-neg.
  4. Wählen Sie als Typ der Netzwerk-Endpunktgruppe die Option Netzwerk-Endpunktgruppe (Internet) aus.
  5. Geben Sie als Standardport 443 ein.
  6. Wählen Sie unter Neuer Netzwerkendpunkt die Option Voll qualifizierter Domainname und Port aus.
  7. Geben Sie für den FQDN backend.example.com ein.
  8. Wählen Sie als Porttyp die Option Standard aus und verifizieren Sie, dass die Portnummer 443 ist.
  9. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine Internet-NEG und legen Sie für --network-endpoint-type den Wert internet-fqdn-port fest (der Hostname und der Port, an dem Ihr externes Backend erreicht werden kann):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Fügen Sie den Endpunkt zur NEG hinzu. Wenn kein Port angegeben ist, wird abhängig von dem im Backend-Dienst konfigurierten Protokoll standardmäßig Port 80 (HTTP) oder 443 (HTTPS, HTTP/2) ausgewählt. Achten Sie darauf, das Flag --global anzugeben:

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. So listen Sie die erstellte Internet-NEG auf:

    gcloud compute network-endpoint-groups list --global
    

    Ausgabe:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. So listen Sie den Endpunkt innerhalb dieser NEG auf:

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    Ausgabe:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

Externes Backend zu einem Load Balancer hinzufügen

Im folgenden Beispiel wird ein vorhandener Load-Balancer aktualisiert.

Im vorhandenen Load Balancer ist der Standarddienst ein Google Cloud-Dienst. In diesem Beispiel wird das vorhandene URL-Mapping geändert. Hierzu wird ein Pfad-Matcher hinzugefügt, der alle Anfragen für cart/id/1223515 an den images-Backend-Dienst sendet, der der Internet-NEG zugeordnet ist.

Console

Backend-Dienst erstellen und Internet-NEG hinzufügen

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

    Zu „Load Balancing“

  2. Wählen Sie Ihren klassischen Application Load Balancer aus, klicken Sie auf das Dreipunkt-Menü  und wählen Sie dann Bearbeiten aus, um den Backend-Dienst einem vorhandenen Load Balancer hinzuzufügen.
  3. Klicken Sie auf Backend-Konfiguration.
  4. Wählen Sie im Menü Backend-Dienste und Backend-Buckets die Option Backend-Dienst erstellen aus.
  5. Legen Sie images als Name für den Backend-Dienst fest.
  6. Wählen Sie als Backend-Typ die Option Internetnetzwerk-Endpunktgruppe aus.
  7. Wählen Sie das Protokoll aus, das im Load-Balancer für die Internet-NEG verwendet werden soll. Wählen Sie für dieses Beispiel HTTPS aus.
  8. Wählen Sie unter Neues Backend > Internetnetzwerk-Endpunktgruppe example-fqdn-neg aus und klicken Sie dann auf Fertig.
  9. Wählen Sie Cloud CDN aktivieren aus.
  10. Optional: Ändern Sie die Einstellungen für den Cache-Modus und den TTL-Wert.
  11. Klicken Sie in Erweiterte Konfigurationen unter Benutzerdefinierte Anfrageheader auf Header hinzufügen.
    1. Geben Sie als Headername Host ein.
    2. Geben Sie als Headerwert backend.example.com ein.
  12. Klicken Sie auf Erstellen.
  13. Lassen Sie das Fenster geöffnet, um fortzufahren.

Backend-Dienst an vorhandenes URL-Mapping anhängen

  1. Klicken Sie auf Host- und Pfadregeln.
  2. Die erste Zeile oder die ersten Zeilen enthalten in der rechten Spalte Google Cloud -Dienste. In einer Spalte ist bereits die Standardregel Any unmatched (default) für Hosts und Pfade eingetragen.
  3. Prüfen Sie, ob in der rechten Spalte eine Zeile mit images ausgewählt ist. Wenn dies nicht der Fall ist, klicken Sie auf Host- und Pfadregel hinzufügen und wählen Sie images aus. Füllen Sie die anderen Felder so aus:
    1. Geben Sie im Feld Hosts den Wert * ein.
    2. Geben Sie unter Pfade /cart/id/1223515 ein.

Prüfen und abschließen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
  3. Wenn alles in Ordnung ist, klicken Sie auf Aktualisieren.

gcloud

  1. Erstellen Sie einen neuen Backend-Dienst für die NEG:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --cache-mode=CACHE_MODE \
       --protocol=HTTP2
    

    Legen Sie den Cache-Modus fest. Ersetzen Sie dazu CACHE_MODE durch einen der folgenden Werte:

    • CACHE_ALL_STATIC: Hiermit wird festgelegt, dass statische Inhalte automatisch im Cache gespeichert werden.

    • USE_ORIGIN_HEADERS: (Standard) Hiermit wird erzwungen, dass der Ursprung zum Speichern von Inhalten im Cache gültige Caching-Header festlegt.

    • FORCE_CACHE_ALL: Alle Inhalte werden im Cache gespeichert. Sämtliche Anweisungen private, no-store oder no-cache in Cache-Control-Antwortheadern werden ignoriert.

  2. Konfigurieren Sie den Backend-Dienst so, dass der Anfrage der benutzerdefinierte Anfrageheader Host: backend.example.com hinzugefügt wird:

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Verwenden Sie den Befehl backend-services add-backend, um dem Backend-Dienst die Internet-NEG hinzuzufügen:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Hängen Sie den neuen Backend-Dienst an das URL-Mapping des Load-Balancers an. Erstellen Sie dazu eine neue Abgleichsregel, um Anfragen an dieses Backend zu leiten:

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    Dabei gilt:

    • EXAMPLE_URL_MAP: der Name des vorhandenen URL-Mappings.
    • GCP_SERVICE_EXAMPLE: der Name eines vorhandenen Standard-Backend-Dienstes.
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: der Name dieser neuen Pfadregel.
    • /CART/ID/1223515: der Pfad.
    • IMAGES: der Name des neuen Backend-Dienstes mit der angehängten Internet-NEG.

Erforderliche IP-Bereiche auf die Zulassungsliste setzen

Damit ein externer Application Load Balancer Anfragen an Ihre Internet-NEG senden kann, müssen Sie den DNS-TXT-Eintrag _cloud-eoips.googleusercontent.com mit einem Tool wie dig oder nslookup abfragen.

Führen Sie beispielsweise den folgenden dig-Befehl aus:

dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2

Die Ausgabe enthält die beiden folgenden IP-Adressbereiche:

34.96.0.0/20
34.127.192.0/18

Notieren Sie sich die IP-Bereiche und sorgen Sie dafür, dass diese Bereiche von Ihrer Firewall oder über die Cloud-Zugriffssteuerungsliste (ACL) zugelassen werden.

Weitere Informationen finden Sie unter Anfragen authentifizieren.

Domain mit dem Load Balancer verbinden

Notieren Sie sich nach der Erstellung des Load Balancers die IP-Adresse, die diesem zugewiesen ist, z. B. 30.90.80.100. Wenn Sie Ihre Domain auf den Load Balancer verweisen möchten, erstellen Sie mit Ihrem Domain-Registrierungsdienst einen A-Eintrag. Wenn Sie Ihrem SSL-Zertifikat mehrere Domains hinzugefügt haben, müssen Sie für jede Domain einen A-Eintrag hinzufügen, der auf die IP-Adresse des Load Balancers verweist. So erstellen Sie beispielsweise A-Einträge für www.example.com und example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Wenn Sie Cloud DNS als DNS-Anbieter verwenden, finden Sie weitere Informationen unter Einträge hinzufügen, ändern und löschen.

Externen Application Load Balancer testen

Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic an die IP-Adresse des Load-Balancers senden. Wenn Sie eine Domain konfiguriert haben, können Sie auch Traffic an den Domainnamen senden. Die DNS-Weitergabe kann jedoch einige Zeit in Anspruch nehmen. Sie sollten daher zuerst die IP-Adresse zu Testzwecken verwenden.

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

    Zu „Load Balancing“

  2. Klicken Sie auf den Load Balancer, den Sie gerade erstellt haben.

  3. Notieren Sie sich die IP-Adresse des Load Balancers.

  4. Wenn Sie einen HTTP-Load-Balancer erstellt haben, können Sie ihn mit einem Webbrowser unter http://IP_ADDRESS testen. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load Balancers. Sie sollten zur Startseite des helloworld-Dienstes geleitet werden.

    Wenn Sie einen HTTPS-Load-Balancer erstellt haben, können Sie ihn mit einem Webbrowser unter https://IP_ADDRESS testen. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load Balancers. Sie sollten zur Startseite des helloworld-Dienstes geleitet werden.

    Sollte das nicht funktionieren und Sie verwenden ein von Google verwaltetes Zertifikat, prüfen Sie, ob der Status der Zertifikatsressource AKTIV ist. Weitere Informationen finden Sie unter Status der von Google verwalteten SSL-Zertifikatressourcen.

    Alternativ können Sie curl über die Befehlszeile Ihres lokalen Computers verwenden. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load Balancers.

    Wenn Sie ein von Google verwaltetes Zertifikat verwenden, testen Sie die Domain, die auf die IP-Adresse des Load Balancers verweist. Beispiel:

    curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
    

  5. Optional: Wenn Sie eine benutzerdefinierte Domain verwenden, müssen Sie möglicherweise warten, bis die aktualisierten DNS-Einstellungen wirksam werden. Testen Sie dann Ihre Domain (z. B. backend.example.com) im Webbrowser.

    Hilfe zur Fehlerbehebung finden Sie unter Probleme mit externem Backend und Internet-NEG beheben.

Cloud CDN deaktivieren

Console

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

    Zu „Load Balancing“

  2. Klicken Sie auf den Namen des Load Balancers, den Sie ändern möchten.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie auf Backend-Konfiguration.

  5. Klicken Sie für den Backend-Dienst mit dem Internet-NEG-Backend auf Bearbeiten .

  6. Entfernen Sie das Häkchen aus dem Kästchen Cloud CDN aktivieren.

  7. Klicken Sie zum Überprüfen Ihrer Änderungen auf Prüfen und abschließen und dann auf Aktualisieren.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --no-enable-cdn

Die Aktivierung von Cloud CDN führt zu keiner Entwertung oder Löschung von Caches. Wenn Sie Cloud CDN deaktivieren und wieder aktivieren, bleiben die meisten oder alle im Cache gespeicherten Inhalte im Cache gespeichert. Um zu verhindern, dass Inhalte von Caches verwendet werden, müssen Sie diese Inhalte entwerten.

Nächste Schritte