Regionale externe Application Load Balancer mit freigegebener VPC einrichten

Dieses Dokument zeigt zwei Beispielkonfigurationen zum Einrichten eines regionalen externen Application Load Balancers in einer Umgebung mit freigegebener VPC:

  • Im ersten Beispiel werden alle Load-Balancer-Komponenten und Back-Ends im Dienstprojekt erstellt.
  • Im zweiten Beispiel werden die Frontend-Komponenten und die URL-Zuordnung des Load-Balancers in einem Dienstprojekt erstellt, während der Backend-Dienst und die Backends des Load-Balancers in einem anderen Dienstprojekt erstellt werden. Diese Art der Bereitstellung, bei der die URL-Zuordnung auf einen Backend-Dienst in einem anderen Projekt verweist, wird als projektübergreifender Dienstverweis bezeichnet.

Beide Beispiele erfordern dieselbe Erstkonfiguration, um Berechtigungen zu erteilen und eine freigegebene VPC einzurichten, bevor Sie Load-Balancer erstellen können.

Dies sind nicht die einzigen Konfigurationen für freigegebene VPCs, die vom regionalen externen Application Load Balancer unterstützt werden. Weitere Architekturen mit freigegebener VPC finden Sie unter Architekturen freigegebener VPCs.

Wenn Sie kein freigegebenes VPC-Netzwerk verwenden möchten, lesen Sie die Informationen unter Regionalen externen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten.

Hinweise

  1. Weitere Informationen finden Sie unter Freigegebene VPC – Übersicht.
  2. Weitere Informationen finden Sie unter Übersicht über den externen Application Load Balancer, einschließlich des Abschnitts Architekturen freigegebener VPCs.

Erforderliche Berechtigungen

Das Einrichten eines Load-Balancers in einem freigegebenen VPC-Netzwerk erfordert eine Ersteinrichtung und -bereitstellung durch einen Administrator. Nach der Ersteinrichtung kann ein Dienstprojektinhaber einen der folgenden Schritte ausführen:

  • Stellen Sie alle Komponenten des Load-Balancers und seine Back-Ends in einem Dienstprojekt bereit.
  • Stellen Sie die Backend-Komponenten des Load-Balancers (Backend-Dienst und Backends) in Dienstprojekten bereit, auf die in einer URL-Zuordnung in einem anderen Dienst oder Hostprojekt verwiesen werden kann.

In diesem Abschnitt werden die Berechtigungen zusammengefasst, die zum Einrichten eines Load-Balancers in einem freigegebenen VPC-Netzwerk nach dieser Anleitung erforderlich sind.

Freigegebene VPC einrichten

Die folgenden Rollen sind für die folgenden Aufgaben erforderlich:

  1. Einmalige administrative Aufgaben wie das Einrichten der freigegebenen VPC und das Aktivieren eines Hostprojekts ausführen
  2. Führen Sie administrative Aufgaben aus, die jedes Mal wiederholt werden müssen, wenn Sie ein neues Dienstprojekt aufnehmen möchten. Dies umfasst das Anhängen des Dienstprojekts, das Bereitstellen und Konfigurieren von Netzwerkressourcen und das Gewähren des Zugriffs für den Dienstprojektadministrator.

Diese Aufgaben müssen im Hostprojekt der freigegebenen VPC ausgeführt werden. Wir empfehlen, dass der Administrator der freigegebenen VPC auch der Inhaber des Hostprojekts der freigegebenen VPC ist. Dadurch werden automatisch die Rollen Netzwerkadministrator und Sicherheitsadministrator zugewiesen.

Aufgabe Erforderliche Rolle
Richten Sie eine freigegebene VPC ein, aktivieren Sie das Hostprojekt und gewähren Sie Dienstprojektadministratoren Zugriff Shared VPC-Administrator
Erstellen Sie Subnetze im freigegebenen VPC-Hostprojekt und gewähren Sie Dienstprojektadministratoren Zugriff Netzwerkadministrator
Firewallregeln hinzufügen und löschen Sicherheitsadministrator

Nachdem die Subnetze bereitgestellt wurden, muss der Inhaber des Hostprojekts die Rolle des Netzwerknutzers im Hostprojekt allen Nutzern (in der Regel Dienstprojektadministratoren, -entwickler oder Dienstkonten) zuweisen, die Zugriff auf diese Ressourcen benötigen.

Aufgabe Erforderliche Rolle
VPC-Netzwerke und Subnetze verwenden, die zum Hostprojekt gehören Netzwerknutzer

Diese Rolle kann auf Projektebene oder für einzelne Subnetze gewährt werden. Wir empfehlen, die Rolle für einzelne Subnetze zu gewähren. Durch das Gewähren der Rolle für das Projekt wird Zugriff auf alle aktuellen und zukünftigen Subnetze im VPC-Netzwerk des Hostprojekts gewährt.

Load-Balancer und Back-Ends bereitstellen

Dienstprojektadministratoren benötigen die folgenden Rollen im Dienstprojekt, um Load-Balancing-Ressourcen und Back-Ends zu erstellen. Diese Berechtigungen werden dem Inhaber oder Bearbeiter des Dienstprojekts automatisch erteilt.

Im Dienstprojekt zugewiesene Rollen
Aufgabe Erforderliche Rolle
Load-Balancer-Komponenten erstellen Netzwerkadministrator
Instanzen erstellen Instanzadministrator
SSL-Zertifikate erstellen und ändern Sicherheitsadministrator

Projektübergreifende Backend-Dienste referenzieren

Wenn Ihr Load-Balancer auf Backend-Dienste aus anderen Dienstprojekten verweisen muss, die auch als projektübergreifende Dienstreferenz bezeichnet werden, benötigen Load-Balancer-Administratoren die folgende Rolle im Dienstprojekt, in dem der Backend-Dienst erstellt wird.

Im Dienstprojekt zugewiesene Rollen
Aufgabe Erforderliche Rolle
Berechtigungen zur Verwendung von Diensten in anderen Projekten Load-Balancer-Dienstnutzer

Diese Rolle kann entweder auf Projektebene oder für einzelne Backend-Dienste gewährt werden. Eine Anleitung zum Zuweisen dieser Rolle finden Sie auf dieser Seite im Beispiel für den projektübergreifenden Dienstverweis.

Weitere Informationen zu IAM finden Sie in den folgenden Anleitungen:

Vorbereitung

Führen Sie in diesem Abschnitt die folgenden Schritte aus:

  1. Netzwerk und Subnetze im Hostprojekt konfigurieren.
  2. Freigegebene VPC im Hostprojekt einrichten.

Die Schritte in diesem Abschnitt müssen nicht jedes Mal ausgeführt werden, wenn Sie einen neuen Load-Balancer erstellen möchten. Sie müssen jedoch sicherstellen, dass Sie Zugriff auf die hier beschriebenen Ressourcen haben, bevor Sie mit dem Erstellen des Load-Balancers fortfahren.

Netzwerk und Subnetze im Hostprojekt konfigurieren

Sie benötigen ein freigegebenes VPC-Netzwerk mit zwei Subnetzen: eines für das Frontend und die Back-Ends des Load-Balancers und das andere für die Proxys des Load-Balancers.

In diesem Beispiel werden die folgenden Netzwerke, Regionen und Subnetze verwendet:

  • Netzwerk: Das Netzwerk hat den Namen lb-network.

  • Subnetz für das Frontend und die Back-Ends des Load-Balancers: Ein Subnetz mit dem Namen lb-frontend-and-backend-subnet in der Region us-west1 verwendet 10.1.2.0/24 für seinen primären IP-Bereich.

  • Subnetz für Proxys Ein Subnetz mit dem Namen proxy-only-subnet in der Region us-west1 verwendet 10.129.0.0/23 für seinen primären IP-Bereich.

Subnetz für das Frontend und die Back-Ends des Load-Balancers konfigurieren

Dieser Schritt muss nicht jedes Mal ausgeführt werden, wenn Sie einen neuen Load-Balancer erstellen möchten. Sie müssen nur sicherstellen, dass das Dienstprojekt Zugriff auf ein Subnetz im freigegebenen VPC-Netzwerk hat (zusätzlich zum Nur-Proxy-Subnetz).

Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.

Console

  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 für Name lb-network ein.
  4. Im Bereich Subnetze:

    1. Legen Sie Modus für Subnetzerstellung auf Benutzerdefiniert fest.
    2. Geben Sie im Bereich Neues Subnetz folgende Informationen ein:

      • Name: lb-frontend-and-backend-subnet
      • Region: us-west1

      • IP-Adressbereich: 10.1.2.0/24

    3. Klicken Sie auf Fertig.

  5. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie mit dem Befehl gcloud compute networks create ein VPC-Netzwerk:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Erstellen Sie ein Subnetz im Netzwerk lb-network in der Region us-west1:

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

Terraform

  1. Erstellen Sie ein VPC-Netzwerk:

    # Shared VPC network
    resource "google_compute_network" "lb_network" {
      name                    = "lb-network"
      provider                = google-beta
      project                 = "my-host-project-id"
      auto_create_subnetworks = false
    }

  2. Erstellen Sie ein Subnetz in der Region us-west1:

    # Shared VPC network - backend subnet
    resource "google_compute_subnetwork" "lb_frontend_and_backend_subnet" {
      name          = "lb-frontend-and-backend-subnet"
      provider      = google-beta
      project       = "my-host-project-id"
      region        = "us-west1"
      ip_cidr_range = "10.1.2.0/24"
      role          = "ACTIVE"
      network       = google_compute_network.lb_network.id
    }

Nur-Proxy-Subnetz konfigurieren

Das Nur-Proxy-Subnetz wird von allen regionalen Envoy-basierten Load-Balancern in der Region us-west1 im VPC-Netzwerk lb-network verwendet. Pro Region und Netzwerk kann nur ein Nur-Proxy-Subnetz aktiv sein.

Führen Sie diesen Schritt nicht aus, wenn bereits ein Nur-Proxy-Subnetz in der Region us-west1 in diesem Netzwerk reserviert ist.

Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.

Console

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

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf den Namen des freigegebenen VPC-Netzwerks: lb-network.
  3. Klicken Sie auf Subnetz hinzufügen.
  4. Geben Sie für Name proxy-only-subnet ein.
  5. Wählen Sie bei Region die Option us-west1 aus.
  6. Setzen Sie Zweck auf Regional verwalteter Proxy.
  7. Geben Sie 10.129.0.0/23 als IP-Adressbereich ein.
  8. Klicken Sie auf Hinzufügen.

gcloud

Erstellen Sie das Nur-Proxy-Subnetz mit dem Befehl gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=us-west1 \
    --network=lb-network \
    --range=10.129.0.0/23

Terraform

Erstellen Sie das Nur-Proxy-Subnetz:

# Shared VPC network - proxy-only subnet
resource "google_compute_subnetwork" "proxy_only_subnet" {
  name          = "proxy-only-subnet"
  provider      = google-beta
  project       = "my-host-project-id"
  region        = "us-west1"
  ip_cidr_range = "10.129.0.0/23"
  role          = "ACTIVE"
  purpose       = "REGIONAL_MANAGED_PROXY"
  network       = google_compute_network.lb_network.id
}

Gewähren Sie Dienstprojektadministratoren Zugriff auf das Backend-Subnetz

Dienstprojektadministratoren benötigen Zugriff auf das Subnetz lb-frontend-and-backend-subnet, damit sie die Back-Ends des Load-Balancers bereitstellen können.

Ein Administrator der freigegebenen VPC muss Dienstprojektadministratoren Zugriff auf das Backend-Subnetz gewähren (oder auch Entwicklern, die Ressourcen und Backends bereitstellen, die das Subnetz verwenden). Eine Anleitung finden Sie unter Dienstprojektadministratoren für bestimmte Subnetze.

Firewallregeln im Hostprojekt konfigurieren

In diesem Beispiel werden die folgenden Firewallregeln verwendet:
  • fw-allow-health-check: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und TCP-Traffic von den Google Cloud-Systemen für Systemdiagnosen zulässt (in 130.211.0.0/22 und 35.191.0.0/16). In diesem Beispiel wird das Ziel-Tag load-balanced-backend verwendet, um die Instanzen zu identifizieren, auf die es angewendet werden soll.
  • fw-allow-proxies: Eine Regel für eingehenden Traffic, die für die Instanzen mit Load-Balancing gilt und TCP-Traffic über Ports 80 ,443 und 8080 aus den verwalteten Proxys des Load-Balancers zulässt. In diesem Beispiel wird das Ziel-Tag load-balanced-backend verwendet, um die Instanzen zu identifizieren, auf die sie angewendet werden soll.
Without these firewall rules, the default deny ingress rule blocks incoming traffic to the backend instances.

Alle Schritte in diesem Abschnitt müssen im Hostprojekt ausgeführt werden.

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 Regel zu erstellen, die Google Cloud-Systemdiagnosen zulässt:
    • Name: fw-allow-health-check
    • Netzwerk: lb-network
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Zieltags
    • Zieltags: load-balanced-backend
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 130.211.0.0/22 und 35.191.0.0/16
    • Protokolle und Ports:
      • Wählen Sie Angegebene Protokolle und Ports aus.
      • Prüfen Sie TCP und geben Sie 80 als Portnummer ein.
      • Sie sollten diese Regeln nur auf Protokolle und Ports beschränken, die mit den von Ihren Systemdiagnosen verwendeten übereinstimmen. Wenn Sie tcp:80 für das Protokoll und den Port verwenden, kann Google Cloud mit HTTP auf Port 80 Ihre VMs kontaktieren. Es kann jedoch nicht HTTPS auf Port 443 verwenden, um den Kontakt herzustellen.

  3. Klicken Sie auf Erstellen.
  4. Klicken Sie auf Firewallregel erstellen, um die Regel zu erstellen, die Google Cloud-Systemdiagnosen zulässt:
    • Name: fw-allow-proxies
    • Netzwerk: lb-network
    • Trafficrichtung: Eingehend
    • Aktion bei Übereinstimmung: Zulassen
    • Ziele: Angegebene Zieltags
    • Zieltags: load-balanced-backend
    • Quellfilter: IPv4-Bereiche.
    • IPv4-Quellbereiche: 10.129.0.0/23
    • Protokolle und Ports:
      • Wählen Sie Angegebene Protokolle und Ports aus.
      • Prüfen Sie TCP und geben Sie 80, 443, 8080 als Portnummern ein.
  5. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Firewallregel fw-allow-health-check, um Google Cloud-Systemdiagnosen zuzulassen. In diesem Beispiel wird der gesamte TCP-Traffic von Systemdiagnoseprüfern zugelassen. Sie können jedoch Ihren Anforderungen entsprechend eine kleinere Gruppe von Ports konfigurieren:

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp
    
  2. Erstellen Sie die Firewallregel fw-allow-proxies, um Traffic von dem Nur-Proxy-Subnetz zuzulassen, das Ihre Back-Ends erreicht.

    gcloud compute firewall-rules create fw-allow-proxies \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=load-balanced-backend \
       --rules=tcp:80,tcp:443,tcp:8080
    

Terraform

  1. Erstellen Sie eine Firewallregel, um Google Cloud-Systemdiagnosen zuzulassen.

    resource "google_compute_firewall" "fw_allow_health_check" {
      name          = "fw-allow-health-check"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
      }
      target_tags = ["load-balanced-backend"]
    }

  2. Erstellen Sie eine Firewallregel, um Traffic vom Nur-Proxy-Subnetz zuzulassen und Ihre Back-Ends zu erreichen.

    resource "google_compute_firewall" "fw_allow_proxies" {
      name          = "fw-allow-proxies"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["10.129.0.0/23"]
      allow {
        protocol = "tcp"
        ports    = ["80", "443", "8080"]
      }
      target_tags = ["load-balanced-backend"]
    }

Freigegebene VPC im Hostprojekt einrichten

Dieser Schritt umfasst das Aktivieren eines freigegebenen VPC-Hostprojekts, das Freigeben von Subnetzen des Hostprojekts und das Anhängen von Dienstprojekten an das Hostprojekt, damit die Dienstprojekte das freigegebene VPC-Netzwerk verwenden können. Informationen zum Einrichten einer freigegebenen VPC im Hostprojekt finden Sie auf den folgenden Seiten:

In den weiteren Anleitungen wird davon ausgegangen, dass Sie die freigegebene VPC bereits eingerichtet haben. Dazu müssen Sie IAM-Richtlinien für Ihre Organisation einrichten und die Host- und Dienstprojekte festlegen.

Fahren Sie erst fort, wenn Sie die freigegebene VPC eingerichtet und die Host- und Dienstprojekte aktiviert haben.

Load-Balancer im Dienstprojekt konfigurieren

In diesem Beispiel wird ein regionaler externer Application Load Balancer erstellt, bei dem alle Load-Balancing-Komponenten (Weiterleitungsregel, Zielproxy, URL-Zuordnung und Backend-Dienst) und Backends im Dienstprojekt erstellt werden.

Die Netzwerkressourcen des regionalen externen Application Load Balancers wie das Nur-Proxy-Subnetz und das Subnetz für die Backend-Instanzen werden im Hostprojekt erstellt. Die Firewallregeln für die Backend-Instanzen werden auch im Hostprojekt erstellt.

Abbildung 1: Regionaler externer HTTP(S)-Load-Balancer in freigegebener VPC
Abbildung 1. Regionaler externer Application Load Balancer in freigegebener VPC

In diesem Abschnitt erfahren Sie, wie Sie den Load-Balancer und die Back-Ends einrichten. Diese Schritte sollten vom Dienstprojektadministrator (oder einem innerhalb des Dienstprojekts tätigen Entwickler) durchgeführt werden und erfordern keine Einbeziehung des Hostprojektadministrators. Die Schritte in diesem Abschnitt ähneln weitgehend den Standardschritten zum Einrichten regionaler externer Application Load Balancer.

Im Beispiel auf dieser Seite wird explizit eine reservierte IP-Adresse für die Weiterleitungsregel des regionalen externen Application Load Balancers festgelegt, statt die Zuweisung einer sitzungsspezifischen IP-Adresse zuzulassen. Als Best Practice empfehlen wir, IP-Adressen für Weiterleitungsregeln zu reservieren.

Backend einer verwalteten Instanzgruppe erstellen

In diesem Abschnitt erfahren Sie, wie Sie eine Instanzvorlage und ein Backend für eine verwaltete Instanzgruppe erstellen. Der Traffic von Clients wird auf VMs in diesen Instanzgruppen verteilt.

Console

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

    Zu Instanzvorlagen

    1. Klicken Sie auf Instanzvorlage erstellen.
    2. Geben Sie für Name l7-xlb-backend-template ein.
    3. 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. Wenn Sie das Bootlaufwerk ändern müssen, klicken Sie auf Ändern.
      1. Wählen Sie als Betriebssystem die Option Debian aus.
      2. Wählen Sie für Version eines der verfügbaren Debian-Images aus, z. B. Debian GNU/Linux 10 (buster).
      3. Klicken Sie auf Auswählen.
    4. Klicken Sie auf Erweiterte Optionen und dann auf Netzwerk.
    5. Geben Sie die folgenden Netzwerk-Tags ein: load-balanced-backend.
    6. Wählen Sie unter Netzwerkschnittstellen die Option Für mich freigegebene Netzwerke (von Hostprojekt: HOST_PROJECT_ID) aus.
    7. Wählen Sie das Subnetz lb-frontend-and-backend-subnet aus dem Netzwerk lb-network aus.
    8. Klicken Sie auf Verwaltung. Fügen Sie unter 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://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.

  2. Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

    1. Klicken Sie auf Instanzgruppe erstellen.
    2. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
    3. Geben Sie für Name l7-xlb-backend-example ein.
    4. Wählen Sie für Standort die Option Einzelne Zone aus.
    5. Wählen Sie als Region us-west1 aus.
    6. Wählen Sie als Zone us-west1-a aus.
    7. Wählen Sie bei Instanzvorlage die Option l7-xlb-backend-template aus.
    8. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.

      Geben Sie für dieses Beispiel für Autoscaling die folgenden Optionen an:

      • Wählen Sie für Autoscaling-Modus Off:do not autoscale aus.
      • Geben Sie für Maximale Anzahl von Instanzen den Wert 2 ein.

      Optional können Sie im Abschnitt Autoscaling die Instanzgruppe so konfigurieren, dass Instanzen basierend auf der CPU-Auslastung automatisch hinzugefügt oder entfernt werden.

    9. Klicken Sie auf Erstellen.

gcloud

Bei den gcloud-Anleitungen in diesem Handbuch wird davon ausgegangen, dass Sie Cloud Shell oder eine andere Umgebung verwenden, in der Bash installiert ist.

  1. Erstellen Sie mit dem Befehl gcloud compute instance-templates create eine VM-Instanzvorlage mit HTTP-Server.

    gcloud compute instance-templates create l7-xlb-backend-template \
    --region=us-west1 \
    --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --tags=load-balanced-backend \
    --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' \
    --project=SERVICE_PROJECT_ID
    
  2. Erstellen Sie mit dem Befehl gcloud compute instance-groups managed create eine verwaltete Instanzgruppe in der Zone.

    gcloud compute instance-groups managed create l7-xlb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-xlb-backend-template \
        --project=SERVICE_PROJECT_ID
    

IP-Adresse des Load-Balancers im Dienstprojekt reservieren

Reservieren Sie im Dienstprojekt eine regionale statische externe IP-Adresse für den Load-Balancer.

Alle Schritte in diesem Abschnitt müssen im Dienstprojekt ausgeführt werden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Statische Adresse reservieren auf.

    Zur Seite "Statische Adresse reservieren"

  2. Geben Sie einen Namen für die neue Adresse ein.

  3. Wählen Sie für Netzwerkdienststufe die Option Standard aus.

  4. Setzen Sie die IP-Version auf IPv4. IPv6-Adressen sind immer global und können nur mit globalen Load-Balancern verwendet werden.

  5. Wählen Sie unter Typ die Option Regional aus.

  6. Wählen Sie bei Region die Option us-west1 aus.

  7. Übernehmen Sie für die Option Verknüpft mit die Einstellung Keine. Nachdem Sie den Load-Balancer erstellt haben, wird diese IP-Adresse an die Weiterleitungsregel des Load-Balancers angehängt.

  8. Klicken Sie zum Reservieren der IP-Adresse auf Reservieren.

gcloud

Verwenden Sie den Befehl compute addresses create, um eine statische externe IP-Adresse zu reservieren.

gcloud compute addresses create IP_ADDRESS_NAME  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_ID

Dabei gilt:

  • IP_ADDRESS_NAME: der Name, den Sie für diese IP-Adresse vergeben möchten.
  • SERVICE_PROJECT_ID: die Projekt-ID des Dienstprojekts, in dem der Load-Balancer erstellt wird.

Load-Balancer konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie die folgenden regionalen externen Application Load Balancer-Ressourcen erstellen:

  • HTTP-Systemdiagnose
  • Backend-Dienst mit einer verwalteten Instanzgruppe als Backend
  • Eine URL-Zuordnung
  • SSL-Zertifikat (nur für HTTPS erforderlich)
  • Zielproxy
  • Weiterleitungsregel

Proxyverfügbarkeit

Je nach Anzahl der Dienstprojekte, die dasselbe freigegebene VPC-Netzwerk verwenden, werden Kontingente oder Limits möglicherweise schneller ausgeschöpft als im Netzwerkbereitstellungsmodell, in dem jedes Google Cloud-Projekt sein eigenes Netzwerk hostet.

Beispielsweise haben Google Cloud-Regionen manchmal nicht genügend Proxy-Kapazität für einen neuen regionalen externen Application Load Balancer. In diesem Fall gibt die Google Cloud Console beim Erstellen des Load-Balancers eine Warnmeldung zur Proxyverfügbarkeit aus. Sie haben folgende Möglichkeiten, dieses Problem zu beheben:

  • Warten Sie, bis das Kapazitätsproblem behoben ist.
  • Wenden Sie sich an Ihr Google Cloud-Vertriebsteam, um diese Limits zu erhöhen.

Console

Kontext zum Dienstprojekt wechseln

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboard.

    Zum Dashboard

  2. Klicken Sie oben auf der Seite auf die Liste Auswählen aus. Wählen Sie im angezeigten Fenster Auswählen aus das Dienstprojekt aus, in dem Sie den Load-Balancer erstellen möchten.

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 einzelne Region Bereitstellung die Option Am besten für regionale Arbeitslasten aus und klicken Sie auf Weiter.
  6. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

  1. Geben Sie l7-xlb-shared-vpc als Name für den Load-Balancer ein.
  2. Wählen Sie als Region us-west1 aus.
  3. Wählen Sie für das Netzwerk die Option lb-network (aus Projekt: HOST_PROJECT_ID) aus.

    Wenn die Warnung Nur-Proxy-Subnetz im freigegebenen VPC-Netzwerk erforderlich angezeigt wird, prüfen Sie, ob der Administrator des Hostprojekts das proxy-only-subnet in der Region us-west1 im freigegebenen VPC-Netzwerk lb-network erstellt hat. Die Erstellung des Load-Balancers ist auch dann erfolgreich, wenn Sie keine Berechtigung zum Ansehen des Nur-Proxy-Subnetzes auf dieser Seite haben.

  4. Lassen Sie die Seite geöffnet, um fortzufahren.

Frontend konfigurieren

Bei HTTP:

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Klicken Sie auf Frontend-IP-Adresse und -Port hinzufügen.
  3. Legen Sie als Name l7-xlb-forwarding-rule fest.
  4. Legen Sie als Protokoll HTTP fest.
  5. Legen Sie als Port 80 fest.
  6. Für die IP-Adresse, die Sie unter IP-Adresse des Load-Balancers reservieren erstellt haben.

  7. Klicken Sie auf Fertig.

Bei HTTPS:

Wenn Sie HTTPS zwischen dem Client und dem Load-Balancer verwenden, benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht mit regionalen externen Application Load Balancern unterstützt.

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Klicken Sie auf Frontend-IP und Port hinzufügen.
  3. Geben Sie im Feld Name l7-xlb-forwarding-rule ein.
  4. Wählen Sie im Feld Protokoll die Option HTTPS (includes HTTP/2) aus.
  5. Achten Sie darauf, dass der Port auf 443 festgelegt ist, um HTTPS-Traffic zuzulassen.
  6. Wählen Sie die IP-Adresse aus, die Sie unter IP-Adresse des Load-Balancers reservieren erstellt haben.
  7. Klicken Sie auf die Liste Zertifikat.
    1. Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatressource haben, die Sie als primäres SSL-Zertifikat verwenden möchten, wählen Sie es aus dem Menü aus.
    2. Wählen Sie andernfalls Neues Zertifikat erstellen aus.
      1. Geben Sie l7-xlb-cert als Name ein.
      2. Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
        • Public-Key-Zertifikat
        • Zertifikatskette
        • Privater Schlüssel
      3. Klicken Sie auf Erstellen.
  8. So fügen Sie zusätzlich zur primären SSL-Zertifikatsressource weitere Zertifikatsressourcen hinzu:
    1. Klicken Sie auf Zertifikat hinzufügen.
    2. Wählen Sie ein Zertifikat in der Liste Zertifikate aus oder klicken Sie auf Neues Zertifikat erstellen und befolgen Sie die obige Anleitung.
  9. Klicken Sie auf Fertig.

Backend konfigurieren

  1. Klicken Sie auf Backend-Konfiguration.
  2. Wählen Sie im Menü Back-End-Service erstellen oder auswählen die Option Back-End-Service erstellen aus.
  3. Legen Sie als Name für den Back-End-Dienst l7-xlb-backend-service fest.
  4. Setzen Sie den Backend-Typ auf Instanzgruppen.
  5. In the New backend section:
    1. Legen Sie für Instanzgruppe l7-xlb-backend-example fest.
    2. Setzen Sie die Portnummern auf 80.
    3. Setzen Sie den Balancing-Modus auf Auslastung.
    4. Klicken Sie auf Fertig.
  6. Wählen Sie im Abschnitt Systemdiagnose die Option Systemdiagnose erstellen mit den folgenden Parametern aus:
    1. Name: l7-xlb-basic-check
    2. Protokoll: HTTP
    3. Port: 80
  7. Klicken Sie auf Speichern und Fortfahren.
  8. Klicken Sie auf Erstellen.

Routingregeln konfigurieren

  • Klicken Sie auf Routingregeln. Achten Sie darauf, dass l7-xlb-backend-service der einzige Back-End-Dienst für alle nicht übereinstimmenden Hosts und alle nicht übereinstimmenden Pfade ist.

Weitere Informationen zur Trafficverwaltung finden Sie unter Trafficverwaltung einrichten.

Konfiguration prüfen und fertigstellen

  • Klicken Sie auf Erstellen.

gcloud

  1. Definieren Sie die HTTP-Systemdiagnose mit dem Befehl gcloud compute health-checks create http.

    gcloud compute health-checks create http l7-xlb-basic-check \
       --region=us-west1 \
       --use-serving-port \
       --project=SERVICE_PROJECT_ID
    
  2. Definieren Sie den Backend-Dienst mit dem Befehl gcloud compute backend-services create.

    gcloud compute backend-services create l7-xlb-backend-service \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-xlb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  3. Fügen Sie dem Back-End-Dienst mit dem Befehl gcloud compute backend-services add-backend Back-Ends hinzu.

    gcloud compute backend-services add-backend l7-xlb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-xlb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  4. Erstellen Sie die URL-Zuordnung mit dem Befehl gcloud compute url-maps create.

    gcloud compute url-maps create l7-xlb-map \
      --default-service=l7-xlb-backend-service \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  5. Erstellen Sie den Zielproxy.

    Bei HTTP:

    Erstellen Sie für einen HTTP-Load-Balancer den Zielproxy mit dem Befehl gcloud compute target-http-proxies create.

    gcloud compute target-http-proxies create l7-xlb-proxy \
      --url-map=l7-xlb-map \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    

    Bei HTTPS:

    Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht mit regionalen externen Application Load Balancern unterstützt.

    Weisen Sie Ihre Dateipfade den entsprechenden Variablennamen zu.

    export LB_CERT=path to PEM-formatted file
    
    export LB_PRIVATE_KEY=path to PEM-formatted file
    

    Erstellen Sie ein regionales SSL-Zertifikat mit dem Befehl gcloud compute ssl-certificates create.

    gcloud compute ssl-certificates create l7-xlb-cert \
      --certificate=$LB_CERT \
      --private-key=$LB_PRIVATE_KEY \
      --region=us-west1
    

    Verwenden Sie das regionale SSL-Zertifikat, um mit dem Befehl gcloud compute target-https-proxies create einen Zielproxy zu erstellen.

    gcloud compute target-https-proxies create l7-xlb-proxy \
      --url-map=l7-xlb-map \
      --region=us-west1 \
      --ssl-certificates=l7-xlb-cert \
      --project=SERVICE_PROJECT_ID
    
  6. Erstellen Sie die Weiterleitungsregel.

    Bei benutzerdefinierten Netzwerken müssen Sie in der Weiterleitungsregel auf das Subnetz verweisen.

    Verwenden Sie lb-frontend-and-backend-subnet für die IP-Adresse der Weiterleitungsregel. Wenn Sie das Nur-Proxy-Subnetz verwenden, schlägt das Erstellen der Weiterleitungsregel fehl.

    Bei HTTP:

    Verwenden Sie den Befehl gcloud compute forwarding-rules create mit den richtigen Flags.

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-xlb-proxy \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

    Bei HTTPS:

    Erstellen Sie die Weiterleitungsregel mit dem Befehl gcloud compute forwarding-rules create und den richtigen Flags.

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-xlb-proxy \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

Load-Balancer testen

Sobald der Load-Balancing-Dienst 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. Notieren Sie die IP-Adresse des Load-Balancers. Diese IP-Adresse wird in den folgenden Schritten als LB_IP_ADDRESS bezeichnet.
  4. Prüfen Sie im Bereich Backend, 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 Backends nach einigen Minuten nicht als fehlerfrei angezeigt werden, prüfen Sie die Firewallkonfiguration und das Netzwerk-Tag, das Ihren Backend-VMs zugewiesen wurde.
  5. Sobald die Backend-Instanzen in der Google Cloud Console als fehlerfrei angezeigt werden, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür https://LB_IP_ADDRESS (oder http://LB_IP_ADDRESS) auf. Ersetzen Sie LB_IP_ADDRESS durch die IP-Adresse des Load-Balancers.
  6. Wenn Sie ein selbst signiertes Zertifikat zu HTTPS-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 in dieser Anleitung.

gcloud

Notieren Sie sich die reservierte IP-Adresse:

gcloud compute addresses describe IP_ADDRESS_NAME \
    --format="get(address)" \
    --region=us-west1

Sie können Ihren Load-Balancer mit einem Webbrowser testen, indem Sie https://IP_ADDRESS_NAME (oder http://IP_ADDRESS_NAME) aufrufen. Ersetzen Sie IP_ADDRESS_NAME durch die IP-Adresse des Load-Balancers.

Wenn Sie ein selbst signiertes Zertifikat genutzt haben, um HTTPS zu testen, zeigt Ihr Browser eine Warnung an. Sie müssen Ihren Browser ausdrücklich anweisen, ein selbst signiertes Zertifikat zu akzeptieren.

Im Browser sollte eine Seite mit minimalen Informationen zur Backend-Instanz angezeigt werden. Wenn diese Seite im Browser nicht angezeigt wird, prüfen Sie die Konfigurationseinstellungen in dieser Anleitung.

Load-Balancer mit einem projektübergreifenden Backend-Dienst konfigurieren

Das vorherige Beispiel auf dieser Seite zeigt, wie Sie die Bereitstellung einer freigegebenen VPC einrichten, bei der alle Load-Balancer-Komponenten und ihre Back-Ends im Dienstprojekt erstellt werden.

Mit regionalen externen Application Load Balancern können Sie auch Bereitstellungen freigegebener VPC-Netzwerke konfigurieren, bei denen eine URL-Zuordnung in einem Host- oder Dienstprojekt auf Backend-Dienste (und Backends) in mehreren Dienstprojekten in Umgebungen mit freigegebener VPC verweisen kann. Dies wird als projektübergreifender Dienstverweis bezeichnet.

Sie können die Schritte in diesem Abschnitt als Referenz verwenden, um alle hier aufgeführten unterstützten Kombinationen zu konfigurieren:

  • Weiterleitungsregel, Ziel-Proxy und URL-Zuordnung im Hostprojekt und Backend-Dienst in einem Dienstprojekt
  • Weiterleitungsregel, Ziel-Proxy und URL-Zuordnung in einem Dienstprojekt und Backend-Dienst in einem anderen Dienstprojekt

Der projektübergreifende Dienstverweis kann mit Instanzgruppen, serverlosen NEGs oder anderen unterstützten Backend-Typen verwendet werden. Wenn Sie serverlose NEGs verwenden, müssen Sie eine VM in dem VPC-Netzwerk erstellen, in dem Sie das Frontend des Load-Balancers erstellen möchten. Ein Beispiel finden Sie unter VM-Instanz in einem bestimmten Subnetz erstellen im Abschnitt Regionalen externen Application Load Balancer mit Cloud Run einrichten.

Anforderungen einrichten

In diesem Beispiel wird ein Beispiel-Load-Balancer mit seinem Frontend und Backend in zwei verschiedenen Dienstprojekten konfiguriert.

Wenn Sie es noch nicht getan haben, müssen Sie alle erforderlichen Schritte ausführen, um die freigegebene VPC einzurichten und das Netzwerk sowie die Subnetze und Firewallregeln zu konfigurieren, die für dieses Beispiel erforderlich sind. Eine Anleitung finden Sie in den folgenden Abschnitten am Anfang dieser Seite:

Abbildung 2: Load-Balancer-Frontend und -Backend in verschiedenen Dienstprojekten
Abbildung 2. Load balancer frontend and backend in different service projects

Reservieren Sie die IP-Adresse des Load-Balancers in Dienstprojekt A

Reservieren Sie eine regionale statische externe IP-Adresse für den Load-Balancer in Dienstprojekt A.

Alle Schritte in diesem Abschnitt müssen im Dienstprojekt A ausgeführt werden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Statische Adresse reservieren auf.

    Zur Seite "Statische Adresse reservieren"

  2. Geben Sie als Namen der neuen Adresse cross-ref-ip-address ein.

  3. Wählen Sie für Netzwerkdienststufe die Option Standard aus.

  4. Setzen Sie die IP-Version auf IPv4. IPv6-Adressen sind immer global und können nur mit globalen Load-Balancern verwendet werden.

  5. Wählen Sie unter Typ die Option Regional aus.

  6. Wählen Sie bei Region die Option us-west1 aus.

  7. Übernehmen Sie für die Option Verknüpft mit die Einstellung Keine. Nachdem Sie den Load-Balancer erstellt haben, wird diese IP-Adresse an die Weiterleitungsregel des Load-Balancers angehängt.

  8. Klicken Sie zum Reservieren der IP-Adresse auf Reservieren.

gcloud

Verwenden Sie den Befehl compute addresses create, um eine statische externe IP-Adresse zu reservieren.

gcloud compute addresses create IP_ADDRESS_CROSS_REF  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_A_ID

Dabei gilt:

  • IP_ADDRESS_CROSS_REF ist der Name, den Sie für diese IP-Adresse vergeben möchten.
  • SERVICE_PROJECT_A_ID ist die Projekt-ID des Dienstprojekts A, in dem das Frontend des Load-Balancers erstellt wird.

Backends und Backend-Dienst in Dienstprojekt B erstellen

Alle Schritte in diesem Abschnitt müssen in Dienstprojekt B ausgeführt werden.

Console

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

    Zu Instanzvorlagen

    1. Klicken Sie auf Instanzvorlage erstellen.
    2. Geben Sie einen Namen für die Instanzvorlage ein: cross-ref-backend-template.
    3. 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. Wenn Sie das Bootlaufwerk ändern müssen, klicken Sie auf Ändern.
      1. Wählen Sie als Betriebssystem die Option Debian aus.
      2. Wählen Sie für Version eines der verfügbaren Debian-Images aus, z. B. Debian GNU/Linux 10 (buster).
      3. Klicken Sie auf Auswählen.
    4. Klicken Sie auf Erweiterte Optionen und dann auf Netzwerk.
    5. Geben Sie die folgenden Netzwerk-Tags ein: load-balanced-backend.
    6. Wählen Sie unter Netzwerkschnittstellen die Option Für mich freigegebene Netzwerke (von Hostprojekt: HOST_PROJECT_ID) aus.
    7. Wählen Sie das Subnetz lb-frontend-and-backend-subnet aus dem Netzwerk lb-network aus.
    8. Klicken Sie auf Verwaltung. Fügen Sie unter 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://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.

  2. Erstellen Sie eine verwaltete Instanzgruppe. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

    1. Klicken Sie auf Instanzgruppe erstellen.
    2. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
    3. Geben Sie im Feld Name eine Bezeichnung für die Instanzgruppe ein: cross-ref-ig-backend.
    4. Wählen Sie für Standort die Option Einzelne Zone aus.
    5. Wählen Sie als Region us-west1 aus.
    6. Wählen Sie als Zone us-west1-a aus.
    7. Wählen Sie für Instanzvorlage die Option cross-ref-backend-template aus.
    8. Geben Sie an, wie viele Instanzen die Gruppe umfassen soll.

      Geben Sie für dieses Beispiel für Autoscaling die folgenden Optionen an:

      • Wählen Sie für Autoscaling-Modus Off:do not autoscale aus.
      • Geben Sie für Maximale Anzahl von Instanzen den Wert 2 ein.

      Optional können Sie im Abschnitt Autoscaling die Instanzgruppe so konfigurieren, dass Instanzen basierend auf der CPU-Auslastung automatisch hinzugefügt oder entfernt werden.

    9. Klicken Sie auf Erstellen.

  3. Erstellen Sie einen regionalen Backend-Dienst. In diesem Schritt erstellen wir auch die Systemdiagnose und fügen dem Backend-Dienst Backends hinzu. Öffnen Sie in der Google Cloud Console die Seite Back-Ends.

    Zu Back-Ends

    1. Klicken Sie auf Regionalen Backend-Dienst erstellen.
    2. Geben Sie im Feld Name eine Bezeichnung für den Backend-Dienst ein: cross-ref-backend-service.
    3. Wählen Sie als Region us-west1 aus.
    4. Wählen Sie für Typ des Load-Balancers die Option Regionaler externer Application Load Balancer (EXTERNAL_MANAGED) aus.
    5. Setzen Sie den Backend-Typ auf Instanzgruppen.
    6. Legen Sie im Bereich Back-Ends für Netzwerk den Wert lb-network fest.
    7. Click Add backend and set the following fields:
      1. Legen Sie für die Instanzgruppe cross-ref-ig-backend fest.
      2. Legen Sie für Portnummern den Wert 80 fest.
      3. Setzen Sie den Balancing-Modus auf Auslastung.
      4. Klicken Sie auf Fertig.
    8. Wählen Sie im Abschnitt Systemdiagnose die Option Systemdiagnose erstellen mit den folgenden Parametern aus:
      1. Name: cross-ref-http-health-check
      2. Protokoll: HTTP
      3. Port: 80
      4. Klicken Sie auf Speichern.
    9. Optional: Geben Sie im Abschnitt Berechtigungen hinzufügen die IAM-Hauptkonten (normalerweise eine E-Mail-Adresse) von Load-Balancer-Administratoren aus anderen Projekten ein, damit sie diesen Backend-Dienst für Load-Balancern in ihren eigenen Projekten verwenden können. Ohne diese Berechtigung können Sie keinen projektübergreifenden Dienstverweis verwenden.

      Wenn Sie keine Berechtigung zum Festlegen von Zugriffssteuerungsrichtlinien für Backend-Dienste in diesem Projekt haben, können Sie den Backend-Dienst jetzt erstellen. Ein autorisierter Nutzer kann diesen Schritt später wie in der Gewähren Sie dem Load-Balancer-Administrator Berechtigungen zur Verwendung des Backend-Dienstes ausführen. In diesem Abschnitt wird auch beschrieben, wie Sie Zugriff auf alle Backend-Dienste in diesem Projekt gewähren, damit Sie nicht jedes Mal Zugriff gewähren müssen, wenn Sie einen neuen Backend-Dienst erstellen.

    10. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie mit dem Befehl gcloud compute instance-templates create eine VM-Instanzvorlage mit einem HTTP-Server.

    gcloud compute instance-templates create BACKEND_IG_TEMPLATE \
        --region=us-west1 \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
        --tags=load-balanced-backend \
        --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' \
        --project=SERVICE_PROJECT_B_ID
    

    Dabei gilt:

    • BACKEND_IG_TEMPLATE: Der Name der Instanzgruppenvorlage.
    • SERVICE_PROJECT_B_ID: Die Projekt-ID des Dienstprojekts B, in dem die Backends des Load-Balancers und der Backend-Dienst erstellt werden.
    • HOST_PROJECT_ID: Die Projekt-ID des freigegebenen VPC-Hostprojekts.
  2. Erstellen Sie mit dem Befehl gcloud compute instance-groups managed create eine verwaltete Instanzgruppe in der Zone.

    gcloud compute instance-groups managed create BACKEND_MIG \
        --zone=us-west1-a \
        --size=2 \
        --template=BACKEND_IG_TEMPLATE \
        --project=SERVICE_PROJECT_B_ID
    

    Dabei gilt:

    • BACKEND_MIG: Der Name der Backend-Instanzgruppe.
  3. Definieren Sie die HTTP-Systemdiagnose mit dem Befehl gcloud compute health-checks create http.

    gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
      --region=us-west1 \
      --use-serving-port \
      --project=SERVICE_PROJECT_B_ID
    

    Dabei gilt:

    • HTTP_HEALTH_CHECK_NAME: Der Name für die HTTP-Systemdiagnose.
  4. Definieren Sie den Backend-Dienst mit dem Befehl gcloud compute backend-services create.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=HTTP_HEALTH_CHECK_NAME \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_B_ID
    

    Dabei gilt:

    • BACKEND_SERVICE_NAME: Der Name des Backend-Dienstes, der in Dienstprojekt B erstellt wurde.
  5. Fügen Sie dem Backend-Dienst mit dem Befehl gcloud compute backend-services add-backend Backends hinzu.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --balancing-mode=UTILIZATION \
      --instance-group=BACKEND_MIG \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project=SERVICE_PROJECT_B_ID
    

Load-Balancer-Frontend und URL-Zuordnung in Dienstprojekt A erstellen

Alle Schritte in diesem Abschnitt müssen im Dienstprojekt A ausgeführt werden.

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 einzelne Region Bereitstellung die Option Am besten für regionale Arbeitslasten aus und klicken Sie auf Weiter.
  6. Klicken Sie auf Konfigurieren.

Load-Balancer vorbereiten

  1. Geben Sie den Namen des Load-Balancers ein: cross-ref-l7-xlb-shared-vpc.
  2. Wählen Sie als Region us-west1 aus.
  3. Wählen Sie für das Netzwerk die Option lb-network (aus Projekt: HOST_PROJECT_ID) aus.

    Wenn die Warnung Nur-Proxy-Subnetz im freigegebenen VPC-Netzwerk erforderlich angezeigt wird, prüfen Sie, ob der Administrator des Hostprojekts das proxy-only-subnet in der Region us-west1 im freigegebenen VPC-Netzwerk lb-network erstellt hat. Die Erstellung des Load Balancers ist auch dann erfolgreich, wenn Sie keine Berechtigung zum Ansehen des Nur-Proxy-Subnetzes auf dieser Seite haben.

  4. Lassen Sie die Seite geöffnet, um fortzufahren.

Frontend konfigurieren

Damit der projektübergreifende Dienst verweist, muss das Frontend dasselbe Netzwerk (lb-network) aus dem freigegebenen VPC-Hostprojekt verwenden, mit dem der Backend-Dienst erstellt wurde.

Bei HTTP:

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Geben Sie einen Name für die Weiterleitungsregel ein: cross-ref-http-forwarding-rule.
  3. Legen Sie als Protokoll HTTP fest.
  4. Setzen Sie die Option Subnetzwerk auf lb-frontend-and-backend-subnet.

    Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt.

  5. Wählen Sie die IP-Adresse aus, die Sie unter IP-Adresse des Load-Balancers reservieren mit dem Namen cross-ref-ip-address erstellt haben.

  6. Legen Sie als Port 80 fest.

  7. Klicken Sie auf Fertig.

Bei HTTPS:

Wenn Sie HTTPS zwischen dem Client und dem Load-Balancer verwenden, benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Informationen zum Erstellen von SSL-Zertifikatsressourcen finden Sie unter SSL-Zertifikate. Von Google verwaltete Zertifikate werden derzeit nicht mit regionalen externen Application Load Balancern unterstützt.

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Geben Sie einen Name für die Weiterleitungsregel ein: cross-ref-https-forwarding-rule.
  3. Wählen Sie im Feld Protokoll die Option HTTPS (includes HTTP/2) aus.
  4. Setzen Sie die Option Subnetzwerk auf lb-frontend-and-backend-subnet.

    Wählen Sie nicht das Nur-Proxy-Subnetz für das Frontend aus, auch wenn es sich um eine Option in der Liste handelt.

  5. Wählen Sie die IP-Adresse aus, die Sie unter IP-Adresse des Load-Balancers reservieren mit dem Namen cross-ref-ip-address erstellt haben.

  6. Achten Sie darauf, dass der Port auf 443 festgelegt ist, um HTTPS-Traffic zuzulassen.

  7. Klicken Sie auf die Liste Zertifikat.

    1. Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatsressource haben, die Sie als primäres SSL-Zertifikat verwenden möchten, wählen Sie diese aus dem Menü aus.
    2. Wählen Sie andernfalls Neues Zertifikat erstellen aus.
      1. Geben Sie einen Namen für das SSL-Zertifikat ein.
      2. Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
        • Public-Key-Zertifikat
        • Zertifikatskette
        • Privater Schlüssel
      3. Klicken Sie auf Erstellen.
  8. So fügen Sie zusätzlich zur primären SSL-Zertifikatsressource weitere Zertifikatsressourcen hinzu:

    1. Klicken Sie auf Zertifikat hinzufügen.
    2. Wählen Sie ein Zertifikat aus der Liste Zertifikate aus oder klicken Sie auf Neues Zertifikat erstellen und folgen Sie der vorherigen Anleitung.
  9. Klicken Sie auf Fertig.

Backend konfigurieren

  1. Klicken Sie auf Backend-Konfiguration.
  2. Klicken Sie auf Projektübergreifende Backend-Dienste.
  3. Geben Sie als Projekt-ID die Projekt-ID für Dienstprojekt B ein.
  4. Geben Sie unter Name des Backend-Dienstes den Namen des Backend-Dienstes aus Dienstprojekt B ein, das Sie verwenden möchten. In diesem Beispiel geben Sie cross-ref-backend-service ein.
  5. Klicken Sie auf Backend-Dienst hinzufügen.

Routingregeln konfigurieren

  • Klicken Sie auf Routingregeln. Der cross-ref-backend-service muss der einzige Backend-Dienst für alle nicht übereinstimmenden Hosts und alle nicht übereinstimmenden Pfade sein.

Weitere Informationen zur Trafficverwaltung finden Sie unter Trafficverwaltung einrichten.

Konfiguration prüfen und fertigstellen

  • Klicken Sie auf Erstellen.

Load-Balancer testen

Nachdem Sie den Load-Balancer erstellt haben, testen Sie ihn mithilfe der Schritte unter Load-Balancer testen.

gcloud

  1. Erstellen Sie die URL-Zuordnung und legen Sie den Standarddienst auf den Backend-Dienst in Dienstprojekt B fest.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=projects/SERVICE_PROJECT_B_ID/regions/us-west1/backendServices/BACKEND_SERVICE_NAME \
        --region=us-west1 \
        --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • URL_MAP_NAME: Der Name für die URL-Zuordnung.
    • BACKEND_SERVICE_NAME: Der Name des Backend-Dienstes, der in Dienstprojekt B erstellt wurde.
    • SERVICE_PROJECT_B_ID: Die Projekt-ID des Dienstprojekts B, in dem die Backends und der Backend-Dienst des Load-Balancers erstellt werden.
    • SERVICE_PROJECT_A_ID ist die Projekt-ID des Dienstprojekts A, in dem das Frontend des Load-Balancers erstellt wird.

    Die Erstellung einer URL-Zuordnung schlägt fehl, wenn Sie die Berechtigung compute.backendServices.use für den Backend-Dienst in Dienstprojekt B nicht haben.

  2. Erstellen Sie den Zielproxy.

    Bei HTTP:

    gcloud compute target-http-proxies create HTTP_TARGET_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • HTTP_TARGET_PROXY_NAME: Der Name des HTTP-Ziel-Proxys.

    Bei HTTPS:

    Erstellen Sie ein regionales SSL-Zertifikat mit dem Befehl gcloud compute ssl-certificates create.

    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
      --certificate=PATH_TO_CERTIFICATE \
      --private-key=PATH_TO_PRIVATE_KEY \
      --region=us-west1 \
      --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • SSL_CERTIFICATE_NAME: Der Name der SSL-Zertifikatsressource.
    • PATH_TO_CERTIFICATE: Der Pfad zur lokalen SSL-Zertifikatsdatei im PEM-Format.
    • PATH_TO_PRIVATE_KEY: Der Pfad zum privaten Schlüssel des lokalen SSL-Zertifikats im PEM-Format.

    Verwenden Sie das regionale SSL-Zertifikat, um mit dem Befehl gcloud compute target-https-proxies create einen Zielproxy zu erstellen.

    gcloud compute target-https-proxies create HTTPS_TARGET_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --region=us-west1 \
      --ssl-certificates=SSL_CERTIFICATE_NAME \
      --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • HTTPS_TARGET_PROXY_NAME: Der Name für den Ziel-HTTPS-Proxy.
  3. Erstellen Sie die Weiterleitungsregel. Damit der projektübergreifende Dienst verweist, muss die Weiterleitungsregel dasselbe Netzwerk (lb-network) aus dem freigegebenen VPC-Hostprojekt verwenden, mit dem der Backend-Dienst erstellt wurde.

    Bei HTTP:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=HTTP_TARGET_PROXY_NAME \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • HTTP_FORWARDING_RULE_NAME: Der Name der Weiterleitungsregel, die zur Verarbeitung von HTTP-Traffic verwendet wird.

    Bei HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=HTTPS_TARGET_PROXY_NAME \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    Dabei gilt:

    • HTTPS_FORWARDING_RULE_NAME: Der Name der Weiterleitungsregel, die für die Verarbeitung von HTTPS-Traffic verwendet wird.
  4. Testen Sie den Load-Balancer mit den unter Load-Balancer testen beschriebenen Schritten.

Dem Load-Balancer-Administrator die Berechtigungen erteilen, den Backend-Dienst zu verwenden

Wenn Load-Balancer auf Backend-Dienste in anderen Dienstprojekten verweisen sollen, muss der Load-Balancer-Administrator die Berechtigung compute.backendServices.use haben. Um diese Berechtigung zu erteilen, können Sie die vordefinierte IAM-Rolle „Nutzer von Compute-Load-Balancer-Diensten“ (roles/compute.loadBalancerServiceUser) verwenden. Diese Rolle muss vom Dienstprojektadministrator gewährt werden und kann auf Projektebene oder auf der Ebene eines einzelnen Backend-Dienstes zugewiesen werden.

Dieser Schritt ist nicht erforderlich, wenn Sie beim Erstellen des Backend-Dienstes bereits die erforderlichen Berechtigungen auf Backend-Dienstebene gewährt haben. Sie können entweder diesen Abschnitt überspringen oder weiterlesen, um zu erfahren, wie Sie Zugriff auf alle Backend-Dienste in diesem Projekt gewähren, damit Sie nicht bei jedem Erstellen eines neuen Backend-Dienstes Zugriff gewähren müssen.

In diesem Beispiel muss ein Dienstprojektadministrator aus dem Dienstprojekt B genau einen der folgenden Befehle ausführen, um einem Load-Balancer-Administrator aus Dienstprojekt A die Berechtigung compute.backendServices.use zu erteilen. Dies kann entweder auf Projektebene (für alle Backend-Dienste im Projekt) oder pro Backend-Dienst erfolgen.

Console

Berechtigungen auf Projektebene

Gehen Sie folgendermaßen vor, um allen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.

Sie benötigen die Berechtigungen compute.regionBackendServices.setIamPolicy und resourcemanager.projects.setIamPolicy, um diesen Schritt auszuführen.

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

    Zu den Load-Balancing-Diensten

  2. Wählen Sie im Abschnitt Alle Backend-Dienstberechtigungen (Berechtigungen auf Projektebene) Ihr Projekt aus.

  3. Wenn das Feld "Berechtigungen" nicht sichtbar ist, klicken Sie auf Bereich "Berechtigungen" anzeigen. Der Bereich Berechtigungen auf Projektebene wird rechts geöffnet.

  4. Klicken Sie auf Hauptkonto hinzufügen.

  5. Geben Sie unter Neue Hauptkonten die E-Mail-Adresse oder die andere Kennung des Hauptkontos ein.

  6. Wählen Sie unter Rolle die Rolle Nutzer von Compute-Load-Balancer-Diensten aus der Drop-down-Liste aus.

  7. Optional: Fügen Sie der Rolle eine Bedingung hinzu.

  8. Klicken Sie auf Speichern.

Berechtigungen auf Ressourcenebene für einzelne Backend-Dienste

Gehen Sie folgendermaßen vor, um einzelnen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.

Sie benötigen die Berechtigung compute.regionBackendServices.setIamPolicy, um diesen Schritt auszuführen.

gcloud

Berechtigungen auf Projektebene

Gehen Sie folgendermaßen vor, um allen Backend-Diensten in Ihrem Projekt Berechtigungen zu erteilen.

Sie benötigen die Berechtigungen compute.regionBackendServices.setIamPolicy und resourcemanager.projects.setIamPolicy, um diesen Schritt auszuführen.

gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser"

Berechtigungen auf Ressourcenebene für einzelne Backend-Dienste

Auf Backend-Dienstebene können Dienstprojektadministratoren einen der folgenden Befehle verwenden, um die Rolle „Nutzer von Compute-Load-Balancer-Diensten“ (roles/compute.loadBalancerServiceUser) zuzuweisen.

Sie benötigen die Berechtigung compute.regionBackendServices.setIamPolicy, um diesen Schritt auszuführen.

gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser" \
    --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'

oder

gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser" \
    --project=SERVICE_PROJECT_B_ID \
    --region=us-west1

Wenn Sie diese Befehle verwenden möchten, ersetzen Sie LOAD_BALANCER_ADMIN durch das Hauptkonto des Nutzers, z. B. test-user@gmail.com.

IAM-Berechtigungen können von Ihnen mithilfe von Bedingungen und durch Angabe von Bedingungsattributen auch so konfiguriert werden, dass sie nur für einen Teil der regionalen Backend-Dienste gelten.

Nächste Schritte