Bei Verwendung von Cloud CDN werden HTTP- und HTTPS-Inhalte häufig über denselben Hostnamen bereitgestellt. Obwohl viele Browser die Verwendung von Transport Layer Security (TLS) erzwingen und die Bereitstellung unsicherer Inhalte untersagen, gibt es dennoch Anwendungsfälle, in denen die nicht sichere und die sichere Bereitstellung über denselben Hostnamen zulässig sein muss. In diesem Artikel wird beschrieben, wie Sie diese Funktion mit Cloud CDN schaffen können.
Herausforderung
Wenn ein Client eine Verbindung mit einem CDN-Edge-Server herstellt, wird das Endnutzer-Übermittlungsprotokoll ausgehandelt. Die meisten herkömmlichen CDN-Plattformen leiten Traffic an ihren jeweiligen Bereitstellungsfootprint weiter, indem sie Folgendes tun:
- Mit einem DNS-CNAME-Eintrag auf einen Domainnamen verweisen, der zum CDN gehört.
- Traffic an eine Teilmenge von Servern weiterleiten, die die TLS-Verhandlung für diesen Domainnamen unterstützen.
Da Cloud CDN in Cloud Load Balancing eingebunden wird, unterscheidet sich der Ansatz von Cloud CDN vom Ansatz konventioneller CDNs. Cloud CDN nutzt die Anycast-IP-Adresse des externen Application Load Balancers. Wenn Sie Cloud CDN konfigurieren, haben Sie eine bestimmte IP-Adresse, an die der Traffic weitergeleitet werden soll. Dies erfordert ein Konstrukt mit einem A-Eintrag (für IPv4) und/oder einem AAAA-Eintrag (für IPv6) in Ihrem DNS-Eintrag anstatt eines CNAME-Eintrags mit einem Wert für den Hostnamen.
Wenn das Frontend des Load-Balancers konfiguriert wird, weist Google Cloud standardmäßig eine sitzungsspezifische IP-Adresse dynamisch zu. Da Sie Ihre HTTP- und HTTPS-Konfigurationen separat konfigurieren müssen, kann es passieren, dass Sie zwei IP-Adressen für Ihre Cloud CDN-Instanz haben. Da dieselbe IP-Adresse für A- oder AAAA-Einträge sowohl für HTTP als auch für HTTPS bestimmt ist, kann dieser Fall in DNS nicht richtig verarbeitet werden.
Lösung
Werden sowohl sichere als auch nicht sichere Inhalte über denselben Hostnamen bereitgestellt, wird der Client an einen Edge-Server weitergeleitet, der aushandeln kann, dass entweder HTTP oder HTTPS verwendet wird. Damit dies mit Cloud CDN funktioniert, können Sie eine IP-Adresse reservieren und die reservierte IP-Adresse an die HTTP- und die HTTPS-Frontend-Konfiguration im externen Application Load Balancer binden.
Das Diagramm zeigt Folgendes:
- Eingehende Anfragen für www.ihrunternehmen.de stammen von Clients, die HTTP/2, HTTPS und HTTP verwenden.
Zwei IP-Adressen sind reserviert, eine für IPv4 und eine für IPv6:
- 34.95.111.204
- [2600:1901:0:b13e::]
Diese beiden IP-Adressen sind in Cloud DNS an www.ihrunternehmen.de gebunden.
Beim Konfigurieren des externen Application Load Balancers umfasst die Frontend-Konfiguration vier Weiterleitungsregeln, die die reservierten IP-Adressen verwenden:
Name Protokoll IP:Port ipv4-http HTTP 34.95.111.204:80 ipv4-https HTTPS 34.95.111.204:443 ipv6-http HTTP [2600:1901:0:b13e::]:80 ipv6-https HTTPS [2600:1901:0:b13e::]:443 Bei Cache-Fehlern in Cloud CDN verteilt der Load-Balancer anhand der in der URL-Zuordnung des Load-Balancers definierten Einstellungen Anfragen an die Backend-Ursprünge.
Schritt 1: Globale externe IP-Adresse reservieren
Erstellen Sie eine IPv4- oder eine IPv6-Adresse (oder beides). Damit IPv4- und IPv6-Adressen unterstützt werden, müssen Sie eine IPv4- und eine IPv6-Adresse erstellen.
Erstellen Sie in Ihrem DNS-Eintrag einen A- oder AAAA-Eintrag, um Traffic an diese reservierte IP-Adresse weiterzuleiten.
Console
- Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
- Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
- Weisen Sie als Name
ipv4-address
zu. - Legen Sie für die Netzwerkstufe Premium fest.
- Setzen Sie die IP-Version auf IPv4.
- Legen Sie für Typ Global fest.
- Klicken Sie auf Reservieren.
Der Load-Balancer verwendet Netzwerk der Premium-Stufe, was erforderlich wird, wenn Cloud CDN aktiviert wird.
gcloud
gcloud compute addresses create ipv4-address \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Wiederholen Sie diesen Schritt für IPv6.
Weitere Informationen finden Sie unter Neue statische externe IP-Adresse reservieren.
Schritt 2: Reservierte IP-Adresse an den Load-Balancer binden
In diesem Abschnitt erfahren Sie, wie Sie Ihrem Load-Balancer die IP-Adressen zuweisen. End-to-End-Anleitungen zum Einrichten des Load-Balancers werden in diesem Artikel nicht behandelt. Ein Beispiel für eine Einrichtung finden Sie unter HTTPS-Load-Balancer einrichten.
Im Abschnitt zur Konfiguration des Front-Ends können Sie das Protokoll auswählen, das zwischen dem Client und dem Load-Balancer verwendet wird.
In diesem Beispiel verwenden Sie sowohl HTTP als auch HTTPS zwischen dem Client und dem Load-Balancer. Daher benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren.
Console
HTTP-Weiterleitungsregel konfigurieren
- Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Wählen Sie den Load-Balancer aus und klicken Sie dann auf Bearbeiten.
- Klicken Sie im linken Bereich auf Frontend-Konfiguration.
- Geben Sie im Feld Name
ipv4-http
ein. - Wählen Sie im Feld Protokoll die Option
HTTP
aus. - Legen Sie
IPv4
als IP-Version fest. - Wählen Sie unter IP-Adresse die zuvor erstellte IP-Adresse
ipv4-address
aus. - Achten Sie darauf, dass der Port auf
80
gesetzt ist, um HTTP-Traffic zuzulassen. - Klicken Sie auf Fertig.
HTTPS-Weiterleitungsregel konfigurieren
- Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Wählen Sie den Load-Balancer aus und klicken Sie dann auf Bearbeiten.
- Klicken Sie im linken Bereich auf Frontend-Konfiguration.
- Geben Sie im Feld Name
ipv4-https
ein. - Wählen Sie im Feld Protokoll die Option
HTTPS
aus. - Legen Sie
IPv4
als IP-Version fest. - Wählen Sie unter IP-Adresse die zuvor erstellte IP-Adresse
ipv4-address
aus. - Achten Sie darauf, dass der Port auf
443
gesetzt ist, um HTTP-Traffic zuzulassen. - Klicken Sie auf die Drop-down-Liste Zertifikat.
- Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatressource haben, die Sie als primäres SSL-Zertifikat verwenden möchten, wählen Sie es aus dem Drop-down-Menü aus.
- Wählen Sie andernfalls Neues Zertifikat erstellen aus.
- Wählen Sie Zertifikat hochladen oder Von Google verwaltetes Zertifikat erstellen aus.
- Wenn Sie Zertifikat hochladen ausgewählt haben, führen Sie diese Schritte aus:
- Geben Sie
www-ssl-cert
als Name ein. - Laden Sie in den entsprechenden Feldern Ihr Public-Key-Zertifikat (.crt-Datei), Ihre Zertifikatskette (.csr-Datei) und Ihren privaten Schlüssel (.key-Datei) hoch.
- Klicken Sie auf Erstellen.
- Geben Sie
- Wenn Sie Von Google verwaltetes Zertifikat erstellen auswählen, geben Sie eine Domain ein.
- So fügen Sie zusätzlich zur primären SSL-Zertifikatsressource weitere Zertifikatsressourcen hinzu:
- Klicken Sie auf Zertifikat hinzufügen.
- Wählen Sie ein Zertifikat aus der Liste Zertifikate aus oder klicken Sie auf Neues Zertifikat erstellen und befolgen Sie die obige Anleitung.
- Klicken Sie auf Fertig.
Wiederholen Sie diese Schritte für IPv6.
Prüfen und abschließen
- Klicken Sie im linken Bereich 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 HTTP-Zielproxy, um Anfragen an Ihre URL-Zuordnung zu leiten.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map
Erstellen Sie einen HTTPS-Zielproxy, um Anfragen an Ihre URL-Zuordnung zu leiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für das HTTPS-Load-Balancing besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map --ssl-certificates=www-ssl-cert
Erstellen Sie für jede der von Ihnen erstellten IP-Adressen jeweils eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
load-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen klassischen Application Load Balancer
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create ipv4-http \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
gcloud compute forwarding-rules create ipv4-https \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=ipv4-address \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
Nachdem die globalen Weiterleitungsregeln erstellt wurden, kann es mehrere Minuten dauern, bis die Konfiguration übernommen wird.
Schritt 3: A- oder AAAA-Eintrag in Ihrer DNS-Zonendatei erstellen
Im letzten Schritt erstellen Sie einen A- und/oder AAAA-Eintrag in Ihrer DNS-Zonendatei, um auf Cloud CDN zu verweisen. Ihr Hostname-Wert antwortet dann mit den reservierten IP-Adressen, die Sie dem Load-Balancer zugewiesen haben.
Jetzt können Sie HTTP und HTTPS über Cloud CDN über demselben Hostnamen bereitstellen.
Optional: Von HTTP zu HTTPS weiterleiten
Wenn Sie HTTP-Anfragen an Ihren HTTPS-Load-Balancer weiterleiten möchten, müssen Sie einen partiellen HTTP-Load-Balancer mit einem Frontend, aber keine Back-Ends hinzufügen. Das Frontend empfängt Anfragen und leitet sie dann an den HTTPS-Load-Balancer weiter. Folgendes ist dafür erforderlich:
- Eine Weiterleitungsregel mit derselben reservierten externen IP-Adresse, die Ihr HTTPS-Load-Balancer verwendet, wie auf dieser Seite beschrieben
- Ein Ziel-HTTP-Proxy, wie auf dieser Seite dargestellt
- Eine URL-Zuordnung, die Traffic zum HTTPS-Load-Balancer weiterleitet
Support
Bei Fragen zu Google Cloud und Cloud CDN wenden Sie sich an das Google Cloud-Vertriebsteam oder kontaktieren Sie den Slack-Kanal der Google Cloud Community und posten Sie eine Notiz im #cloud-cdn-Kanal.
Nächste Schritte
- Informationen zur Speicherung im Cache finden Sie unter Caching-Details.
- Informationen zur Behebung von Problemen mit dem Load-Balancer finden Sie auf der Seite Fehlerbehebung beim HTTP(S)-Load-Balancing.
- Informationen zur Behebung von Cloud CDN-Problemen finden Sie auf der Seite Fehlerbehebung.
- Informationen zur Verwendung von Cloud CDN in GKE finden Sie auf der Cloud CDN-Seite zum Ingress-Feature.
- Lesen Sie Logs ansehen, wenn Sie prüfen möchten, ob Cloud CDN Antworten aus dem Cache bereitstellt.
- Einrichtung des Load-Balancers bereinigen.