HTTP-zu-HTTPS-Weiterleitung einrichten

Dieses Beispiel zeigt, wie Sie alle Anfragen von Port 80 an Port 443 weiterleiten.

Auf übergeordneter Ebene führen Sie folgende Schritte aus, um HTTP-Traffic an HTTPS weiterzuleiten:

  1. Erstellen Sie HTTPS LB1 (hier web-map-https genannt).
  2. Testen Sie LB1.
  3. Erstellen Sie HTTP LB2 (kein Back-End) (hier web-map-http) mit derselben IP-Adresse, die in LB1 verwendet wird, und einer in der URL-Zuordnung konfigurierten Weiterleitung.
  4. Testen Sie die Weiterleitung.

Wie im folgenden Diagramm dargestellt, ist LB1 ein normaler HTTPS-Load-Balancer mit den erwarteten Load-Balancer-Komponenten.

LB2 ist ein HTTP-Load-Balancer mit derselben IP-Adresse wie in LB1, einer Weiterleitungsanweisung in der URL-Zuordnung und keinem Back-End.

Konfiguration der HTTP-zu-HTTPS-Weiterleitung (zum Vergrößern klicken)
Konfiguration der HTTP-zu-HTTPS-Weiterleitung

Informationen zum Einrichten der HTTP-zu-HTTPS-Weiterleitung für das interne Load-Balancing finden Sie unter HTTP-zu-HTTPS-Weiterleitung für interne HTTP(S)-Load-Balancer einrichten.

Einfachen HTTPS-Load-Balancer einrichten (LB1)

In diesem Beispiel wird beschrieben, wie Sie HTTPS-Load-Balancer einrichten und testen.

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

Ein inhaltsbasiertes, multiregionales Beispiel, das die Einrichtung von IPv6- und SSL-Zertifikaten umfasst, finden Sie unter Multiregionalen, inhaltsbasierten externen HTTPS-Load-Balancer einrichten.

Allgemeine Konzepte finden Sie in der Übersicht über externes HTTP(S)-Load-Balancing.

Wenn Sie GKE verwenden, wird der Load-Balancer in der Regel vom Kubernetes-Ingress-Controller konfiguriert. Weitere Informationen finden Sie unter Ingress für externes Load-Balancing konfigurieren.

Topologie des HTTPS-Load-Balancers

In dieser Anleitung erstellen Sie die Konfiguration, die im folgenden Diagramm dargestellt wird.

Einfaches HTTPS-Load-Balancing (zum Vergrößern klicken)
Einfaches HTTPS-Load-Balancing (zum Vergrößern klicken)

Die Ereignisabfolge im Diagramm sieht folgendermaßen aus:

  1. Ein Client sendet eine Inhaltsanfrage an die externe IPv4-Adresse, die in der Weiterleitungsregel definiert ist.
  2. Der Load-Balancer prüft, ob die Anfrage aus dem Cache verarbeitet werden kann. In diesem Fall stellt der Load-Balancer den angeforderten Inhalt aus dem Cache bereit. Falls nicht, wird die Verarbeitung fortgesetzt.
  3. Mit einer Weiterleitungsregel wird die Anfrage an den Ziel-HTTPS-Proxy weitergeleitet.
  4. Der Zielproxy verwendet die Regel in der URL-Zuordnung, um zu prüfen, ob der einzelne Back-End-Dienst alle Anfragen empfängt.
  5. Der Load-Balancer prüft, ob der Back-End-Dienst nur eine Instanzgruppe hat, und leitet die Anfrage an eine VM-Instanz in dieser Gruppe weiter.
  6. Die VM sendet die vom Nutzer angeforderten Inhalte.
Einfaches HTTP(S)-Load-Balancing mit aktiviertem Cloud CDN (zum Vergrößern klicken)
Einfaches HTTP(S)-Load-Balancing mit aktiviertem Cloud CDN (zum Vergrößern klicken)

Vorbereitung

Richten Sie Ihr System so ein, dass die Voraussetzungen erfüllt sind.

SSL-Zertifikatsressource einrichten

Erstellen Sie eine SSL-Zertifikatsressource, wie im Folgenden beschrieben:

Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.

In diesem Beispiel wird angenommen, dass Sie bereits eine SSL-Zertifikatsressource mit dem Namen www-ssl-cert haben.

Berechtigungen einrichten

Sie benötigen die Berechtigung zum Erstellen von Compute Engine-Instanzen, Firewallregeln und reservierten IP-Adressen in einem Projekt, um die Schritte in dieser Anleitung ausführen zu können. Dafür benötigen Sie entweder die Rolle „Inhaber“ oder „Bearbeiter“ für das Projekt oder die folgenden IAM-Rollen für Compute Engine.

Aufgabe Erforderliche Rolle
Instanzen erstellen Instanzadministrator
Firewallregeln setzen und löschen Sicherheitsadministrator
Load-Balancer-Komponenten erstellen Netzwerkadministrator
Projekt erstellen (optional) Projektersteller

Weitere Informationen finden Sie in folgenden Leitfäden:

Verwaltete Instanzgruppe erstellen

Wenn Sie einen Load-Balancer mit einem Compute Engine-Back-End einrichten möchten, müssen sich Ihre VMs in einer Instanzgruppe befinden. In dieser Anleitung wird beschrieben, wie Sie eine verwaltete Instanzgruppe mit Linux-VMs erstellen, auf denen Apache ausgeführt wird, und wie Sie dann das Load-Balancing einrichten.

Die verwaltete Instanzgruppe stellt VMs bereit, auf denen die Back-End-Server eines externen HTTPS-Load-Balancers ausgeführt werden. Zu Demonstrationszwecken stellen Back-Ends ihre eigenen Hostnamen bereit.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zur Seite „Instanzgruppen“

  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Wählen Sie links Neue verwaltete Instanzgruppe aus.
  4. Geben Sie für Name lb-backend-example ein.
  5. Wählen Sie unter Ort die Option Einzelne Zone aus.
  6. Wählen Sie unter Region die gewünschte Region aus. In diesem Beispiel wird us-east1 verwendet.
  7. Wählen Sie als Zone us-east1-b aus.
  8. Wählen Sie unter Instanzvorlage die Option Neue Instanzvorlage erstellen aus.
  9. Geben Sie für Name lb-backend-template ein.
  10. Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 9 (Stretch) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B. apt-get.
  11. Fügen Sie unter Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten auf dem Tab Verwaltung das folgende Skript in das Feld Startskript ein.

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    
  12. Fügen Sie auf dem Tab Netzwerk die Netzwerk-Tags hinzu: allow-health-check

  13. Klicken Sie auf Speichern und fortfahren.

  14. Wählen Sie unter Autoscaling-Modus die Option Kein Autoscaling aus.

  15. Geben Sie 2 bei Anzahl der Instanzen ein.

  16. Klicken Sie auf Erstellen, um die neue Instanzgruppe zu erstellen.

gcloud

  1. Erstellen Sie die Vorlage.

    gcloud compute instance-templates create lb-backend-template \
       --region=us-east1 \
       --network=default \
       --subnet=default \
       --tags=allow-health-check \
       --image-family=debian-9 \
       --image-project=debian-cloud \
       --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://169.254.169.254/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    
  2. Erstellen Sie anhand der Vorlage die verwaltete Instanzgruppe.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=lb-backend-template --size=2 --zone=us-east1-b
    

Benannten Port zur Instanzgruppe hinzufügen

Legen Sie für Ihre Instanzgruppe einen HTTP-Dienst fest und ordnen Sie dem entsprechenden Port einen Portnamen zu. Nach der Konfiguration leitet der Load-Balancer-Dienst den Traffic zum benannten Port weiter.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zur Seite „Instanzgruppen“

  2. Klicken Sie auf den Namen Ihrer Instanzgruppe (in diesem Beispiel lb-backend-example) und dann auf Gruppe bearbeiten.
  3. Klicken Sie auf Portnamenzuordnung festlegen.
  4. Klicken Sie auf Zeile hinzufügen.
  5. Geben Sie als Portname http ein. Geben Sie als Portnummer 80 ein.
  6. Klicken Sie auf Speichern.

gcloud

Führen Sie den Befehl gcloud compute instance-groups set-named-ports aus.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

Firewallregel konfigurieren

In diesem Beispiel erstellen Sie die Firewallregel fw-allow-health-check. Dies ist eine Ingress-Regel, die Traffic von den Systemdiagnosen von Google Cloud (130.211.0.0/22 und 35.191.0.0/16) zulässt. In diesem Beispiel wird das Ziel-Tag allow-health-check zur Identifizierung der VMs verwendet.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Firewall auf.

    Zur Seite "Firewall"

  2. Klicken Sie auf Firewallregel erstellen, um die zweite Firewallregel zu erstellen:
  3. Geben Sie für Name fw-allow-health-check ein.
  4. Wählen Sie unter Netzwerk die Option Standard aus.
  5. Wählen Sie unter Ziele Angegebene Zieltags aus.
  6. Tragen Sie im Feld Ziel-Tags allow-health-check ein.
  7. Legen Sie für Quellfilter IP ranges fest.
  8. Legen Sie für Quell-IP-Bereiche die Werte 130.211.0.0/22 und 35.191.0.0/16 fest.
  9. Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
  10. Klicken Sie das Kästchen tcp an und geben Sie 80 als Portnummer ein.
  11. Klicken Sie auf Erstellen.

gcloud

gcloud compute firewall-rules create fw-allow-health-check \
    --network=default \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Externe IP-Adresse reservieren

Nachdem die Instanzen nun ausgeführt werden, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden den Load-Balancer erreichen können.

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. Geben Sie für Name lb-ipv4-1 ein.
  4. Setzen Sie die Netzwerkdienststufe auf Premium.
  5. Setzen Sie die IP-Version auf IPv4.
  6. Setzen Sie Typ auf Global.
  7. Klicken Sie auf Reservieren.

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --global

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Load-Balancer einrichten

In diesem Beispiel verwenden Sie HTTPS zwischen dem Client und dem Load-Balancer. Daher benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.

Console

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
  4. Wählen Sie Vom Internet zu meinen VMs aus und klicken Sie auf Weiter.
  5. Geben Sie als Name des Load-Balancers web-map-https ein.
  6. Klicken Sie auf Back-End-Konfiguration.
    1. Wählen Sie unter Back-End-Dienste und Back-End-Buckets erstellen oder auswählen die Option Back-End-Dienste > Back-End-Dienst erstellen aus.
    2. Fügen Sie einen Namen für Ihren Back-End-Dienst hinzu, z. B. web-backend-service.
    3. Wählen Sie unter Protokoll die Option HTTP aus.
    4. Geben Sie für Benannter Port http ein.
    5. Wählen Sie dann unter Back-Ends > Neues Back-End > Instanzgruppe die Instanzgruppe lb-backend-example aus.
    6. Geben Sie als Portnummern 80 ein.
    7. Behalten Sie die anderen Standardeinstellungen bei.
    8. Wählen Sie unter Systemdiagnose die Option Systemdiagnose erstellen aus und fügen Sie einen Namen für die Systemdiagnose hinzu, z. B. http-basic-check.
    9. Legen Sie als Protokoll HTTP fest und klicken Sie dann auf Speichern und fortfahren.
    10. Wählen Sie Cloud CDN aktivieren aus.
    11. Behalten Sie die anderen Standardeinstellungen bei.
    12. Klicken Sie auf Erstellen.
  7. Unter Host- und Pfadregeln behalten Sie die Standardeinstellungen bei.
  8. Verwenden Sie in der Front-End-Konfiguration die folgenden Werte:
    1. Legen Sie für Protokoll HTTPS fest.
    2. Legen Sie für IP-Adresse den zuvor erstellten Wert lb-ipv4-1 fest.
    3. Achten Sie darauf, dass der Port auf 443 festgelegt ist, damit HTTPS-Traffic zugelassen wird.
    4. Klicken Sie auf die Drop-down-Liste Zertifikat und wählen Sie Ihr primäres SSL-Zertifikat aus.
    5. Klicken Sie auf Fertig.
  9. Klicken Sie auf Prüfen und abschließen.
  10. Wenn Sie mit der Konfiguration des Load-Balancers fertig sind, klicken Sie auf Erstellen.
  11. Warten Sie, bis der Load-Balancer erstellt ist.
  12. Klicken Sie auf den Namen des Load-Balancers.
  13. Auf dem Bildschirm Load-Balancing-Details wird der IP:Port Ihres Load-Balancers angezeigt. Notieren Sie sich diesen.

gcloud

  1. Erstellen Sie eine Systemdiagnose.
        gcloud compute health-checks create http http-basic-check \
            --port 80
        
  2. Erstellen Sie einen Back-End-Dienst.
        gcloud compute backend-services create web-backend-service \
            --protocol=HTTP \
            --port-name=http \
            --health-checks=http-basic-check \
            --global
        
  3. Fügen Sie Ihre Instanzgruppe als Back-End zum Back-End-Dienst hinzu.
        gcloud compute backend-services add-backend web-backend-service \
            --instance-group=lb-backend-example \
            --instance-group-zone=us-east1-b \
            --global
        
  4. Erstellen Sie eine URL-Zuordnung, um die eingehenden Anfragen an den Back-End-Standarddienst weiterzuleiten.
        gcloud compute url-maps create web-map-https \
            --default-service web-backend-service
        
  5. Wenn Sie dies noch nicht getan haben, erstellen Sie die globale SSL-Zertifikatsressource so:

    Im folgenden Beispiel wird davon ausgegangen, dass Sie bereits eine Zertifikatsdatei namens certificate-file und eine private Schlüsseldatei namens private-key-file haben. In diesem Beispiel wird eine SSL-Zertifikatsressource mit dem Namen www-ssl-cert erstellt.

        gcloud compute ssl-certificates create www-ssl-cert \
            --certificate=certificate-file \
            --private-key=private-key-file \
            --global
        
  6. 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 den HTTPS-Load-Balancer besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.
        gcloud compute target-https-proxies create https-lb-proxy \
            --url-map web-map-https --ssl-certificates www-ssl-cert
        
  7. Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
        gcloud compute forwarding-rules create https-content-rule \
            --address=lb-ipv4-1\
            --global \
            --target-https-proxy=https-lb-proxy \
            --ports=443
        

Cloud CDN aktivieren

Wenn Sie Cloud CDN beim Erstellen des Back-End-Dienstes nicht bereits aktiviert haben, können Sie dies jetzt tun, indem Sie den Back-End-Dienst aktualisieren:

gcloud compute backend-services update web-backend-service \
    --enable-cdn \
    --cache-mode=CACHE_MODE

Ersetzen Sie CACHE_MODE durch einen der folgenden Werte:

  • CACHE_All_STATIC: speichert statischen Inhalt automatisch im Cache. Antworten, die als nicht im Cache speicherbar gekennzeichnet sind (mit private-, no-store- oder no-cache-Anweisungen in Cache-Control-Antwortheadern), werden nicht im Cache gespeichert. Damit dynamische Inhalte im Cache gespeichert werden können, muss der Inhalt gültige Caching-Header haben. Dies ist das Standardverhalten für alle neuen Cloud CDN-fähigen Back-Ends.

  • USE_ORIGIN_HEADERS (Standardeinstellung): Hiermit wird erzwungen, dass der Ursprung zum Speichern von Inhalten im Cache gültige Caching-Header festlegt. Antworten ohne diese Header werden nicht im Edge-Netzwerk von Google gespeichert und erfordern bei jeder Anfrage einen vollständige Lauf zum Ursprung. Dies kann die Leistung beeinträchtigen und die Last auf dem Ursprungsserver erhöhen. Dies ist die Standardeinstellung für alle vorhandenen Cloud CDN-fähigen Back-Ends.

  • FORCE_CACHE_ALL: Alle Inhalte werden im Cache gespeichert. Sämtliche Anweisungen private, no-store oder no-cache in Cache-Control-Antwortheadern werden ignoriert. Dies kann dazu führen, dass private, personenbezogene Inhalte im Cache gespeichert werden. Daher sollten Sie diese Funktion nur für Back-Ends aktivieren, die keine privaten oder dynamischen Inhalte bereitstellen, beispielsweise Cloud Storage-Buckets.

Wenn Sie statische Antworten von Ihrem Ursprung automatisch im Cache speichern möchten, können Sie die CACHE_ALL_STATICCache-Modus-Einstellung 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 Cache-fähige Inhalte und Nicht Cache-fä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 nicht explizit einen Cache-Modus auswählen, wenn Sie Cloud CDN in einem Back-End aktivieren, sind die API und das gcloud-Befehlszeilentool standardmäßig auf USE_ORIGIN_HEADERS eingestellt und die Cloud Console verwendet standardmäßig CACHE_ALL_STATIC.

An Ihre Instanzen gesendeten Traffic testen

Da der Load-Balancing-Dienst nun ausgeführt wird, können Sie Traffic an die Weiterleitungsregel senden. Dieser wird dann an verschiedene Instanzen verteilt.

Console

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.
  3. Prüfen Sie im Bereich Back-End, ob die VMs fehlerfrei sind. Die Spalte Fehlerfrei sollte ausgefüllt sein; in diesem Fall sind beide VMs fehlerfrei (2/2). Falls sie doch leer ist, aktualisieren Sie zuerst die Seite. Es kann einige Minuten dauern, bis in der Cloud Console angezeigt wird, dass die VMs fehlerfrei sind. Wenn die Back-Ends nach einigen Minuten nicht als fehlerfrei angezeigt werden, prüfen Sie die Firewallkonfiguration und das Netzwerk-Tag, die Ihren Back-End-VMs zugewiesen ist.
  4. Wenn Sie ein von Google verwaltetes Zertifikat verwenden, prüfen Sie, ob der Status der Zertifikatsressource AKTIV ist. Weitere Informationen finden Sie unter Status der von Google verwalteten SSL-Zertifikatsressource.
  5. Wenn die Cloud Console anzeigt, dass die Back-End-Instanzen fehlerfrei sind, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dazu https://IP_ADDRESS auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers.
  6. Wenn Sie ein selbst signiertes Zertifikat zu Testzwecken genutzt haben, zeigt Ihr Browser eine Warnung an. Sie müssen den Browser ausdrücklich anweisen, ein selbst signiertes Zertifikat zu akzeptieren.
  7. Im Browser sollte eine Seite mit Inhalt dargestellt werden, der den Namen der Instanz, die die Seite bereitstellt, und deren Zone enthält (z. B. Page served from: lb-backend-example-xxxx). Wenn der Browser diese Seite nicht anzeigt, prüfen Sie die Konfigurationseinstellungen aus dieser Anleitung.

Cloud CDN deaktivieren

Console

Cloud CDN für einen einzelnen Back-End-Dienst 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. Heben Sie die Auswahl der Kästchen aller Back-End-Dienste auf, die Cloud CDN nicht mehr verwenden sollen.
  4. Klicken Sie auf Aktualisieren.

Cloud CDN für alle Back-End-Dienste 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-services update BACKEND_SERVICE_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 dann wieder aktivieren, bleiben die meisten oder alle im Cache gespeicherten Inhalte möglicherweise zwischengespeichert. Wenn Inhalte aus dem Cache nicht mehr bereitgestellt werden sollen, müssen Sie diese Inhalte entwerten.

Wenn Sie fertig sind, zeigt die Cloud Console Informationen zu Ihrem HTTPS-Load-Balancer so an.

HTTPS-Load-Balancer

Traffic an den HTTPS-Load-Balancer weiterleiten

Nachdem Sie nun LB1 erstellt und verifiziert haben, dass er funktioniert, können Sie LB2 (einen partiellen HTTP-Load-Balancer ohne Back-End) erstellen, um Ihren HTTP-Traffic an LB1 umzuleiten.

In diesem Beispiel wird der Antwortcode 301 verwendet. Sie können aber auch einen anderen Antwortcode nutzen.

Zum Konfigurieren der Weiterleitung können Sie die Google Cloud Console verwenden oder eine YAML-Datei importieren.

Wenn Sie das gcloud-Befehlszeilentool verwenden, müssen die Ziel-HTTP-Proxys auf die URL-Zuordnung verweisen, die Traffic weiterleitet. Wenn Sie die Cloud Console verwenden, wird dies für Sie erledigt.

Console

Konfiguration starten

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

    Load-Balancing aufrufen

  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 web-map-http als Name für den Load-Balancer ein.
  5. Lassen Sie das Fenster geöffnet, um fortzufahren.

Back-End-Konfiguration überspringen

  1. Überspringen Sie den Abschnitt Back-End-Konfiguration.
    Dieser Load-Balancer benötigt kein Back-End.

Weiterleitung in der URL-Zuordnung konfigurieren

  1. Klicken Sie in der linken Spalte des Bildschirms auf Host- und Pfadregeln.
  2. Wählen Sie Erweiterte Host- und Pfadregel (URL-Weiterleitung, URL-Umschreibung) aus.
  3. Wählen Sie unter Aktion die Option Client zu einem anderen Host/Pfad weiterleiten aus.
  4. Wählen Sie unter Pfadweiterleitung die Option Vollständige Pfadweiterleitung aus.
  5. Wählen Sie unter Antwortcode weiterleiten die Option 301 – Dauerhaft verschoben aus.
  6. Wählen Sie unter HTTPS-Weiterleitung die Option Aktivieren aus.
  7. Klicken Sie auf Fertig.
  8. Lassen Sie die Konfigurationsseite des Load-Balancers geöffnet, um fortzufahren.

HTTP-Weiterleitungsregel mit derselben IP-Adresse konfigurieren, die in LB1 verwendet wird

  1. Klicken Sie auf der Konfigurationsseite des Load-Balancers auf Front-End-Konfiguration.
  2. Geben Sie für Name http-content-rule ein.
  3. Legen Sie als Protokoll HTTP fest.
  4. Setzen Sie die IP-Version auf IPv4.
  5. Legen Sie als IP-Adresse die IP-Adresse fest, die Sie für Ihren HTTPS-Load-Balancer verwendet haben.
  6. Achten Sie darauf, dass der Port auf 80 gesetzt ist, um HTTP-Traffic zuzulassen.
  7. Klicken Sie auf Fertig.
  8. Lassen Sie das Fenster geöffnet, um fortzufahren.

Konfiguration prüfen

  1. Klicken Sie im linken Bereich auf Prüfen und abschließen.
  2. Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
  3. Wenn alles korrekt aussieht, klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie eine YAML-Datei vom Typ /tmp/web-map-http.yaml. In diesem Beispiel wird MOVED_PERMANENTLY_DEFAULT als Antwortcode verwendet.

    kind: compute#urlMap
    name: web-map-http
    defaultUrlRedirect:
       redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
       httpsRedirect: True
    
  2. Erstellen Sie die URL-Zuordnung des HTTP-Load-Balancers. Importieren Sie dazu die YAML-Datei. Der Name für diese URL-Zuordnung ist web-map-http.

    gcloud compute url-maps import web-map-http \
       --source /tmp/web-map-http.yaml \
       --global
    

    Wenn Sie eine vorhandene URL-Zuordnung aktualisieren, wird die folgende Eingabeaufforderung angezeigt:

    Url Map [web-map-http] will be overwritten.
    
    Do you want to continue (Y/n)?
    

    Drücken Sie Y, um fortzufahren.

  3. Vergewissern Sie sich, dass die URL-Zuordnung aktualisiert wurde. Die URL-Zuordnung Ihres HTTP-Load-Balancers sollte in etwa so aussehen:

    gcloud compute url-maps describe web-map-http
    
    creationTimestamp: '2020-03-23T10:53:44.976-07:00'
    defaultUrlRedirect:
     httpsRedirect: true
     redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
    fingerprint: 3A5N_RLrED8=
    id: '2020316695093397831'
    kind: compute#urlMap
    name: web-map-http
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http
    
  4. Erstellen Sie einen neuen HTTP-Zielproxy oder aktualisieren Sie einen vorhandenen HTTP-Zielproxy mit web-map-http als URL-Zuordnung.

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

    ODER

    gcloud compute target-http-proxies update http-lb-proxy \
       --url-map=web-map-http \
       --global
    
  5. Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.

    gcloud compute forwarding-rules create http-content-rule \
       --address=lb-ipv4-1 \ # Same IP address used for HTTPS load balancer
       --global \
       --target-http-proxy=http-lb-proxy \
       --ports=80
    

Wenn Sie fertig sind, zeigt die Cloud Console zwei Load-Balancer folgendermaßen an.

Beide Load-Balancer

Die Cloud Console zeigt Informationen zu Ihrem web-map-http-Load-Balancer folgendermaßen an.

HTTP-Load-Balancer

HTTP-zu-HTTPS-Weiterleitung testen

Notieren Sie sich die reservierte IP-Adresse, die Sie für beide Load-Balancer nutzen.

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

In diesem Beispiel wird davon ausgegangen, dass die reservierte IP-Adresse 34.98.77.106 ist. Die URL http://34.98.77.106/ leitet zu https://34.98.77.106/ weiter.

Nach einigen Minuten können Sie die Weiterleitung mit dem folgenden Befehl curl testen. Ersetzen Sie dabei 34.98.77.106 durch Ihre reservierte IP-Adresse.

curl 34.98.77.106:80

Beispielausgabe:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://34.98.77.106/">here</A>.
</BODY></HTML>