Sie können ein externes Backend verwenden, wenn der Inhalt entweder lokal oder in einer anderen Cloud gehostet wird. Mit dem externen Backend können Sie Inhalte aus dem Cloud CDN von Google bereitstellen.
In diesem Dokument wird gezeigt, wie Sie Drittanbieter-Objektspeicher wie Amazon Simple Storage Service (Amazon S3) oder Azure Blob Storage als externes Backend für Cloud CDN einrichten. Externe Backends und Cloud CDN arbeiten in Verbindung mit einem externen Application Load Balancer.
Architektur
Zum Erstellen des externen Backends legen Sie eine Internetnetzwerk-Endpunktgruppe (NEG) an, die auf den Speicherdienst eines Drittanbieters als Backend für den Load Balancer verweist. Internet-NEGs werden für externe Backends verwendet.
So richten Sie den Speicher-Bucket eines Drittanbieters als Backend ein:
- Bereiten Sie den Drittanbieter-Speicher-Bucket für die Bereitstellung von Inhalten vor.
- Erstellen Sie eine Internet-NEG, die den FQDN des Buckets verwendet.
- Konfigurieren Sie den externen Application Load Balancer mit der Internet-NEG als Backend.
- Testen Sie die Einrichtung.
Bucket für die Bereitstellung von Inhalten vorbereiten
Prüfen Sie vor der Einrichtung in Google Cloud, ob der Bucket richtig konfiguriert ist. In dieser Anleitung wird davon ausgegangen, dass Sie Amazon S3 verwenden und berechtigt sind, Änderungen am Amazon S3-Bucket und an den Objekten vorzunehmen.
Achten Sie darauf, dass entweder der Amazon S3-Bucket und die Objekte im Bucket öffentlich sind oder dass Sie die Authentifizierung privater Ursprünge für den Amazon S3-Bucket konfiguriert haben.
Achten Sie darauf, dass der Inhalt die Anforderungen an die Cache-Fähigkeit erfüllt, die unter Im Cache speicherbare Inhalte aufgeführt sind. Informationen zum Hinzufügen von Objektmetadaten finden Sie in der AWS-Wissensdatenbank, z. B. unter Objektmetadaten bearbeiten.
Sie benötigen den Endpunkt des Amazon S3-Buckets (den FQDN), wenn Sie die Internet-NEG einrichten. Für das Ermitteln von Endpunktinformationen folgen Sie der Anleitung in der AWS-Wissensdatenbank, z. B. Auf einen Bucket zugreifen. Sie finden die Amazon S3-Endpunkt-URL auch auf der Übersichtsseite des Objekts.
Internet-NEG erstellen, die den Hostnamen des Buckets verwendet
Zur Vereinfachung wird in diesem Beispiel der FQDN backend.example.com
verwendet. Ersetzen Sie diesen durch den FQDN Ihres Drittanbieter-Speicher-Buckets, z. B. http://unique-name-bucket.s3-us-west-1.amazonaws.com/
.
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.
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 von dem externen Backend abgerufen. Der weitere eingehende Traffic wird anhand von URL-Mapping 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:
Übersicht über Internetnetzwerk-Endpunktgruppen, einschließlich der Einschränkungen.
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 Nutzertraffic diesem Backend-Dienst durch Konfiguration des URL-Mapping Ihres externen Application 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 mussPREMIUM
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 Zielproxy
TargetHttpProxy
oderTargetHttpsProxy
lauten. In diesem Beispiel wirdTargetHttpsProxy
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.
Die Einrichtung sieht so aus:
NEG und Internetendpunkt erstellen
Konsole
- Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
- Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.
- Geben Sie den Namen der Netzwerk-Endpunktgruppe ein:
example-fqdn-neg
. - Wählen Sie als Typ der Netzwerk-Endpunktgruppe die Option Netzwerk-Endpunktgruppe (Internet) aus.
- Geben Sie als Standardport
443
ein. - Wählen Sie unter Neuer Netzwerkendpunkt die Option Voll qualifizierter Domainname und Port aus.
- Geben Sie für den FQDN
backend.example.com
ein. - Wählen Sie als Porttyp die Option Standard aus, und verifizieren Sie, dass die Portnummer
443
ist. - Klicken Sie auf Erstellen.
gcloud
Erstellen Sie eine Internet-NEG, und legen Sie für
--network-endpoint-type
den Wertinternet-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
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) oder443
(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
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
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 CloudDienst. 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
- Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.
- Wählen Sie Ihren klassischen Application Load Balancer aus, klicken Sie auf Menü, und wählen Sie dann Bearbeiten aus, um den Backend-Dienst einem vorhandenen Load Balancer hinzuzufügen.
- Klicken Sie auf Backend-Konfiguration.
- Wählen Sie im Menü Backend-Dienste und Backend-Buckets die Option Backend-Dienst erstellen aus.
- Legen Sie
images
als Name für den Backend-Dienst fest. - Wählen Sie als Backend-Typ die Option Internetnetzwerk-Endpunktgruppe aus.
- 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.
- Wählen Sie unter Neues Backend > Internetnetzwerk-Endpunktgruppe
example-fqdn-neg
aus, und klicken Sie dann auf Fertig. - Wählen Sie Cloud CDN aktivieren aus.
- Optional: Ändern Sie die Einstellungen für den Cache-Modus und den TTL-Wert.
- Klicken Sie in Erweiterte Konfigurationen unter Benutzerdefinierte Anfrageheader auf Header hinzufügen.
- Geben Sie als Headername
Host
ein. - Geben Sie als Headerwert
backend.example.com
ein.
- Geben Sie als Headername
- Klicken Sie auf Erstellen.
- Lassen Sie das Fenster geöffnet, um fortzufahren.
Backend-Dienst an vorhandenes URL-Mapping anhängen
- Klicken Sie auf Host- und Pfadregeln.
- Die erste Zeile oder die ersten Zeilen enthalten Dienste von Google Cloud in der rechten Spalte. In einer Spalte ist bereits die Standardregel
Any unmatched (default)
für Hosts und Pfade eingetragen. - 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 Sieimages
aus. Füllen Sie die anderen Felder so aus:- Geben Sie im Feld Hosts den Wert
*
ein. - Geben Sie unter Pfade
/cart/id/1223515
ein.
- Geben Sie im Feld Hosts den Wert
Prüfen und abschließen
- Klicken Sie auf Prüfen und abschließen.
- Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
- Wenn alles in Ordnung ist, klicken Sie auf Aktualisieren.
gcloud
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
: Speichert statischen Inhalt automatisch im Cache.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 Anweisungenprivate
,no-store
oderno-cache
inCache-Control
-Antwortheadern werden ignoriert.
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
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
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 zulassen
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 Befehl dig
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.
Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.
Klicken Sie auf den Load Balancer, den Sie gerade erstellt haben.
Notieren Sie sich die IP-Adresse des Load Balancers.
Wenn Sie einen HTTP-Load Balancer erstellt haben, können Sie ihn mit einem Webbrowser unter
http://IP_ADDRESS
testen. Ersetzen SieIP_ADDRESS
durch die IP-Adresse des Load Balancers. Sie sollten zur Startseite deshelloworld
-Dienstes geleitet werden.Wenn Sie einen HTTPS-Load Balancer erstellt haben, können Sie ihn mit einem Webbrowser unter
https://IP_ADDRESS
testen. Ersetzen SieIP_ADDRESS
durch die IP-Adresse des Load Balancers. Sie sollten zur Startseite deshelloworld
-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 SieIP_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
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 Backend und der Internet-NEG.
Cloud CDN testen
Test 1: Bucket-Endpunkt direkt erreichen
Dieser Test verwendet die Befehle time
und wget
von einer VM. Im Beispiel wird /cart/id/1223515/image.jpg
aus dem Bucket backend.example.com
heruntergeladen.
Aus der Ausgabe geht hervor, dass die Gesamtanfrage 780 ms dauert. Dies ist die Dauer des Abrufs eines 3,3 MB großen Bildes direkt von Amazon S3.
time wget backend.example.com/cart/id/1223515/image.jpg
--2020-06-26 18:22:46-- backend.example.com/cart/id/1223515/image.jpg Resolving backend.example.com (backend.example.com)... 52.219.120.233 Connecting to backend.example.com (backend.example.com)|52.219.120.233|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.47' /cart/id/1223515/image.jpg.47 100%[==============================================================================================================================================>] 3.29M 6.25MB/s in 0.5s 2020-06-26 18:22:47 (6.25 MB/s) - '/cart/id/1223515/image.jpg.47' saved [3447106/3447106] real 0m0.780s user 0m0.003s sys 0m0.012s
Test 2: Erste Anfrage über Cloud CDN
Dieser Test verwendet die IP-Adresse des Load Balancers zum Abrufen der Datei /cart/id/1223515/image.jpg
. Da es die erste Anfrage ist, sollte sie fehlschlagen. Cloud CDN muss das Bild aus dem Ursprung abrufen, also von Amazon S3. Aus der Ausgabe geht hervor, dass die Anfrage 844 ms gedauert hat.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:27-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.44' /cart/id/1223515/image.jpg.44 100%[==============================================================================================================================================>] 3.29M 8.23MB/s in 0.4s 2020-06-26 18:19:28 (8.23 MB/s) - '/cart/id/1223515/image.jpg.44' saved [3447106/3447106] real 0m0.844s user 0m0.003s sys 0m0.012s
Test 3: Zweite Anfrage über CDN
Stellen Sie nun eine weitere Anfrage über diese IP-Adresse des Load Balancers. Dieses Mal sollte eine im Cache gespeicherte Antwort ausgegeben werden, d. h. schneller als bei den ersten beiden Tests.
Wir verwenden wieder die gleiche Load Balancer-IP-Adresse LOAD_BALANCER_IP_ADDRESS. Aus der Ausgabe geht hervor, dass die Anfrage nur 18 ms gedauert hat.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:29-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.45' /cart/id/1223515/image.jpg.45 100%[==============================================================================================================================================>] 3.29M --.-KB/s in 0.008s 2020-06-26 18:19:29 (423 MB/s) - '/cart/id/1223515/image.jpg.45' saved [3447106/3447106] real 0m0.018s user 0m0.001s sys 0m0.010s
Mit Logs verifizieren
Logs für Cloud CDN sind mit dem externen Application Load Balancer verknüpft, an den Ihre Cloud CDN-fähigen Backends angehängt sind. Mit den Logs können Sie prüfen, ob eine Anfrage erfolgreich ist. Weitere Informationen zu Cloud CDN-Logs finden Sie unter Logs ansehen.
Beschränkungen
Der Drittanbieter-Bucket und die Objekte müssen öffentlich sein. Alternativ können Sie Ihren Bucket und Ihre Objekte privat halten, wenn Sie die Authentifizierung des privaten Ursprungs konfigurieren. Externe Backends unterstützen keine anderen Methoden zur Inhaltsauthentifizierung, z. B. signierte URLs oder signierte Cookies.
Wenn Sie einen externen Backend-Dienst verwenden, der für den
Host
-Header der HTTP-Anfrage einen bestimmten Wert erwartet, müssen Sie den Backend-Dienst so konfigurieren, dass derHost
-Header auf diesen erwarteten Wert gesetzt wird. Wenn Sie keinen benutzerdefinierten Anfrageheader konfigurieren, behält ein Backend-Dienst denHost
-Header bei, den der Client für die Verbindung mit dem externen Application Load Balancer von Google Cloud verwendet hat. Allgemeine Informationen zu benutzerdefinierten Anfrageheadern finden sich unter Benutzerdefinierte Anfrageheader konfigurieren. Ein konkretes Beispiel finden Sie unter Load Balancer mit einem externen Backend konfigurieren.
Nächste Schritte
- Informationen zum Prüfen, ob Cloud CDN Antworten aus dem Cache bereitstellt, finden Sie unter Logs und Messwerte für das Caching.
- Weitere Informationen 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.