Diese Anleitung vermittelt anhand eines Beispiels die Grundlagen für die Verwendung eines externen Back-Ends (manchmal auch als benutzerdefinierter Ursprung bezeichnet) mit einem globalen externen Application Load Balancer. Ein externes Backend ist ein Endpunkt, der sich außerhalb von Google Cloud befindet. Wenn Sie ein externes Backend mit einem globalen externen Application Load Balancer verwenden, können Sie die Leistung mithilfe von Cloud CDN-Caching verbessern.
In dieser Anleitung erfahren Sie, wie Sie einen globalen externen Application Load Balancer mit einem Cloud CDN-fähigen Backend-Dienst konfigurieren, der Anfragen an einen externen Backend-Server weiterleitet.
Bevor Sie dieser Anleitung folgen, sollten Sie sich mit der Internet-NEG-Übersicht und den Einschränkungen vertraut machen.Das folgende Architekturdiagramm zeigt ein globales externes Application Load Balancer-Frontend mit einem externen Backend.
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 (roles/owner
oder roles/editor
) des Projekts sein oder alle folgenden IAM-Rollen in Compute Engine haben:
Aufgabe | Erforderliche Rolle |
---|---|
Load-Balancer-Komponenten erstellen und ändern | Compute-Netzwerkadministrator ( roles/compute.networkAdmin )
|
NEGs erstellen und ändern | Compute-Instanzadministrator ( roles/compute.instanceAdmin )
|
Externe Backend-Umgebung außerhalb von Google Cloud einrichten
In den folgenden Abschnitten erfahren Sie, wie Sie Ihre Umgebung einrichten.
Netzwerkendpunkte konfigurieren
Konfigurieren Sie einen Netzwerkendpunkt, um Ihr externes Backend für Google Cloud verfügbar zu machen. Achten Sie darauf, dass der Endpunkt - entweder eine Kombination aus IP:Port oder einem vollqualifizierten Domainnamen (FQDN) und Port - über das Internet erreichbar ist. Dieser Endpunkt wird später von der Internet-NEG referenziert.
Ausführliche Konfigurationsanforderungen für Internet-NEG-Endpunkte finden Sie in der Übersicht über Internet-NEGs.
Externem Backend Traffic von Google Cloud erlauben
Damit Anfragen von Google Cloud Ihr externes Backend erreichen können, müssen Sie die IP-Adressbereiche verwenden, die Google zum Senden von Anfragen an externe Backends verwendet. Um nach den IP-Adressen zu suchen, denen erlaubt werden muss, Traffic an Ihre externen Back-Ends zu senden, fragen Sie den _cloud-eoips.googleusercontent.com
-DNS-TXT-Eintrag mit einem Tool wie dig
oder nslookup
ab.
Beispiele:
Führen Sie folgenden Befehl
nslookup
aus:nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
Die Ausgabe sieht in etwa so aus:
Non-authoritative answer: _cloud-eoips.googleusercontent.com text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
Notieren Sie sich die CIDR-Bereiche nach
ip4:
und sorgen Sie dafür, dass diese Bereiche von den Firewallregeln oder ACLs (Cloud Access Control) zugelassen werden, die auf Ihrem externen Backend konfiguriert sind.Führen Sie 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
Google Cloud-Umgebung einrichten
Erstellen Sie den globalen externen Application Load Balancer mit einem Internet-NEG-Backend.
Externe IP-Adresse reservieren
Reservieren Sie eine globale statische externe IP-Adresse, über die Clients Ihre Anwendung erreichen.
Console
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Klicken Sie auf Externe statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
Geben Sie einen Namen ein.
Wählen Sie für Netzwerkdienststufe die Option Premium aus.
Setzen Sie die IP-Version auf IPv4.
Wählen Sie unter Typ die Option Global aus.
Klicken Sie auf Reservieren.
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe LB_IP_ADDRESS_NAME \ --format="get(address)" \ --global
Internet-NEG einrichten
Console
Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.
Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.
Geben Sie einen Namen ein.
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 den voll qualifizierten Domainnamen 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 Back-End erreicht werden kann):gcloud compute network-endpoint-groups create INTERNET_NEG_NAME \ --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 Back-End-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 INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \ --global
Load-Balancer erstellen
Console
Konfiguration starten
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
- Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
- Wählen Sie unter Generation des Load Balancers die Option Klassischer Application Load Balancer aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Frontend-Konfiguration
- Klicken Sie auf Frontend-Konfiguration.
- Geben Sie einen Namen ein.
Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie ein SSL-Zertifikat. Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.
Prüfen Sie, ob die folgenden Optionen mit diesen Werten konfiguriert sind.
Attribut Wert (Wert eingeben bzw. Option auswählen) Protokoll HTTPS Netzwerkdienststufe Premium IP-Version IPv4 IP-Adresse Wählen Sie die im Schritt Externe IP-Adresse reservieren erstellte IP-Adresse aus. Port 443 Zertifikat Wählen Sie ein vorhandenes Zertifikat aus oder erstellen Sie ein neues.
Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird. Sie können eine SSL-Zertifikatsressource entweder mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat erstellen.
Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain. Der A-Eintrag der Domain muss der IP-Adresse des Load-Balancers zugeordnet werden (in diesem Beispiel
example-ip
). Wir empfehlen die Verwendung von Google-verwalteten Zertifikaten, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert. Wenn Sie keine Domain haben, können Sie ein selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.Optional: HTTP-zu-HTTPS-Weiterleitung aktivieren Klicken Sie dieses Kästchen an, um HTTP-zu-HTTPS-Weiterleitungen zu aktivieren.
Wenn Sie dieses Kästchen anklicken, wird ein zusätzlicher partieller HTTP-Load-Balancer erstellt, der dieselbe IP-Adresse wie Ihr HTTPS-Load-Balancer verwendet und die HTTP-Anfragen an das HTTPS-Frontend Ihres Load-Balancers weiterleitet.
Dieses Kästchen kann nur angeklickt werden, wenn das HTTPS-Protokoll aktiviert und eine reservierte IP-Adresse verwendet wird.
Wenn Sie diesen Prozess testen möchten, ohne eine SSL-Zertifikatsressource oder eine Domain einzurichten (für von Google verwaltete Zertifikate erforderlich), können Sie einen HTTP-Load-Balancer einrichten.
Um einen HTTP-Load-Balancer zu erstellen, prüfen Sie, ob die folgenden Optionen mit diesen Werten konfiguriert sind:
Attribut Wert (Wert eingeben bzw. Option auswählen) Protokoll HTTP Netzwerkdienststufe Premium IP-Version IPv4 IP-Adresse Wählen Sie die im Schritt Externe IP-Adresse reservieren erstellte IP-Adresse aus. Port 80 Klicken Sie auf Fertig.
Backend-Konfiguration
- Klicken Sie auf Backend-Konfiguration.
- Klicken Sie auf Backend-Dienste und Backend-Buckets.
- Klicken Sie auf Backend-Dienst erstellen.
- Geben Sie einen Namen ein.
- Wählen Sie als Backend-Typ die Option Internetnetzwerk-Endpunktgruppe aus.
- Wählen Sie unter Protokoll das Protokoll aus, das Sie vom Load-Balancer zur Internet-NEG verwenden möchten. Wählen Sie für dieses Beispiel HTTP/2 aus.
- Wählen Sie unter Backends im Fenster Neues Backend die Internet-NEG aus, die Sie im vorherigen Schritt erstellt haben.
- Klicken Sie auf Erstellen.
Überprüfen und abschließen
- Klicken Sie auf Prüfen und abschließen.
- Wenn alles korrekt aussieht, klicken Sie auf Erstellen.
gcloud
- Erstellen Sie einen Backend-Dienst.
gcloud compute backend-services create BACKEND_SERVICE \ --global
- Fügen Sie dem Backend-Dienst die Internet-NEG hinzu:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --global-network-endpoint-group \ --global
- Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten:
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE \ --global
Führen Sie diesen Schritt nur aus, wenn Sie einen HTTPS-Load-Balancer erstellen möchten. Dieser Schritt ist für HTTP-Load-Balancer nicht erforderlich.
Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Zielproxy verwendet wird. Sie können eine SSL-Zertifikatsressource entweder mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat erstellen. Es empfiehlt sich, die von Google verwalteten Zertifikate zu verwenden, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert.
Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain. Wenn Sie keine Domain haben, können Sie ein selbstverwaltetes SSL-Zertifikat zu Testzwecken verwenden.
So erstellen Sie eine von Google verwaltete SSL-Zertifikatsressource: So erstellen Sie eine selbstverwaltete SSL-Zertifikatressource:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Erstellen Sie einen HTTP(S)-Zielproxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten.
Erstellen Sie einen HTTP-Zielproxy für einen HTTP-Load-Balancer:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --global
Erstellen Sie einen HTTPS-Zielproxy für einen HTTPS-Load-Balancer. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für den HTTPS-Load-Balancer besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Ersetzen Sie dabei Folgendes:
TARGET_HTTP_PROXY_NAME
ist der Name des HTTP-Ziel-Proxys.TARGET_HTTPS_PROXY_NAME
ist der Name des HTTPS-Ziel-Proxys.SSL_CERTIFICATE_NAME
ist der Name des SSL-Zertifikats.URL_MAP_NAME
ist der Name der URL-Zuordnung.
Erstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
Für einen HTTP-Load-Balancer:
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
Für einen HTTPS-Load-Balancer:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
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.
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.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.
Rufen Sie die IP-Adresse des Load-Balancers ab:
Senden Sie den Traffic an den Load-Balancer.
Wenn Sie einen HTTP-Load-Balancer erstellt haben, können Sie ihn über
http://IP_ADDRESS
testen. Ersetzen SieIP_ADDRESS
durch die IP-Adresse des Load-Balancers. Sie werden nun zu der Anwendung weitergeleitet, die Sie auf dem externen Backend ausführen.Wenn Sie einen HTTPS-Load-Balancer erstellt haben, können Sie ihn mit
https://IP_ADDRESS
testen. Ersetzen SieIP_ADDRESS
durch die IP-Adresse des Load-Balancers. Sie werden nun zu der Anwendung weitergeleitet, die Sie auf dem externen Backend ausführen.
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. Beispiele: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 im Webbrowser.
Hilfe zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Problemen mit dem externen Backend und der Internet-NEG.
Zusätzliche Konfiguration
In diesem Abschnitt wird die Konfiguration des Beispiels um alternative und zusätzliche Optionen erweitert. Alle Aufgaben sind optional. Sie können sie in beliebiger Reihenfolge ausführen.
Cloud CDN aktivieren
Wenn Cloud CDN aktiviert ist, sendet der externe Application Load Balancer nur dann Anfragen an das Internet-NEG-Backend, wenn ein Cloud CDN-Cache-Fehler auftritt.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers, den Sie ändern möchten.
Klicken Sie auf
Bearbeiten.Klicken Sie auf Backend-Konfiguration.
Klicken Sie für den Backend-Dienst mit dem Internet-NEG-Backend auf
Bearbeiten.Wählen Sie Cloud CDN aktivieren aus.
Optional: Ändern Sie die Einstellungen für den Cache-Modus und den TTL-Wert.
Klicken Sie auf Aktualisieren.
Klicken Sie zum Prüfen Ihrer Änderungen auf Prüfen und abschließen und dann auf Aktualisieren.
gcloud
- Verwenden Sie den folgenden Befehl, um Cloud CDN im Backend-Dienst zu aktivieren:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --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.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.
Einen benutzerdefinierten Header zur Authentifizierung von Anfragen verwenden
Zur Authentifizierung von Anfragen, die an Ihr externes Backend gesendet werden, können Sie einen benutzerdefinierten Header festlegen, der angibt, dass die Anfrage von einem Google Cloud-Load-Balancer stammt. Beispiel: Sie können das externe Backend so konfigurieren, dass für den Host
-Header der HTTP-Anfrage ein bestimmter Wert erwartet wird, und Sie können den Backend-Dienst so konfigurieren, dass der Host
-Header auf diesen erwarteten Wert gesetzt wird.
Führen Sie die folgenden Schritte aus, um den Backend-Dienst so zu konfigurieren, dass jeder Anfrage ein benutzerdefinierter Host
-Header hinzugefügt wird.
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Klicken Sie auf den Namen des Load-Balancers, den Sie ändern möchten.
Klicken Sie auf
Bearbeiten.Klicken Sie auf Backend-Konfiguration.
Klicken Sie für den Backend-Dienst mit dem Internet-NEG-Backend auf
Bearbeiten.Klicken Sie auf Erweiterte Konfigurationen.
Klicken Sie für Benutzerdefinierte Anfrageheader auf Header hinzufügen:
- Geben Sie als Headername
Host
ein. - Geben Sie als Headerwert
FQDN_NEG_ENDPOINT
ein.
- Geben Sie als Headername
Klicken Sie auf Aktualisieren.
Klicken Sie zum Prüfen Ihrer Änderungen auf Prüfen und abschließen und dann auf Aktualisieren.
gcloud
- Verwenden Sie den folgenden Befehl, um den Backend-Dienst so zu konfigurieren, dass jeder Anfrage ein benutzerdefinierter Host hinzugefügt wird.
gcloud compute backend-services update BACKEND_SERVICE \ --custom-request-header "Host: HEADER_VALUE" \ --global
Sorgen Sie außerdem dafür, dass das externe Backend so konfiguriert ist, dass es einen Host
-Header erwartet, damit eingehende Anfragen authentifiziert werden können.
Allgemeine Informationen zu benutzerdefinierten Anfrageheadern finden sich unter Benutzerdefinierte Anfrageheader konfigurieren. Informationen zu anderen Authentifizierungsmethoden finden Sie unter Anfragen an das externe Backend authentifizieren.
IAP für den externen Application Load Balancer aktivieren
Hinweis: IAP ist allerdings nicht mit Cloud CDN kompatibel.Sie können IAP so konfigurieren, dass es aktiviert oder deaktiviert (Standard) wird. Wenn diese Option aktiviert ist, müssen Werte für oauth2-client-id
und oauth2-client-secret
angegeben werden.
Aktualisieren Sie zum Aktivieren von IAP den Back-End-Dienst so, dass das Flag --iap=enabled
mit oauth2-client-id
und oauth2-client-secret
enthalten ist.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Optional können Sie IAP für eine Compute Engine-Ressource aktivieren. Verwenden Sie dazu die Google Cloud Console, die gcloud CLI oder die API.
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 den Points-of-Presence von Cloud CDN finden Sie unter Cache-Speicherorte.
- Einrichtung des Load-Balancers bereinigen