Cloud CDN mit externem Ursprung einrichten

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

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

Im Beispiel akzeptiert der Load-Balancer HTTPS-Anfragen von Clients und leitet sie als HTTP/2 an die benutzerdefinierte Quelle weiter. In diesem Beispiel wird davon ausgegangen, dass das externe Back-End HTTP/2 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 Back-End.

In dieser Anleitung wird davon ausgegangen, dass Sie bereits einen Load-Balancer eingerichtet haben und ein neues externes Back-End hinzufügen.

Eine Beispielarchitektur sieht so aus:

Typischer Anwendungsfall für externe Back-Ends
Typischer Anwendungsfall für externe Back-Ends

Im Diagramm hat www.example.com ein Load-Balancer-Front-End mit der IP-Adresse 120.1.1.1. Bei einem Cache-Fehler werden Nutzeranfragen für /cart/id/1223515 über HTTP/2 von dem externen Back-End abgerufen. Der weitere eingehende Traffic wird anhand der URL-Zuordnung entweder an den Google Cloud-Back-End-Dienst mit Compute Engine-VMs oder an den Back-End-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 HTTP(S)-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-Instanzadministrator

Load-Balancer mit einem externen Back-End 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 Back-End zu einem Back-End-Dienst hinzufügen
  • Definieren, welcher Nutzertraffic diesem Back-End-Dienst durch Konfiguration der URL-Zuordnung Ihres externen HTTP(S)-Load-Balancers zugeordnet werden soll
  • Erforderliche IP-Bereiche zulassen

In diesem Beispiel werden die folgenden Ressourcen erstellt:

  • Eine Weiterleitungsregel mit der IP-Adresse 120.1.1.1 leitet eingehende Anfragen an einen Zielproxy weiter.
    • Die networkTier der Weiterleitungsregel muss PREMIUM sein.
  • Der Ziel-Proxy prüft bei jeder Anfrage, ob diese mit der URL-Zuordnung übereinstimmt, um den passenden Back-End-Dienst für die Anfrage auswählen zu können.
    • Für externe Back-Ends muss der Zielproxy TargetHttpProxy oder TargetHttpsProxy lauten. In diesem Beispiel wird TargetHttpsProxy verwendet.
  • Ist Cloud CDN für den Back-End-Dienst aktiviert (optional), können Antworten aus den Cloud CDN-Caches zwischengespeichert und bereitgestellt werden.
  • Die Back-End-Dienstkonfiguration leitet Traffic an eine Internet-NEG weiter. Diese Internet-NEG enthält den Netzwerkendpunkt, an den der externe HTTP(S)-Load-Balancer Traffic sendet, wenn ein Cloud CDN-Cache-Fehler auftritt.
  • Dieses Beispiel enthält den benutzerdefinierten Anforderungsheader, der erforderlich ist, wenn das externe Back-End einen bestimmten Wert für den Host-Header der HTTP-Anfrage erwartet.

Die Einrichtung sieht so aus:

Cloud CDN mit lokalem Back-End
Cloud CDN mit lokalem Back-End

NEG und Internetendpunkt erstellen

Console

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

    Zur Seite „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 Back-End 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 Back-End-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 Back-End 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 die vorhandene URL-Zuordnung geändert. Hierzu wird ein Pfad-Matcher hinzugefügt, der alle Anfragen für cart/id/1223515 an den images-Back-End-Dienst sendet, der der Internet-NEG zugeordnet ist.

Console

Back-End-Dienst erstellen und Internet-NEG hinzufügen

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

    Zur Seite „Load-Balancing“

  2. Wählen Sie Ihren externen HTTP(S)-Load-Balancer aus, klicken Sie auf Menü und wählen Sie dann Bearbeiten aus, um den Back-End-Dienst einem vorhandenen Load-Balancer hinzuzufügen.
  3. Klicken Sie auf Back-End-Konfiguration.
  4. Wählen Sie im Drop-down-Menü Back-End-Dienste und Back-End-Buckets erstellen oder auswählen die Option Back-End-Dienste > Back-End-Dienst erstellen aus.
  5. Legen Sie images als Name für den Back-End-Dienst fest.
  6. Wählen Sie als Back-End-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 HTTP/2 aus.
  8. Wählen Sie unter Neues Back-End > Internetnetzwerk-Endpunktgruppe example-fqdn-neg aus und klicken Sie dann auf Fertig.
  9. Wählen Sie Cloud CDN aktivieren aus.
  10. Behalten Sie die Standardeinstellungen für den Cache-Modus und den TTL-Wert bei.
  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.

Back-End-Dienst an vorhandene URL-Zuordnung anhängen

  1. Klicken Sie auf Host- und Pfadregeln.
  2. Die erste Zeile oder die ersten Zeilen enthalten Google Cloud-Dienste in der rechten Spalte. 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 korrekt aussieht, klicken Sie auf Erstellen, um Ihren externen HTTP(S)-Load-Balancer zu erstellen.

gcloud

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

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. Konfigurieren Sie den Back-End-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 Back-End-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 Back-End-Dienst an die URL-Zuordnung des Load-Balancers an. Erstellen Sie dazu eine neue Abgleichsregel, um Anfragen an dieses Back-End 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 der vorhandenen URL-Zuordnung.
    • GCP_SERVICE_EXAMPLE: der Name eines vorhandenen Standard-Back-End-Dienstes.
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: der Name dieser neuen Pfadregel.
    • /CART/ID/1223515: der Pfad.
    • IMAGES: der Name des neuen Back-End-Dienstes mit der angehängten Internet-NEG.

Erforderliche IP-Bereiche zulassen

Damit ein externer HTTP(S)-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 dazu 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.

Externen HTTP(S)-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. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite „Load-Balancing“
  2. Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.
  3. Notieren Sie sich seine IP-Adresse.
  4. Wenn Sie einen HTTP-Load-Balancer erstellt haben, können Sie ihn mit einem Webbrowser testen. Rufen Sie dafür http://IP_ADDRESS auf. 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 testen. Rufen Sie dafür https://IP_ADDRESS auf. 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 Von Google verwaltete SSL-Zertifikate verwenden.

    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://backend.example.com:443' --connect-to --resolve backend.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 Fehlerbehebung bei Problemen mit dem externen Back-End und der Internet-NEG.

Cache-Modi verwenden

Wenn Sie Cloud CDN so konfiguriert haben, dass Inhalte mit einem Ursprung außerhalb von Google Cloud abgerufen und im Cache gespeichert werden, kann sich das Aktualisieren der Anwendung oder des Objektspeichers zum Senden gültiger Caching-Header als schwierig erweisen.

Dies gilt auch für Fälle, in denen Ihr Ursprungsserver Caching-Header uneinheitlich festlegt, zu kurze oder zu lange TTLs definiert oder anderweitig ungültige Cache-Anweisungen festlegt (z. B. von einer Legacy-Anwendung).

Sie können Cloud CDN so konfigurieren, dass alle Inhalte aus diesem Ursprung im Cache gespeichert und die vom Ursprung festgelegten TTLs überschrieben werden. Gehen Sie dazu so vor:

  • Setzen Sie den Cache-Modus auf FORCE_CACHE_ALL.
  • Konfigurieren Sie eine Standard-TTL, um eine TTL für alle Antworten des Ursprungs zu erzwingen.

Wenn Sie statische Antworten von Ihrem Ursprung automatisch im Cache speichern möchten, können Sie die CACHE_ALL_STATICCache-Modus-Einstellung verwenden.

Wenn Sie die Cache-Fähigkeit für jede Antwort mithilfe von HTTP-Cache-Anweisungen steuern möchten, legen Sie den Cache-Modus so fest, dass er Ursprungsheader (USE_ORIGIN_HEADERS) verwendet. Informationen zu den Cache-Anweisungen, die Cloud CDN versteht und dazu, was nicht von Cloud CDN zwischengespeichert wird, finden Sie unter Cache-fähige Inhalte und Nicht Cache-fähige Inhalte.

Wenn Ihr Ursprung keine nutzerbasierten dynamischen Inhalte bereitstellt, sollten Sie alle Antworten des Ursprungs im Cache speichern. Verwenden Sie dazu den Modus FORCE_CACHE_ALL. In diesem Modus werden alle Antworten unabhängig von Inhaltstyp oder Cache-Anweisungen im Cache gespeichert.

Wenn Sie nicht explizit einen Cache-Modus auswählen, wenn Sie Cloud CDN in einem Back-End aktivieren, sind die API und das gcloud-Befehlszeilentool standardmäßig auf USE_ORIGIN_HEADERS eingestellt und die Cloud Console verwendet standardmäßig CACHE_ALL_STATIC.

Cloud CDN deaktivieren

Console

Cloud CDN für einen einzelnen Back-End-Dienst deaktivieren

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud CDN.

    Zur Cloud CDN-Seite

  2. Klicken Sie auf der rechten Seite der ursprünglichen Zeile auf Menü  und wählen Sie Bearbeiten aus.
  3. Heben Sie die Auswahl der Kästchen aller Back-End-Dienste auf, die Cloud CDN nicht mehr verwenden sollen.
  4. Klicken Sie auf Aktualisieren.

Cloud CDN für alle Back-End-Dienste für einen Ursprung entfernen

  1. Rufen Sie in der Cloud Console die Seite Cloud CDN auf.

    Zur Cloud CDN-Seite

  2. Klicken Sie auf der rechten Seite der ursprünglichen Zeile auf Menü  und wählen Sie Entfernen aus.
  3. Klicken Sie zur Bestätigung auf Entfernen.

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

  • Informationen zum Prüfen, ob Cloud CDN Antworten aus dem Cache bereitstellt, finden Sie unter Logs ansehen.
  • Mehr darüber, welche Inhalte im Cache gespeichert werden können und welche nicht, erfahren Sie unter Caching-Details.
  • Informationen zu GFE-Points-of-Presence finden Sie unter Cache-Speicherorte.