Globalen externen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten

In dieser Anleitung erfahren Sie, wie Sie einen externen Application Load Balancer mit einem Backend für eine von Compute Engine verwaltete Instanzgruppe erstellen.

Allgemeine Konzepte finden Sie in der Übersicht über externen Application Load Balancer.

Wenn Sie bereits Nutzer des Application Load Balancers (klassisch) sind und eine neue Bereitstellung mit dem globalen externen Application Load Balancer planen, lesen Sie den Abschnitt Migration zum globalen externen Application Load Balancer planen.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt in der Google Cloud Console aufzurufen.

Anleitung


Load-Balancer-Topologien

Für einen HTTPS-Load-Balancer erstellen Sie die im folgenden Diagramm dargestellte Konfiguration.

Externer Application Load Balancer mit einem MIG-Backend (Managed Instance Group).
Abbildung 1. Externer Load Balancer mit einer verwalteten Instanzgruppe (MIG) im Back-End (zum Vergrößern klicken).

Für einen HTTP-Load-Balancer erstellen Sie die im folgenden Diagramm dargestellte Konfiguration.

Externer Application Load Balancer mit einem MIG-Backend (Managed Instance Group).
Abbildung 2. External Application Load Balancer with a managed instance group (MIG) backend (click to enlarge).

Die Ereignisabfolge in den Diagrammen sieht folgendermaßen aus:

  1. Ein Client sendet eine Inhaltsanfrage an die externe IPv4-Adresse, die in der Weiterleitungsregel definiert ist.
  2. Bei einem HTTPS-Load-Balancer leitet die Weiterleitungsregel die Anfrage an den Ziel-HTTPS-Proxy weiter.

    Bei einem HTTP-Load-Balancer leitet die Weiterleitungsregel die Anfrage an den Ziel-HTTP-Proxy weiter.

  3. Der Zielproxy verwendet die Regel in der URL-Zuordnung, um zu prüfen, ob der einzelne Backend-Dienst alle Anfragen empfängt.

  4. Der Load-Balancer prüft, ob der Backend-Dienst nur eine Instanzgruppe hat, und leitet die Anfrage an eine VM-Instanz in dieser Gruppe weiter.

  5. Die VM sendet die vom Nutzer angeforderten Inhalte.

Vorbereitung

Führen Sie die folgenden Schritte aus, bevor Sie den Load-Balancer erstellen.

SSL-Zertifikatsressource einrichten

Erstellen Sie für einen HTTPS-Load-Balancer 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:

Netzwerk und Subnetze konfigurieren

Gehen Sie so vor, um das Netzwerk und das Subnetz zu erstellen:

Console

Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen.

  3. Geben Sie einen Namen für das Netzwerk ein.

  4. Optional: Führen Sie die folgenden Schritte aus, um interne IPv6-Adressbereiche in Subnetzen in diesem Netzwerk zu konfigurieren:

    1. Wählen Sie für Interner VPC-Netzwerk-IPv6-ULA-Bereich den Wert Aktiviert aus.
    2. Wählen Sie unter Internen IPv6-Bereich zuweisen die Option Automatisch oder Manuell aus.

      Geben Sie einen /48-Bereich aus dem Bereich fd20::/20 ein, wenn Sie Manuell auswählen. Wenn der Bereich verwendet wird, werden Sie aufgefordert, einen anderen Bereich anzugeben.

  5. Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.

  6. Konfigurieren Sie im Abschnitt Neues Subnetz die folgenden Felder:

    1. Geben Sie im Feld Name einen Namen für das Subnetz ein.
    2. Wählen Sie im Feld Region eine Region aus.
    3. Wählen Sie für IP-Stack-Typ IPv4 und IPv6 (Dual-Stack) aus.
    4. Geben Sie im Feld IP-Adressbereich einen IP-Adressbereich ein. Dies ist der primäre IPv4-Bereich für das Subnetz.

      Sie können zwar einen IPv4-Adressbereich für das Subnetz konfigurieren, Sie können aber nicht den Bereich der IPv6-Adressen für das Subnetz auswählen. Google bietet einen (/64) IPv6-CIDR-Block mit fester Größe.

    5. Wählen Sie unter Zugriffstyp IPv6 die Option Extern aus.

  7. Klicken Sie auf Fertig.

  8. Klicken Sie auf Erstellen.

Führen Sie die folgenden Schritte aus, um nur IPv4-Traffic zu unterstützen:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen.

  3. Geben Sie im Feld Name einen Namen für das VPC-Netzwerk ein.

  4. Wählen Sie unter Modus für Subnetzerstellung die Option Benutzerdefiniert aus.

  5. Konfigurieren Sie im Abschnitt Neues Subnetz die folgenden Felder:

    1. Geben Sie im Feld Name einen Namen für das Subnetz ein.
    2. Wählen Sie im Feld Region eine Region aus.
    3. Wählen Sie für IP-Stack-Typ die Option IPv4 (Single-Stack) aus.
    4. Geben Sie im Feld IP-Adressbereich den primären IPv4-Bereich für das Subnetz ein.
  6. Klicken Sie auf Fertig.

  7. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie das VPC-Netzwerk im benutzerdefinierten Modus:

    gcloud compute networks update NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --switch-to-custom-subnet-mode
    
  2. Erstellen Sie im Netzwerk ein Subnetz für Back-Ends.

    Verwenden Sie für IPv4- und IPv6-Traffic den folgenden Befehl, um ein Subnetz zu aktualisieren:

    gcloud compute networks subnets update SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    

    Verwenden Sie für nur IPv4-Traffic den folgenden Befehl:

    gcloud compute networks subnets update SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

Ersetzen Sie Folgendes:

  • NETWORK: der Name des VPC-Netzwerks

  • ULA_IPV6_RANGE: ein /48-Präfix aus dem Bereich fd20::/20, das von Google für interne IPv6-Subnetzbereiche verwendet wird Wenn Sie das Flag --internal-ipv6-range nicht verwenden, wählt Google das Präfix /48 für das Netzwerk aus.

  • SUBNET: ein Name für das Subnetz

  • REGION_A: der Name der Region

Erstellen Sie eine verwaltete Instanzgruppe.

Wenn Sie einen Load-Balancer mit einem Compute Engine-Backend 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. Eine verwaltete Instanzgruppe erstellt jede ihrer verwalteten Instanzen anhand der von Ihnen angegebenen Instanzvorlagen.

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

Bevor Sie eine verwaltete Instanzgruppe erstellen, müssen Sie eine Instanzvorlage erstellen.

Console

Führen Sie die folgenden Schritte aus, um IPv4- und IPv6-Traffic zu unterstützen:

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

    Zu Instanzvorlagen

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Geben Sie für Name lb-backend-template ein.

  4. Wählen Sie in der Liste Region eine Region aus.

  5. Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 10 (Buster) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B. apt-get.

  6. Maximieren Sie Erweiterte Optionen.

  7. Klicken Sie auf Netzwerk und konfigurieren Sie die folgenden Felder:

    1. Geben Sie bei Netzwerk-Tags den Wert allow-health-check, allow-health-check-ipv6 ein.
    2. Klicken Sie im Bereich Netzwerkschnittstellen auf Bearbeiten. Konfigurieren Sie die folgenden Felder:
      • Netzwerk: NETWORK
      • Subnetz: SUBNET
      • IP-Stack-Typ: IPv4 und IPv6 (Dual-Stack)
    3. Klicken Sie auf Fertig.
  8. Maximieren Sie die Verwaltung. Geben Sie im Feld Startskript das folgende Skript ein:

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  9. Klicken Sie auf Erstellen.

gcloud

Führen Sie die folgenden Befehle aus, um IPv4- und IPv6-Traffic zu unterstützen:

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPv4_IPv6 \
  --tags=allow-health-check,allow-health-check-ipv6 \
  --image-family=debian-10 \
  --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://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Terraform

Verwenden Sie zum Erstellen der Instanzvorlage die Ressource google_compute_instance_template.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

Erstellen Sie die verwaltete Instanzgruppe und wählen Sie die Instanzvorlage aus.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie auf Instanzgruppe erstellen.

  3. Wählen Sie links Neue verwaltete Instanzgruppe (zustandslos) 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.

  7. Wählen Sie unter Zone eine Zone aus.

  8. Wählen Sie unter Instanzvorlage die Instanzvorlage lb-backend-template aus.

  9. Wählen Sie für den Autoscaling-Modus die Option Ein: der Gruppe Instanzen hinzufügen und aus ihr entfernen aus.

    Setzen Sie die Mindestanzahl an Instanzen auf 2 und die maximale Anzahl von Instanzen auf 2 oder mehr.

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

gcloud

  1. Erstellen Sie anhand der Vorlage die verwaltete Instanzgruppe.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

Verwenden Sie zum Erstellen der verwalteten Instanzgruppe die Ressource google_compute_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

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. Der Load-Balancing-Dienst leitet den Traffic an den benannten Port weiter. Weitere Informationen finden Sie unter Benannte Ports.

Console

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

    Zu den Instanzgruppen

  2. Klicken Sie auf lb-backend-example.

  3. Klicken Sie auf der Seite Übersicht der Instanzgruppe auf Bearbeiten.

  4. Klicken Sie im Abschnitt Portzuordnung auf Port hinzufügen.

    1. Geben Sie als Portname http ein. Geben Sie als Portnummer 80 ein.
  5. 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 ZONE_A

Terraform

Das Attribut named_port ist im Beispiel für verwaltete Instanzgruppen enthalten.

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 der Firewall-Richtlinien auf.

    Zu den Firewall-Richtlinien

  2. Klicken Sie auf Firewallregel erstellen, um die Firewallregel zu erstellen.

  3. Geben Sie für Name fw-allow-health-check ein.

  4. Wählen Sie ein Netzwerk aus.

  5. Wählen Sie unter Ziele die Option Angegebene Zieltags aus.

  6. Tragen Sie im Feld Ziel-Tags allow-health-check ein.

  7. Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.

  8. Legen Sie unter Quell-IPv4-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=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Terraform

Verwenden Sie zum Erstellen der Firewallregel die Ressource google_compute_firewall.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Firewallregel für die IPv6-Systemdiagnose erstellen

Sie benötigen eine Regel für eingehenden Traffic, die für die Instanzen mit Load Balancing gilt und Traffic von den Systemdiagnosen von Google Cloud zulässt (2600:2d00:1:b029::/64). In diesem Beispiel wird das Ziel-Tag allow-health-check-ipv6 verwendet, um die VM-Instanzen zu identifizieren, auf die sie angewendet wird.

Ohne diese Firewallregeln blockiert die Standardregel zum Ablehnen von eingehendem Traffic den eingehenden Traffic zu den Backend-Instanzen.

Console

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

    Zu den Firewall-Richtlinien

  2. Klicken Sie noch einmal auf Firewallregel erstellen und geben Sie die folgenden Informationen ein, um IPv6-Subnetz-Traffic zuzulassen:

    • Name: fw-allow-lb-access-ipv6
    • Netzwerk: NETWORK
    • Priorität: 1000
    • Trafficrichtung: Eingehend
    • Ziele: Specified target tags
    • Geben Sie im Feld Zieltags allow-health-check-ipv6 ein.
    • Quellfilter: IPv6-Bereiche
    • Quell-IPv6-Bereiche: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protokolle und Ports: Alle zulassen
  3. Klicken Sie auf Erstellen.

gcloud

Um die Kommunikation mit dem Subnetz zuzulassen, erstellen Sie die Firewallregel fw-allow-lb-access-ipv6:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

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.

    Zu externen IP-Adressen

  2. Um eine IPv4-Adresse zu reservieren, klicken Sie auf Externe statische IP-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 \
    --network-tier=PREMIUM \
    --global

Notieren Sie sich die reservierte IPv4-Adresse:

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

Terraform

Verwenden Sie zum Reservieren der IP-Adresse die Ressource google_compute_global_address.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Load-Balancer einrichten

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

Auch wenn Sie HTTPS im Frontend verwenden, können Sie HTTP im Backend verwenden. Google verschlüsselt automatisch Traffic zwischen Google Front Ends (GFEs) und Ihren Back-Ends, die sich in Google Cloud VPC-Netzwerken befinden.

Console

Konfiguration starten

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

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
  4. Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
  5. Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
  6. Wählen Sie unter Generation des Load Balancers die Option Globaler externer Application Load Balancer aus und klicken Sie auf Weiter.
  7. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

Geben Sie unter Name für den Load Balancer web-map-https oder web-map-http ein.

Front-End-Konfiguration

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Legen Sie für Protokoll HTTPS fest.
  3. Wählen Sie IPv4 für IPv4-Traffic aus. Legen Sie für IP-Adresse den zuvor erstellten Wert lb-ipv4-1 fest.
  4. Legen Sie für Port den Wert 443 fest.
  5. Klicken Sie auf Zertifikat und wählen Sie Ihr primäres SSL-Zertifikat aus.
  6. Optional: Erstellen Sie eine SSL-Richtlinie:
    1. Wählen Sie in der Liste SSL-Richtlinie die Option Richtlinie erstellen aus.
    2. Legen Sie als Name der SSL-Richtlinie my-ssl-policy fest.
    3. Wählen Sie als Mindest-TLS-Version die Option TLS 1.0 aus.
    4. Wählen Sie als Profil Modern aus. Anschließend werden Aktivierte Features und Deaktivierte Features angezeigt.
    5. Klicken Sie auf Speichern.
    Wenn Sie keine SSL-Richtlinien erstellt haben, wird eine SSL-Standardrichtlinie angewendet.
  7. Optional: Klicken Sie das Kästchen HTTP-zu-HTTPS-Weiterleitung aktivieren an, um 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 eingehenden 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.

  8. Klicken Sie auf Fertig.

Backend-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie unter Backend-Dienste und Backend-Buckets erstellen oder auswählen die Option Backend-Dienste > Backend-Dienst erstellen aus.
  3. Fügen Sie einen Namen für Ihren Backend-Dienst hinzu, z. B. web-backend-service.
  4. Wählen Sie in der Liste Richtlinie zur IP-Adressauswahl die Option IPv6 bevorzugen aus.
  5. Wählen Sie unter Protokoll die Option HTTP aus.
  6. Geben Sie für Benannter Port http ein.
  7. Wählen Sie dann unter Backends > Neues Backend > Instanzgruppe die Instanzgruppe lb-backend-example aus.
  8. Geben Sie als Portnummern 80 ein.
  9. Behalten Sie die anderen Standardeinstellungen bei.
  10. 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.
  11. Legen Sie als Protokoll HTTP fest und klicken Sie dann auf Speichern.
  12. Optional: Konfigurieren Sie eine Standard-Backend-Sicherheitsrichtlinie. Die Standardsicherheitsrichtlinie drosselt den Traffic über einen vom Nutzer konfigurierten Schwellenwert. Weitere Informationen zu Standardsicherheitsrichtlinien finden Sie in der Übersicht zur Ratenbegrenzung.

    1. Wenn Sie die standardmäßige Google Cloud Armor-Sicherheitsrichtlinie deaktivieren möchten, wählen Sie im Menü der Backend-Sicherheitsrichtlinie None aus.
    2. Wählen Sie im Abschnitt Sicherheit die Option Standardsicherheitsrichtlinie aus.
    3. Akzeptieren Sie im Feld Richtlinienname den automatisch generierten Namen oder geben Sie einen Namen für Ihre Sicherheitsrichtlinie ein.
    4. Akzeptieren Sie im Feld Anzahl der Anfragen die Standardanzahl der Anfragen oder geben Sie eine Ganzzahl zwischen 1 und 10,000 ein.
    5. Wählen Sie im Feld Intervall ein Intervall aus.
    6. Wählen Sie im Feld Für Schlüssel erzwingen einen der folgenden Werte aus: Alle, IP-Adresse oder X-Forwarded-For IP-Adresse. Weitere Informationen zu diesen Optionen finden Sie unter Clients für die Ratenbegrenzung identifizieren.
  13. Behalten Sie die anderen Standardeinstellungen bei.
  14. Klicken Sie auf Erstellen.

Routingregeln

Behalten Sie für Routingregeln die Standardeinstellungen bei.

Überprüfen und abschließen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Prüfen Sie die Konfigurationseinstellungen des Load-Balancers.
  3. Optional: Klicken Sie auf Entsprechender Code, um die REST API-Anfrage aufzurufen, die zum Erstellen des Load Balancers verwendet wird.
  4. Klicken Sie auf Erstellen.

Warten Sie, bis der Load-Balancer erstellt ist.

Wenn Sie einen HTTPS-Load Balancer erstellt und das Kästchen HTTP-zu-HTTPS-Weiterleitung aktivieren angeklickt haben, wird auch ein HTTP-Load Balancer mit dem Suffix -redirect erstellt.

  1. Klicken Sie auf den Namen des Load-Balancers.
  2. 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 Backend-Dienst.
    gcloud beta compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=http-basic-check \
        --global
    
  3. Fügen Sie Ihre Instanzgruppe als Backend zum Backend-Dienst hinzu:
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. Erstellen Sie für HTTP eine URL-Zuordnung, um die eingehenden Anfragen an den Backend-Standarddienst weiterzuleiten.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. Erstellen Sie für HTTPS eine URL-Zuordnung, um die eingehenden Anfragen an den Back-End-Standarddienst weiterzuleiten.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

HTTPS-Frontend einrichten

Überspringen Sie diesen Abschnitt für HTTP-Load-Balancer.

  1. Erstellen Sie für HTTPS die globale SSL-Zertifikatsressource, wenn Sie dies noch nicht getan haben, wie in den folgenden Abschnitten gezeigt:
  2. Erstellen Sie für HTTPS einen Ziel-HTTPS-Proxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten. Der Proxy ist der Teil des Load Balancers, der das SSL-Zertifikat für einen HTTPS-Load Balancer enthält, daher laden Sie in diesem Schritt auch Ihr Zertifikat.

    gcloud beta compute target-https-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    

    Ersetzen Sie HTTP_KEEP_ALIVE_TIMEOUT_SEC durch den Wert für das Client-HTTP-Keepalive-Zeitlimit von 5 bis 1.200 Sekunden. Der Standardwert beträgt 610 Sekunden. Dieses Feld ist optional.

  3. Erstellen Sie für HTTPS eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
    gcloud beta compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. Optional: Erstellen Sie für HTTPS eine globale SSL-Richtlinie und hängen Sie sie an den HTTPS-Proxy an.
    So erstellen Sie eine globale SSL-Richtlinie:
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    So hängen Sie die SSL-Richtlinie an den globalen Ziel-HTTPS-Proxy an:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

HTTP-Frontend einrichten

Überspringen Sie diesen Abschnitt für HTTPS-Load-Balancer.

  1. Erstellen Sie für HTTP einen Ziel-HTTP-Proxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten.
    gcloud beta compute target-http-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-http
    

    Ersetzen Sie HTTP_KEEP_ALIVE_TIMEOUT_SEC durch den Wert für das Client-HTTP-Keepalive-Zeitlimit von 5 bis 1.200 Sekunden. Der Standardwert beträgt 610 Sekunden. Dieses Feld ist optional.

  2. Erstellen Sie für HTTP eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
    gcloud beta compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. Verwenden Sie zum Erstellen der Systemdiagnose die Ressource google_compute_health_check.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. Verwenden Sie zum Erstellen des Backend-Dienstes die Ressource google_compute_backend_service.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. Verwenden Sie zum Erstellen der URL-Zuordnung die Ressource google_compute_url_map.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. Verwenden Sie zum Erstellen des Ziel-HTTP-Proxys die Ressource google_compute_target_http_proxy.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. Verwenden Sie zum Erstellen der Weiterleitungsregel die Ressource google_compute_global_forwarding_rule.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

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.

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.

    Load-Balancing aufrufen

  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 Google 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 für HTTPS 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. Nachdem die Google Cloud Console anzeigt, dass die Backend-Instanzen in Ordnung sind, können Sie Ihren Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür https://IP_ADDRESS (oder http://IP_ADDRESS) auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers.
  6. Wenn Sie ein selbst signiertes Zertifikat genutzt haben, um HTTPS zu testen, 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.

gcloud

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

Nach einigen Minuten können Sie die Einrichtung mit dem folgenden curl-Befehl testen.

curl http://IP_ADDRESS

-ODER-

curl https://HOSTNAME

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.

HTTP-Keepalive-Zeitlimit des Clients aktualisieren

Der in den vorherigen Schritten erstellte Load Balancer wurde mit einem Standardwert für das Client-HTTP-Keepalive-Zeitlimit konfiguriert. Folgen Sie der nachstehenden Anleitung, um das HTTP-Keepalive-Zeitlimit des Clients zu aktualisieren.

Console

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

    Load-Balancing aufrufen.

  2. Klicken Sie auf den Namen des Load-Balancers, den Sie ändern möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie auf Frontend-Konfiguration.
  5. Maximieren Sie Erweiterte Funktionen. Geben Sie für HTTP-Keepalive-Zeitlimit ein Zeitlimit zwischen 5 und 1.200 Sekunden ein.
  6. Klicken Sie auf Aktualisieren.
  7. Klicken Sie zum Prüfen Ihrer Änderungen auf Prüfen und abschließen und dann auf Aktualisieren.

gcloud

Aktualisieren Sie bei einem HTTP-Load-Balancer den Ziel-HTTP-Proxy mit dem Befehl gcloud compute target-http-proxies update:

    gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Aktualisieren Sie bei einem HTTPS-Load-Balancer den Ziel-HTTPS-Proxy mit dem Befehl gcloud compute target-https-proxies update:

    gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Ersetzen Sie Folgendes:

  • TARGET_HTTP_PROXY_NAME ist der Name des HTTP-Ziel-Proxys.
  • TARGET_HTTPS_PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC ist das HTTP-Keepalive-Zeitlimit von 5 bis 1.200 Sekunden.

Nächste Schritte

Ähnliche Dokumentation:

Ähnliche Videos: