Cloud CDN mit einem Back-End-Bucket einrichten

Cloud CDN nutzt je nach Ihrer Wahl entweder die globalen externen HTTP(S)-Load-Balancer oder die globalen externen HTTP(S)-Load-Balancer (klassisch) von Google Cloud, um Routing, Systemdiagnosen und Anycast-IP-Unterstützung zu ermöglichen. Da globale externe HTTP(S)-Load-Balancer mehrere Back-End-Instanztypen haben können – Compute Engine-VM-Instanzen, Google Kubernetes Engine-Pods, Cloud Storage-Buckets oder externe Back-Ends außerhalb von Google Cloud – können Sie festlegen, für welche Back-Ends (Ursprünge) Cloud CDN aktiviert werden soll.

In dieser Einrichtungsanleitung wird beschrieben, wie Sie einen externen HTTP(S)-Load-Balancer erstellen, für den Cloud CDN aktiviert ist. In diesem Beispiel werden folgende Ressourcen verwendet:

  • Das VPC-Standardnetzwerk (Virtual Private Cloud)
  • URL-Standardzuordnung
  • Reservierte externe IP-Adresse
  • Ein Cloud Storage-Bucket als Back-End
  • Ein einzelner Load-Balancer-Back-End-Bucket, der als Wrapper für den Cloud Storage-Bucket fungiert

Ein Back-End-Bucket unterstützt Folgendes:

  • Cloud Storage-Buckets einer beliebigen Speicherklasse, einschließlich multiregionaler Buckets
  • Cloud CDN-Richtlinien für das Caching von Inhalten über die globale Edge-Infrastruktur von Google

Informationen zur Funktionsweise von Cloud CDN finden Sie in der Übersicht zu Cloud CDN.

Cloud Storage verwendet standardmäßig den gleichen Cache wie Cloud CDN. Wenn Sie Cloud CDN für den Back-End-Bucket aktivieren, können Sie Cloud CDN-Steuerelemente für Ihre Inhalte verwenden. Cloud CDN-Steuerelemente umfassen beispielsweise Cache-Modi, signierte URLs und Entwertung. Mit Cloud CDN können Sie auch große Inhalte (> 10 MB) im Cache speichern. Wenn Sie Cloud CDN nicht für Ihren Back-End-Bucket aktivieren, können Sie nur Cache-Control-Ursprungsheader verwenden, um das Caching für kleinere Inhalte zu steuern, wie durch die Cloud Storage-Metadaten festgelegt.

Load-Balancer-Back-Ends

Ein externer HTTP(S)-Load-Balancer verwendet eine URL-Zuordnung, um Traffic von angegebenen URLs an angegebene Dienste weiterzuleiten. In der folgenden Tabelle sind die Back-End-Typen aufgeführt, auf denen Sie Inhalte und Dienste hosten können.

Back-End-Konfiguration des Load-Balancers Typischer Inhaltstyp Back-End-Typen
Back-End-Dienst Dynamisch (z. B. Daten)
  • Nicht verwaltete Instanzgruppen
  • Verwaltete Instanzgruppen
  • Netzwerk-Endpunktgruppen innerhalb von Google Cloud
  • Netzwerk-Endpunktgruppen außerhalb von Google Cloud
Back-End-Bucket Statisch (z. B. Bilder)
  • Cloud Storage-Buckets (auf dieser Seite erläutert)

Hinweis

Console

  1. Rufen Sie in der Google Cloud Console die Startseite auf.

    Zur Google Cloud-Startseite

  2. Wählen Sie rechts neben dem Titel „Google Cloud“ ein Projekt aus dem Drop-down-Menü aus.

gcloud oder gsutil

     gcloud config set project PROJECT_ID
   

oder

     gsutil config set project PROJECT_ID
   

Ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID.

Cloud Storage-Bucket erstellen

Wenn Sie bereits einen Cloud Storage-Bucket haben, der noch keinem Load-Balancer zugewiesen ist, können Sie mit dem nächsten Schritt fortfahren.

Wenn Sie einen Cloud Storage-Bucket erstellen, den Sie als Back-End für einen externen HTTP(S)-Load-Balancer mit Cloud CDN verwenden möchten, empfehlen wir das Auswählen 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

  1. Öffnen Sie in der Cloud Console den Cloud Storage-Browser.

    Storage-Browser öffnen

  2. Klicken Sie auf Bucket erstellen.
  3. Geben Sie Werte für die Felder in der folgenden Tabelle an und übernehmen Sie für alle anderen die Standardeinstellung.

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Name Geben Sie für jeden Bucket einen global eindeutigen Namen ein. Wenn der von Ihnen eingegebene Name nicht eindeutig ist, werden Sie über eine Meldung aufgefordert, einen anderen Namen zu verwenden.
    Positionstyp Mehrere Regionen
    Ort Wählen Sie eine Region aus, z. B. „us“ (mehrere Regionen in den USA).
    Standard-Storage-Klasse Standard
    Zugriffsteuerung Einheitlich
  4. Klicken Sie auf Erstellen.

  5. Notieren Sie sich den Namen des neu erstellten Cloud Storage-Buckets für den nächsten Schritt.

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_NAME

Grafikdatei in den Cloud Storage-Bucket kopieren

Wenn Sie die Einrichtung testen möchten, kopieren Sie eine Grafikdatei aus einem öffentlichen Cloud Storage-Bucket in Ihren eigenen Cloud Storage-Bucket.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus. Ersetzen Sie BUCKET_NAME durch den eindeutigen Namen Ihres Cloud Storage-Buckets.

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
    
  2. Klicken Sie in der Cloud Console auf Aktualisieren, um zu prüfen, ob die Grafikdatei kopiert wurde.

Cloud Storage-Bucket veröffentlichen

In diesem Beispiel wird Ihr Cloud Storage-Bucket öffentlich lesbar gemacht. Dies ist der empfohlene Ansatz für öffentliche Inhalte. Mit dieser Einstellung kann jeder im Internet Ihre Objekte und deren Metadaten aufrufen und auflisten. ACLs sind davon ausgenommen. Es wird empfohlen, bestimmte Cloud Storage-Buckets für öffentliche Objekte zuzuweisen. Weitere Informationen finden Sie unter Empfohlene Bucket-Architektur.

Es gibt folgende Alternativen, wenn Sie Ihre Cloud Storage-Buckets nicht öffentlich machen möchten:

Mit der folgenden Anleitung wird allen Nutzern der Lesezugriff auf Objekte in Ihrem Cloud Storage-Bucket gewährt, sodass der Bucket öffentlich lesbar wird.

Console

  1. Öffnen Sie in der Cloud Console den Cloud Storage-Browser.

    Storage-Browser öffnen

  2. Rufen Sie den Bucket auf und klicken Sie auf den Tab Berechtigungen.
  3. Klicken Sie auf Hauptkonten hinzufügen.
  4. Geben Sie unter Neue Hauptkonten allUsers ein.
  5. Wählen Sie als Rolle Cloud Storage > Storage-Objekt-Betrachter aus.
  6. Klicken Sie auf Speichern.

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME

Externe IP-Adresse reservieren

Nachdem der Cloud Storage-Bucket nun ausgeführt wird, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden auf Ihren Load-Balancer zugreifen können.

Dieser Schritt ist optional, wird jedoch empfohlen, da eine statische externe IP-Adresse eine einzelne Adresse bietet, auf die Ihre Domain verweisen soll.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.

    Zur Seite "Externe IP-Adressen"

  2. Um eine IPv4-Adresse zu reservieren, klicken Sie auf Statische Adresse reservieren.
  3. Weisen Sie als Name example-ip zu.
  4. Setzen Sie die Netzwerkdienststufe auf Premium.
  5. Setzen Sie die IP-Version auf IPv4.
  6. Legen Sie für Typ Global fest.
  7. Klicken Sie auf Reservieren.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Externen HTTP(S)-Load-Balancer erstellen

In diesem Verfahren erstellen Sie den Back-End-Bucket des Load-Balancers, der als Wrapper für Ihren Cloud Storage-Bucket dient. Beim Erstellen oder Bearbeiten eines Back-End-Buckets können Sie Cloud CDN aktivieren.

Console

Konfigurationsvorgang für den externen HTTP(S)-Load-Balancer starten

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  3. Wählen Sie Vom Internet zu meinen VMs aus und klicken Sie auf Weiter.
  4. Wählen Sie unter Erweiterte Traffic-Verwaltung eine der folgenden Optionen aus:
    • Wählen Sie für einen globalen externen HTTP(S)-Load-Balancer (klassisch) die Option Klassischer HTTP(S)-Load-Balancer aus.
    • Wählen Sie für einen globalen externen HTTP(S)-Load-Balancer die Option HTTP(S)-Load-Balancer mit erweiterter Traffic-Verwaltung aus.
  5. Geben Sie für Name den Wert http-lb ein und fahren Sie mit dem nächsten Schritt fort.

Back-End konfigurieren und Cloud CDN aktivieren

Erstellen Sie den Back-End-Bucket des Load-Balancers, der als Wrapper für den Cloud Storage-Bucket dient. Beim Erstellen oder Bearbeiten eines Back-End-Buckets können Sie Cloud CDN aktivieren.

  1. Klicken Sie auf Back-End-Konfiguration.
  2. Klicken Sie für Back-End-Dienste und Back-End-Buckets auf Back-End-Dienste und Back-End-Buckets erstellen oder auswählen und dann auf Back-End-Buckets > Back-End-Bucket erstellen.
  3. Legen Sie als Name cat-backend-bucket fest. Dieser Name muss nicht global eindeutig sein und kann sich vom Namen des tatsächlichen Cloud Storage-Buckets unterscheiden.
  4. Klicken Sie unter Cloud Storage-Bucket auf Durchsuchen.
  5. Wählen Sie den global eindeutigen Cloud Storage-BUCKET_NAME aus, den Sie erstellt haben, und klicken Sie auf Auswählen.
  6. Klicken Sie auf Cloud CDN aktivieren.

  7. Optional: Ändern Sie die Einstellungen für den Cache-Modus und den TTL-Wert.

  8. Klicken Sie auf Erstellen.

Hostregeln und Pfad-Matcher konfigurieren

Hostregeln und Pfad-Matcher sind Konfigurationskomponenten der URL-Zuordnung eines externen HTTP(S)-Load-Balancers.

Unter Host- und Pfadregeln können Sie die Standardeinstellungen beibehalten.

Ein benutzerdefiniertes Einrichtungsbeispiel finden Sie unter Back-End-Buckets zu Load-Balancern hinzufügen.

Weitere Informationen zu Hostregeln und Pfad-Matchern finden Sie unter Übersicht über URL-Zuordnungen.

Front-End konfigurieren

  1. Klicken Sie auf Front-End-Konfiguration.
  2. Prüfen Sie, ob die Optionen mit diesen Werten konfiguriert sind:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Protokoll HTTP
    Netzwerkdienststufe Premium
    IP-Version IPv4
    IP-Adresse example-ip
    Port 80

    Wenn Sie einen HTTPS-Load-Balancer statt eines HTTP-Load-Balancers erstellen möchten, benötigen Sie ein SSL-Zertifikat (gcloud compute ssl-certificates list) und müssen die Felder so ausfüllen:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Protokoll HTTPS
    Netzwerkdienststufe Premium
    IP-Version IPv4
    IP-Adresse example-ip
    Port 443
    Zertifikat Wählen Sie ein Zertifikat aus oder erstellen Sie ein neues Zertifikat.
  3. Klicken Sie auf Fertig.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Prüfen Sie die Bereiche Back-End-Buckets, Host- und Pfadregeln und Front-End.
  3. Klicken Sie auf Erstellen.
  4. Warten Sie, bis der Load-Balancer erstellt ist.
  5. Klicken Sie auf den Namen des Load-Balancers (http-lb).
  6. Notieren Sie die IP-Adresse des Load-Balancers für die nächste Aufgabe. Sie wird als IP_ADDRESS bezeichnet.

gcloud

Back-End konfigurieren

gcloud compute backend-buckets create cat-backend-bucket \
    --gcs-bucket-name=BUCKET_NAME \
    --enable-cdn
    --cache-mode=CACHE_MODE

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

  • CACHE_ALL_STATIC: Speichert statischen Inhalt automatisch im Cache. Standardeinstellung für neue Back-Ends.

  • USE_ORIGIN_HEADERS: 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.

URL-Zuordnung konfigurieren

gcloud compute url-maps create http-lb \
    --default-backend-bucket=cat-backend-bucket

Zielproxy konfigurieren

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map=http-lb

Weiterleitungsregel konfigurieren

  • Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer den gcloud CLI-Befehl mit load-balancing-scheme=EXTERNAL_MANAGED. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung.
  • Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (klassisch) load-balancing-scheme=EXTERNAL.
gcloud compute forwarding-rules create http-lb-forwarding-rule \
    --load-balancing-scheme=LOAD_BALANCING_SCHEME \
    --network-tier=PREMIUM \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

Traffic an den Back-End-Bucket senden

Nachdem die globale Weiterleitungsregel erstellt wurde, kann es mehrere Minuten dauern, bis die Konfiguration wirksam wird. Nach mehreren Minuten können Sie mit dem Senden von Traffic an die IP-Adresse des Load-Balancers beginnen.

Console

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf http-lb, um den soeben erstellten Load-Balancer zu maximieren.

    Prüfen Sie im Abschnitt Back-End, ob der Back-End-Bucket fehlerfrei ist. Neben Ihrem Back-End-Bucket sollte ein grünes Häkchen angezeigt werden. Wenn Sie etwas anderes sehen, versuchen Sie zuerst, die Seite neu zu laden. Es kann einige Minuten dauern, bis die Cloud Console anzeigt, dass die Back-Ends fehlerfrei sind.

  3. Sobald die Cloud Console anzeigt, dass der Back-End-Bucket fehlerfrei ist, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür http://IP_ADDRESS/never-fetch/three-cats.jpg auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers. Ihr Browser sollte eine Seite mit Inhalt der Grafikdatei rendern.

gcloud

Testen Sie die Antwort von der URL mit dem Befehl curl. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load-Balancers:

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Senden Sie eine curl-Anfrage:

curl http://IP_ADDRESS/never-fetch/three-cats.jpg

Prüfen, ob Cloud CDN funktioniert

Wenn Sie die Seite http://IP_ADDRESS/never-fetch/three-cats.jpg mehrmals kurz nacheinander neu laden, sollten mehrere Cache-Treffer angezeigt werden.

Der folgende Logeintrag zeigt einen Cache-Treffer. Sie können Cache-Treffer aufrufen, wenn Sie die Logs-Explorer in der Google Cloud Console öffnen und nach dem Namen der Weiterleitungsregel filtern.

Öffnen Sie den Log-Explorer.

Log-Explorer

{
    insertId: "1oek5rg3l3fxj7"
    jsonPayload: {
        @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
        cacheId: "SFO-fbae48ad"
        statusDetails: "response_from_cache"
    }
    httpRequest: {
        requestMethod: "GET"
        requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/never-fetch/three-cats.jpg"
        requestSize: "577"
        status: 254
        responseSize: "157"
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
        remoteIp: "CLIENT_IP_ADDRESS"
        cacheHit: true
        cacheLookup: true
    }
    resource: {
        type: "http_load_balancer"
        labels: {
            zone: "global"
            url_map_name: "URL_MAP_NAME"
            forwarding_rule_name: "FORWARDING_RULE_NAME"
            target_proxy_name: "TARGET_PROXY_NAME"
            backend_service_name: ""
            project_id: "PROJECT_ID"
        }
    }
    timestamp: "2020-06-08T23:41:25.078651Z"
    severity: "INFO"
    logName: "projects/PROJECT_ID/logs/requests"
    trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992"
    receiveTimestamp: "2020-06-08T23:41:25.588272510Z"
    spanId: "7b6537d3672e08e1"
}

Console

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf http-lb, um den soeben erstellten Load-Balancer zu maximieren.

    Prüfen Sie im Abschnitt Back-End, ob der Back-End-Bucket fehlerfrei ist. Neben Ihrem Back-End-Bucket sollte ein grünes Häkchen angezeigt werden. Wenn Sie etwas anderes sehen, versuchen Sie zuerst, die Seite neu zu laden. Es kann einige Minuten dauern, bis die Cloud Console anzeigt, dass die Back-Ends fehlerfrei sind.

  3. Sobald die Cloud Console anzeigt, dass der Back-End-Bucket fehlerfrei ist, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür http://IP_ADDRESS/never-fetch/three-cats.jpg auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers. Ihr Browser sollte eine Seite mit Inhalt der Grafikdatei rendern.

gcloud

Testen Sie die Antwort von der URL mit dem Befehl curl. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load-Balancers:

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Senden Sie eine curl-Anfrage:

curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg

Der Inhalt wird aus Cloud Storage abgerufen, von Cloud CDN im Cache gespeichert und dann validiert und noch einmal abgerufen, wenn er abläuft oder aus anderen Gründen aus dem Cache entfernt wird.

Inhalte aus dem Cache haben einen Age-Header größer als null.

Inhalte, die vor dem Ablaufen der TTL aktualisiert werden müssen, können für ungültig erklärt werden und noch einmal aus Cloud Storage abgerufen werden.

Cloud CDN deaktivieren

Console

Cloud CDN für einen einzelnen Back-End-Bucket 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. Entfernen Sie die Häkchen aus den Kästchen aller Back-End-Buckets, für die Cloud CDN nicht mehr verwendet werden soll.
  4. Klicken Sie auf Aktualisieren.

Cloud CDN für alle Back-End-Buckets 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-buckets update BACKEND_BUCKET_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

  • Mehr dazu, welche Inhalte im Cache gespeichert werden, erfahren Sie unter Caching.
  • Informationen zum Verwenden von Cloud CDN in GKE finden Sie unter Ingress-Features.
  • Informationen zum Prüfen, ob Cloud CDN Antworten aus dem Cache bereitstellt, finden Sie unter Logs ansehen.
  • Informationen zu häufigen Problemen und deren Lösungen finden Sie unter Fehlerbehebung.
  • Informationen zum Konfigurieren von Filter- und Zugriffssteuerungsrichtlinien für Ihre Inhalte finden Sie unter Edge-Sicherheitsrichtlinien.