Cloud CDN mit einem Back-End-Bucket einrichten

Cloud CDN nutzt die globalen externen HTTP(S)-Load-Balancer 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 Ursprünge 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 einfachen 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.

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

  • Wenn Sie die Dienstprogramme gcloud oder gsutil verwenden möchten, finden Sie unter Kurzanleitung: gsutil-Tool verwenden Hinweise, wie Sie diese installieren.
  • Legen Sie ein Standardprojekt fest.

    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 das Projekt, das Sie für diese Anleitung verwenden möchten.

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/static/us/
    
  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 Mitglieder hinzufügen.
  4. Geben Sie unter Neue Mitglieder 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. 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. 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

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

gcloud compute forwarding-rules create http-lb-forwarding-rule \
    --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/static/us/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/static/us/three-cats.jpg

Prüfen, ob Cloud CDN funktioniert

Wenn Sie die Seite http://ip-address/static/us/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 Loganzeige in der Google Cloud Console öffnen und nach dem Namen der Weiterleitungsregel filtern.

Loganzeige öffnen

Loganzeige

{
    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/static/us/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/static/us/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/static/us/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, 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.

Cache-Modi und TTLs verwenden

Wenn Sie statische Antworten von Ihrem Ursprung automatisch im Cache speichern möchten, können Sie den Cache-Modus CACHE_ALL_STATIC (Beta) 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 Cachefähige Inhalte und Nicht cachefä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 bei der Aktivierung von Cloud CDN für ein Back-End nicht explizit einen Cache-Modus auswählen, werden die folgenden Standardeinstellungen ausgewählt:

  • Beta. Die API und das gcloud-Befehlszeilentool sind standardmäßig auf USE_ORIGIN_HEADERS gesetzt, wenn Sie Cloud CDN aktivieren, aber keinen Cache-Modus angeben. Die Cloud Console (sofern unterstützt) wird standardmäßig auf CACHE_ALL_STATIC gesetzt, wenn Sie Cloud CDN für ein Back-End aktivieren.

  • GA. Alle neuerdings Cloud CDN-fähigen Back-Ends sind standardmäßig auf CACHE_ALL_STATIC gesetzt, unabhängig von Ihrer Konfigurationsmethode (Cloud Console, API oder dem gcloud-Tool).

Für neue Back-End-Buckets mit aktiviertem Cloud CDN wird standardmäßig automatisch der Modus CACHE_ALL_STATIC festgelegt.

  1. Aktivieren Sie Cloud CDN für Ihren Back-End-Bucket.
  2. Legen Sie den Cache-Modus so fest, dass automatisch alle statischen Inhalte im Cache gespeichert werden.
  3. Legen Sie eine geeignete Standard-TTL fest (z. B. einen Tag), damit Cloud CDN diese im Cache speichert.

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 keinem Entwerten oder Löschen 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.

Weitere Informationen

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