Externen HTTP(S)-Load-Balancer mit Hybridkonnektivität einrichten

Auf dieser Seite wird gezeigt, wie Sie einen globalen externen HTTP(S)-Load-Balancer bereitstellen, um Load-Balancing auf Traffic an Netzwerk-Endpunkte anzuwenden, die sich lokal oder in anderen öffentlichen Clouds befinden und über Hybridkonnektivität erreichbar sind.

Nachdem Sie diese Aufgaben abgeschlossen haben, können Sie optional zusätzliche Dienste wie Cloud CDN und Google Cloud Armor sowie erweiterte Features zur Trafficverwaltung aktivieren.

In der Übersicht über NEGs mit Hybrid-Konnektivität werden die Netzwerkanforderungen zum Einrichten von Hybrid-Load-Balancing erläutert.

Einrichtung: Übersicht

Auf dieser Seite wird die folgende Beispielbereitstellung eingerichtet:

Beispiel für externen HTTP(S)-Load-Balancer für Hybridkonnektivität (zum Vergrößern klicken)
Beispiel für externen HTTP(S)-Load-Balancer für Hybridkonnektivität (zum Vergrößern klicken)

Sie müssen Hybridkonnektivität konfigurieren, bevor Sie eine hybride Load-Balancing-Bereitstellung einrichten. In diesem Thema wird die Einrichtung von Hybridkonnektivität nicht behandelt.

Beachten Sie je nach ausgewähltem Produkt (entweder Cloud VPN oder Cloud Interconnect (Dedicated oder Partner)) die entsprechende Produktdokumentation, um Hybridkonnektivität zu konfigurieren.

Berechtigungen

Sie benötigen die folgenden Berechtigungen, um Hybrid-Load-Balancing einzurichten:

  • Mit Google Cloud

    • Berechtigung zum Herstellen von Hybridkonnektivität zwischen Google Cloud und Ihrer lokalen oder sonstigen Cloud-Umgebung. Eine Liste der erforderlichen Berechtigungen finden Sie in der jeweiligen Dokumentation zum Netzwerkverbindungsprodukt.
  • In Ihrer lokalen Umgebung oder sonstigen Cloud-Umgebung außerhalb von Google Cloud

    • Berechtigung zum Konfigurieren von Netzwerkendpunkten, die es Diensten in Ihrer lokalen oder anderen Cloudumgebung ermöglichen, über eine IP:Port-Kombination aus Google Cloud erreichbar zu sein. Weitere Informationen erhalten Sie vom Netzwerkadministrator Ihrer Umgebung.
    • Berechtigung zum Erstellen von Firewallregeln in Ihrer lokalen oder sonstigen Cloud-Umgebung, damit die Systemdiagnose von Google die Endpunkte erreichen kann.

Zum Befolgen der Anleitung auf dieser Seite erstellen Sie außerdem eine Hybridkonnektivitäts-NEG, einen Load-Balancer und zonale NEGs (und ihre Endpunkte), die als Google Cloud-basierte Back-Ends für den Load-Balancer dienen.

Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:

Aufgabe Erforderliche Rolle
Load-Balancer-Komponenten erstellen und ändern Netzwerkadministrator
NEGs erstellen und ändern Compute-Instanzadministrator
Firewallregeln setzen und löschen Sicherheitsadministrator

Hybridkonnektivität einrichten

Ihre Google Cloud-Umgebung, lokale Umgebung oder sonstige Cloud-Umgebung muss über Hybridkonnektivität verbunden sein. Dafür werden entweder Cloud Interconnect-VLAN-Anhänge oder Cloud VPN-Tunnel mit Cloud Router verwendet. Wir empfehlen die Verwendung einer Verbindung mit Hochverfügbarkeit.

Ein Cloud Router, der für das globale dynamische Routing aktiviert ist, erkennt den spezifischen Endpunkt über BGP und programmiert ihn in Ihrem Google Cloud-VPC-Netzwerk. Regionales dynamisches Routing wird nicht unterstützt. Statische Routen werden ebenfalls nicht unterstützt.

Das Google Cloud-VPC-Netzwerk, mit dem Sie entweder Cloud Interconnect oder Cloud VPN konfigurieren, ist dasselbe Netzwerk, das Sie auch zum Konfigurieren der Bereitstellung des Hybrid-Load-Balancing verwenden. Achten Sie darauf, dass die Subnetz-CIDR-Bereiche Ihres VPC-Netzwerks nicht mit Ihren Remote-CIDR-Bereichen in Konflikt stehen. Bei Überschneidung von IP-Adressen haben Subnetzrouten Vorrang vor Remote-Verbindungen.

Weitere Informationen finden Sie unter:

Setzen Sie die Anleitung auf dieser Seite erst fort, wenn Sie Hybridkonnektivität zwischen den Umgebungen eingerichtet haben.

Lokale oder andere Cloud-Umgebung einrichten

Führen Sie die folgenden Schritte aus, um Ihre lokale oder sonstige Cloud-Umgebung für das Hybrid-Load-Balancing einzurichten:

  • Konfigurieren Sie Netzwerkendpunkte, um lokale Dienste in Google Cloud verfügbar zu machen (IP:Port).
  • Konfigurieren Sie Firewallregeln in Ihrer lokalen oder sonstigen Cloud-Umgebung.
  • Konfigurieren Sie Cloud Router so, dass bestimmte erforderliche Routen in Ihrer privaten Umgebung beworben werden.

Netzwerkendpunkte einrichten

Nachdem Sie die Hybridkonnektivität eingerichtet haben, konfigurieren Sie einen oder mehrere Netzwerkendpunkte innerhalb Ihrer lokalen oder sonstigen Cloud-Umgebung, die über Cloud Interconnect oder Cloud VPN mit einer IP:port-Kombination erreichbar ist. Diese IP:port-Kombination wird als einzelner Endpunkt oder als mehrere Endpunkte für die Hybridkonnektivitäts-NEG konfiguriert, die später in diesem Prozess in Google Cloud erstellt wird.

Wenn mehrere Pfade zum IP-Endpunkt vorhanden sind, folgt das Routing dem unter Cloud Router – Übersicht beschriebenen Verhalten.

Firewallregeln einrichten

Die folgenden Firewallregeln müssen in Ihrer lokalen oder sonstigen Cloud-Umgebung erstellt werden:

  • Firewallregeln für eingehenden Traffic erlauben Traffic von der Systemdiagnose von Google an Ihre Endpunkte. Für den externen HTTP(S)-Load-Balancer, den internen HTTP(S)-Load-Balancer, den TCP-Proxy-Load-Balancer und den SSL-Proxy-Load-Balancer sind die zulässigen Bereiche 35.191.0.0/16 und 130.211.0.0/22. Weitere Informationen finden Sie unter Prüfungs-IP-Bereiche und Firewallregeln.
  • Firewallregeln zum Zulassen von eingehendem Traffic, damit Traffic mit Load-Balancing die Endpunkte erreichen kann.

Konfigurieren Sie Cloud Router so, dass die folgenden Routen in Ihrer lokalen oder einer anderen Cloud-Umgebung beworben werden:

  • Die von den Systemdiagnoseprüfungen von Google verwendeten Bereiche: 35.191.0.0/16 und 130.211.0.0/22.

Google Cloud-Umgebung einrichten

Verwenden Sie für die folgenden Schritte dasselbe VPC-Netzwerk, mit dem die Hybridkonnektivität zwischen den Umgebungen konfiguriert wurde.

Firewallregel erstellen

In diesem Beispiel erstellen Sie die folgende Firewallregel:

  • fw-allow-health-check: Eine Regel für eingehenden Traffic, die für Google Cloud-Instanzen mit Load-Balancing gilt und Traffic von der Systemdiagnose 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 verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.

Console

  1. Rufen Sie in der Google Cloud Console die Seite "Firewalls" auf.
    Zur Seite "Firewalls"
  2. Klicken Sie auf Firewallregel erstellen.
    1. Geben Sie als Namen fw-allow-health-check ein.
    2. Wählen Sie unter Netzwerk die Option NETWORK aus.
    3. Wählen Sie unter Ziele Angegebene Ziel-Tags aus.
    4. Tragen Sie im Feld Ziel-Tags allow-health-check ein.
    5. Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
    6. Legen Sie unter Quell-IPv4-Bereiche die Werte 130.211.0.0/22 und 35.191.0.0/16 fest.
    7. Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
    8. Klicken Sie das Kästchen neben tcp an und geben Sie 80 als Portnummer ein.
    9. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Regel fw-allow-health-check-and-proxy, damit der Load-Balancer und die Google Cloud-Systemdiagnosen mit Back-End-Instanzen auf dem TCP-Port 80 kommunizieren können.

    Ersetzen Sie NETWORK durch den Namen Ihres VPC-Netzwerks.

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

Zonale NEG einrichten

Für Google Cloud-basierte Back-Ends sollten Sie mehrere zonale NEGs in derselben Region konfigurieren, in der Sie Hybridkonnektivität konfiguriert haben.

In diesem Beispiel wird eine zonale NEG mit Endpunkten des Typs GCE_VM_IP_PORT in der Region REGION eingerichtet. Erstellen Sie zuerst die VMs. Erstellen Sie dann eine zonale NEG und fügen Sie der NEG die Netzwerkendpunkte der VMs hinzu.

VMs erstellen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „VM-Instanzen” auf.
    Zur Seite „VM-Instanzen”
  2. Klicken Sie auf Instanz erstellen.
  3. Legen Sie als Name vm-a1 fest.
  4. Wählen Sie als Region REGION und dann eine beliebige Zone aus.
  5. Achten Sie im Bereich Bootlaufwerk darauf, dass als Bootlaufwerk-Optionen das Betriebssystem Debian und die Version 10 (Buster) ausgewählt sind. Klicken Sie auf Auswählen, um das Image bei Bedarf zu ändern.
  6. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten und nehmen Sie die folgenden Änderungen vor:

    • Klicken Sie auf Netzwerke und fügen Sie die folgenden Netzwerk-Tags hinzu: allow-ssh und allow-health-check.
    • Klicken Sie unter Netzwerkschnittstellen auf Bearbeiten , nehmen Sie die folgenden Änderungen vor und klicken Sie dann auf Fertig:
      • Netzwerk: NETWORK
      • Subnetz: SUBNET
      • Primäre interne IP: flüchtig (automatisch)
      • Externe IP: sitzungsspezifisch
    • Klicken Sie auf Verwaltung. Kopieren Sie den folgenden Skriptinhalt und fügen Sie ihn im Feld Startskript ein. Der Skriptinhalt ist für alle vier VMs gleich:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      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
      
  7. Klicken Sie auf Erstellen.

  8. Wiederholen Sie die folgenden Schritte, um eine zweite VM zu erstellen. Verwenden Sie dabei die folgende Kombination aus Name und Zone:

    • Name: vm-a2, Zone: ZONE

gcloud

Erstellen Sie die VMs, indem Sie den folgenden Befehl zweimal ausführen und diese Kombinationen für VM_NAME und ZONE verwenden. Der Skriptinhalt ist für beide VMs identisch.

  • VM_NAME von vm-a1 und einer ZONE Ihrer Wahl
  • VM_NAME von vm-a2 und der gleichen ZONE

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=SUBNET \
        --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         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'
    

Zonale NEG erstellen

gcloud

  1. Erstellen Sie mit dem Befehl gcloud compute network-endpoint-groups create eine zonale NEG (mit GCE_VM_IP_PORT-Endpunkten):

    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=SUBNET
        [--default-port=DEFAULT_PORT]
    

    Sie können entweder beim Erstellen der NEG einen DEFAULT_PORT angeben oder im nächsten Schritt eine Portnummer für jeden Endpunkt festlegen.

  2. Fügen Sie Endpunkte zu GCP_NEG_NAME hinzu.

    gcloud compute network-endpoint-groups update GCP_NEG_NAME \
        --zone=GCP_NEG_ZONE \
        --add-endpoint='instance=vm-a1,[port=PORT_VM_A1]' \
        --add-endpoint='instance=vm-a2,[port=PORT_VM_A2]'
    

Hybridkonnektivitäts-NEG einrichten

Verwenden Sie beim Erstellen der NEG eine ZONE, die die geografische Entfernung zwischen Google Cloud und Ihrer lokalen oder sonstigen Cloud-Umgebung minimiert. Wenn Sie beispielsweise einen Dienst in einer lokalen Umgebung in Frankfurt hosten, können Sie beim Erstellen der NEG die Google Cloud-Zone europe-west3-a angeben.

Wenn Sie Cloud Interconnect verwenden, sollte sich die ZONE zum Erstellen der NEG in derselben Region befinden, in der der Cloud Interconnect-VLAN-Anhang für Hybridkonnektivität konfiguriert wurde.

Informationen zu den verfügbaren Regionen und Zonen finden Sie in der Compute Engine-Dokumentation: Verfügbare Regionen und Zonen.

Console

gcloud

  1. Erstellen Sie mit dem Befehl gcloud compute network-endpoint-groups create eine Hybridkonnektivitäts-NEG.

    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. Fügen Sie den Endpunkt zu on-prem-neg hinzu:

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1"
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

Mit diesem Befehl können Sie die Netzwerkendpunkte hinzufügen, die Sie zuvor lokal oder in Ihrer Cloud-Umgebung konfiguriert haben. Wiederholen Sie den Vorgang --add-endpoint so oft wie nötig.

Sie können diese Schritte wiederholen, um bei Bedarf mehrere Hybrid-NEGs zu erstellen.

Load-Balancer konfigurieren

Console

gcloud

  1. Erstellen Sie eine globale statische externe IP-Adresse (), an die externe Clients Traffic senden.
      gcloud compute addresses create LB_IP_ADDRESS_NAME \
          --network-tier=PREMIUM \
          --global
      
  2. Erstellen Sie eine Systemdiagnose für die Back-Ends.
      gcloud beta compute health-checks create http HTTP_HEALTH_CHECK_NAME \
          --use-serving-port
      
  3. Erstellen Sie einen Back-End-Dienst. Sie fügen diesem Back-End-Dienst sowohl die zonale NEG als auch die NEG mit Hybrid-Konnektivität als Back-Ends hinzu.
      gcloud beta compute backend-services create BACKEND_SERVICE \
          --health-checks=HTTP_HEALTH_CHECK_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --global
      
  4. Fügen Sie dem Back-End-Dienst die zonale NEG als Back-End hinzu.
      gcloud beta compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=GCP_NEG_NAME \
          --network-endpoint-group-zone=GCP_NEG_ZONE
       
  5. Fügen Sie dem Back-End-Dienst die serverlose NEG als Back-End hinzu.
      gcloud beta compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=ON_PREM_NEG_NAME \
          --network-endpoint-group-zone=ON_PREM_NEG_ZONE
      
  6. Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Back-End-Dienst weiterzuleiten.
      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-service BACKEND_SERVICE
      
  7. Führen Sie diesen Schritt nur aus, wenn Sie einen HTTPS-Load-Balancer erstellen möchten. Dies ist für HTTP-Load-Balancer nicht erforderlich.
    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. Es empfiehlt sich, von Google verwaltete 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 selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.

    So erstellen Sie eine von Google verwaltete SSL-Zertifikatsressource:
    gcloud beta compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --domains DOMAIN
    
    So erstellen Sie eine selbstverwaltete SSL-Zertifikatressource:
    gcloud beta compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
    
  8. 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 beta compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
        --url-map=URL_MAP_NAME
    
    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 beta compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME
    
  9. Erstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.

    Für einen HTTP-Load-Balancer:
    gcloud beta compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=LB_IP_ADDRESS_NAME \
        --target-http-proxy=TARGET_HTTP_PROXY_NAME \
        --global \
        --ports=80
    
    Für einen HTTPS-Load-Balancer:
    gcloud beta compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --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 Google Domains verwenden, lesen Sie die Informationen auf der Hilfeseite von Google Domains.

Load-Balancer testen

Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic an die IP-Adresse des Load-Balancers senden.

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite „Load-Balancing“
  2. Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.
  3. Notieren Sie sich seine IP-Adresse.
  4. Wenn Sie einen HTTP-Load-Balancer erstellt haben, können Sie ihn mit einem Webbrowser testen. Rufen Sie dafür http://IP_ADDRESS auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers. Sie sollten an den Dienst weitergeleitet werden, den Sie über den Endpunkt bereitgestellt haben.

    Wenn Sie einen HTTPS-Load-Balancer erstellt haben, können Sie ihn mit curl wie im Folgenden gezeigt, testen. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers. Sie sollten an den Dienst weitergeleitet werden, den Sie über den Endpunkt bereitgestellt haben.

   curl -k https://IP_ADDRESS
   

Führen Sie folgenden Befehl aus, um zu prüfen, ob die Endpunkte außerhalb von Google Cloud reagieren:

   curl -k https://IP_ADDRESS/on-prem-service
   

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 Von Google verwaltete SSL-Zertifikate verwenden.

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://test.example.com
   

Nächste Schritte