- Das VPC-Standardnetzwerk (Virtual Private Cloud)
- Von Compute Engine verwaltete Instanzgruppe
- Ein benannter Port, bei dem für Back-End-Traffic Port 80 angegeben ist
- URL-Standardzuordnung
- Einfache Back-End-Systemdiagnose
- Einfache Front-End-Weiterleitungsregel
- Reservierte externe IP-Adresse
- SSL-Zertifikat
Ein inhaltsbasiertes, multiregionales Beispiel, das die Einrichtung von IPv6- und SSL-Zertifikaten umfasst, finden Sie unter Multiregionalen, inhaltsbasierten externen HTTPS-Load-Balancer einrichten.
Allgemeine Konzepte finden Sie in der Übersicht über externes HTTP(S)-Load-Balancing.
Wenn Sie GKE verwenden, wird der Load-Balancer in der Regel vom Kubernetes-Ingress-Controller konfiguriert. Weitere Informationen finden Sie unter Ingress für externes Load-Balancing konfigurieren.
Topologie des HTTPS-Load-Balancers
In dieser Anleitung erstellen Sie die Konfiguration, die im folgenden Diagramm dargestellt wird.
Die Ereignisabfolge im Diagramm sieht folgendermaßen aus:
- Ein Client sendet eine Inhaltsanfrage an die externe IPv4-Adresse, die in der Weiterleitungsregel definiert ist.
- Mit einer Weiterleitungsregel wird die Anfrage an den Ziel-HTTPS-Proxy weitergeleitet.
- Der Zielproxy verwendet die Regel in der URL-Zuordnung, um zu prüfen, ob der einzelne Back-End-Dienst alle Anfragen empfängt.
- Der Load-Balancer prüft, ob der Back-End-Dienst nur eine Instanzgruppe hat, und leitet die Anfrage an eine VM-Instanz in dieser Gruppe weiter.
- Die VM sendet die vom Nutzer angeforderten Inhalte.
Hinweise
Richten Sie Ihr System so ein, dass die Voraussetzungen erfüllt sind.
SSL-Zertifikatsressource einrichten
Erstellen Sie eine SSL-Zertifikatsressource, wie im Folgenden beschrieben:
Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.
In diesem Beispiel wird angenommen, dass Sie bereits eine SSL-Zertifikatsressource mit dem Namen www-ssl-cert
haben.
Berechtigungen einrichten
Sie benötigen die Berechtigung zum Erstellen von Compute Engine-Instanzen, Firewallregeln und reservierten IP-Adressen in einem Projekt, um die Schritte in dieser Anleitung ausführen zu können. Dafür benötigen Sie entweder die Rolle „Inhaber“ oder „Bearbeiter“ für das Projekt oder die folgenden IAM-Rollen für Compute Engine.
Aufgabe | Erforderliche Rolle |
---|---|
Instanzen erstellen | Instanzadministrator |
Firewallregeln setzen und löschen | Sicherheitsadministrator |
Load-Balancer-Komponenten erstellen | Netzwerkadministrator |
Projekt erstellen (optional) | Projektersteller |
Weitere Informationen finden Sie in folgenden Anleitungen:
Verwaltete Instanzgruppe erstellen
Wenn Sie einen Load-Balancer mit einem Compute Engine-Back-End einrichten möchten, müssen sich Ihre VMs in einer Instanzgruppe befinden. In dieser Anleitung wird beschrieben, wie Sie eine verwaltete Instanzgruppe mit Linux-VMs erstellen, auf denen Apache ausgeführt wird, und wie Sie dann das Load-Balancing einrichten.
Die verwaltete Instanzgruppe stellt VMs bereit, auf denen die Back-End-Server eines externen HTTPS-Load-Balancers ausgeführt werden. Zu Demonstrationszwecken stellen Back-Ends ihre eigenen Hostnamen bereit.Console
- Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
- Klicken Sie auf Instanzgruppe erstellen.
- Wählen Sie links Neue verwaltete Instanzgruppe aus.
- Geben Sie für Name
lb-backend-example
ein. - Wählen Sie unter Ort die Option Einzelne Zone aus.
- Wählen Sie unter Region die gewünschte Region aus. In diesem Beispiel wird
us-east1
verwendet. - Wählen Sie als Zone us-east1-b aus.
- Wählen Sie unter Instanzvorlage die Option Neue Instanzvorlage erstellen aus.
- Geben Sie für Name
lb-backend-template
ein. - Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 9 (Stretch) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get
. Fügen Sie unter Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten auf dem Tab Verwaltung das folgende Skript in das Feld Startskript ein.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html
Fügen Sie auf dem Tab Netzwerk die Netzwerk-Tags hinzu:
allow-health-check
Klicken Sie auf Speichern und fortfahren.
Wählen Sie unter Autoscaling-Modus die Option Kein Autoscaling aus.
Geben Sie
2
bei Anzahl der Instanzen ein.Klicken Sie auf Erstellen, um die neue Instanzgruppe zu erstellen.
gcloud
Erstellen Sie die Vorlage.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-9 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Erstellen Sie anhand der Vorlage die verwaltete Instanzgruppe.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template --size=2 --zone=us-east1-b
Benannten Port zur Instanzgruppe hinzufügen
Legen Sie für Ihre Instanzgruppe einen HTTP-Dienst fest und ordnen Sie dem entsprechenden Port einen Portnamen zu. Nach der Konfiguration leitet der Load-Balancer-Dienst den Traffic zum benannten Port weiter.
Console
- Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.
- Klicken Sie auf den Namen Ihrer Instanzgruppe (in diesem Beispiel
lb-backend-example
) und dann auf Gruppe bearbeiten. - Klicken Sie auf Portnamenzuordnung festlegen.
- Klicken Sie auf Zeile hinzufügen.
- Geben Sie als Portname
http
ein. Geben Sie als Portnummer80
ein. - Klicken Sie auf Speichern.
gcloud
gcloud compute instance-groups unmanaged set-named-ports lb-backend-example \ --named-ports http:80 \ --zone us-east1-b
Firewallregel konfigurieren
In diesem Beispiel erstellen Sie die Firewallregel fw-allow-health-check
.
Dies ist eine Ingress-Regel, die Traffic von den Systemdiagnosen von Google Cloud (130.211.0.0/22
und 35.191.0.0/16
) zulässt. In diesem Beispiel wird das Ziel-Tag allow-health-check
zur Identifizierung der VMs verwendet.
Console
- Rufen Sie in der Google Cloud Console die Seite Firewall auf.
- Klicken Sie auf Firewallregel erstellen, um die zweite Firewallregel zu erstellen:
- Geben Sie für Name
fw-allow-health-check
ein. - Wählen Sie unter Netzwerk die Option Standard aus.
- Wählen Sie unter Ziele Angegebene Zieltags aus.
- Tragen Sie im Feld Ziel-Tags
allow-health-check
ein. - Legen Sie für Quellfilter IP ranges fest.
- Legen Sie für Quell-IP-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest. - Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Klicken Sie das Kästchen tcp an und geben Sie
80
als Portnummer ein. - Klicken Sie auf Erstellen.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Externe IP-Adresse reservieren
Nachdem die Instanzen nun ausgeführt werden, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden den Load-Balancer erreichen können.
Console
- Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
- Um eine IPv4-Adresse zu reservieren, klicken Sie auf Statische Adresse reservieren.
- Geben Sie für Name
lb-ipv4-1
ein. - Setzen Sie die Netzwerkdienststufe auf Premium.
- Setzen Sie die IP-Version auf IPv4.
- Setzen Sie Typ auf Global.
- Klicken Sie auf Reservieren.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --global
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Load-Balancer einrichten
In diesem Beispiel verwenden Sie HTTPS zwischen dem Client und dem Load-Balancer. Daher benötigen Sie eine oder mehrere SSL-Zertifikatsressourcen, um den Proxy zu konfigurieren. Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.Console
-
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Klicken Sie unter HTTP(S)-Load-Balancing auf Konfiguration starten.
- Wählen Sie Vom Internet zu meinen VMs aus und klicken Sie auf Weiter.
- Geben Sie als Name des Load-Balancers
web-map-https
ein. - Klicken Sie auf Back-End-Konfiguration.
- Wählen Sie unter Back-End-Dienste und Back-End-Buckets erstellen oder auswählen die Option Back-End-Dienste > Back-End-Dienst erstellen aus.
- Fügen Sie einen Namen für Ihren Back-End-Dienst hinzu, z. B.
web-backend-service
. - Wählen Sie unter Protokoll die Option HTTP aus.
- Geben Sie für Benannter Port
http
ein. - Wählen Sie dann unter Back-Ends > Neues Back-End > Instanzgruppe die Instanzgruppe
lb-backend-example
aus. - Geben Sie als Portnummern
80
ein. - Behalten Sie die anderen Standardeinstellungen bei.
- 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
. - Legen Sie als Protokoll HTTP fest und klicken Sie dann auf Speichern und fortfahren.
- Behalten Sie die anderen Standardeinstellungen bei.
- Klicken Sie auf Erstellen.
- Unter Host- und Pfadregeln behalten Sie die Standardeinstellungen bei.
- Verwenden Sie in der Front-End-Konfiguration die folgenden Werte:
- Legen Sie für Protokoll HTTPS fest.
- Legen Sie für IP-Adresse den zuvor erstellten Wert
lb-ipv4-1
fest. - Achten Sie darauf, dass der Port auf 443 festgelegt ist, damit HTTPS-Traffic zugelassen wird.
- Klicken Sie auf die Drop-down-Liste Zertifikat und wählen Sie Ihr primäres SSL-Zertifikat aus.
- Klicken Sie auf Fertig.
- Klicken Sie auf Prüfen und abschließen.
- Wenn Sie mit der Konfiguration des Load-Balancers fertig sind, klicken Sie auf Erstellen.
- Warten Sie, bis der Load-Balancer erstellt ist.
- Klicken Sie auf den Namen des Load-Balancers.
- Auf dem Bildschirm Load-Balancing-Details wird der IP:Port Ihres Load-Balancers angezeigt. Notieren Sie sich diesen.
gcloud
- Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-basic-check \ --port 80
- Erstellen Sie einen Back-End-Dienst.
gcloud compute backend-services create web-backend-service \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Fügen Sie Ihre Instanzgruppe als Back-End zum Back-End-Dienst hinzu.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=us-east1-b \ --global
- Erstellen Sie eine URL-Zuordnung, um die eingehenden Anfragen an den Back-End-Standarddienst weiterzuleiten.
gcloud compute url-maps create web-map-https \ --default-service web-backend-service
- Wenn Sie dies noch nicht getan haben, erstellen Sie die globale SSL-Zertifikatsressource so:
- Von Google verwaltete SSL-Zertifikatsressourcen erstellen
- Selbstverwaltete SSL-Zertifikatsressource erstellen
Im folgenden Beispiel wird davon ausgegangen, dass Sie bereits eine Zertifikatsdatei namens
certificate-file
und eine private Schlüsseldatei namensprivate-key-file
haben. In diesem Beispiel wird eine SSL-Zertifikatsressource mit dem Namenwww-ssl-cert
erstellt.gcloud compute ssl-certificates create www-ssl-cert \ --certificate=certificate-file \ --private-key=private-key-file \ --global
- Erstellen Sie einen HTTPS-Zielproxy, um Anfragen an Ihre URL-Zuordnung zu leiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für den HTTPS-Load-Balancer besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map web-map-https --ssl-certificates www-ssl-cert
- Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
gcloud compute forwarding-rules create https-content-rule \ --address=lb-ipv4-1\ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
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
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.
- Prüfen Sie im Bereich Back-End, ob die VMs fehlerfrei sind. Die Spalte Fehlerfrei sollte ausgefüllt sein; in diesem Fall sind beide VMs fehlerfrei (
2/2
). Falls sie doch leer ist, aktualisieren Sie zuerst die Seite. Es kann einige Minuten dauern, bis in der Cloud Console angezeigt wird, dass die VMs fehlerfrei sind. Wenn die Back-Ends nach einigen Minuten nicht als fehlerfrei angezeigt werden, prüfen Sie die Firewallkonfiguration und das Netzwerk-Tag, die Ihren Back-End-VMs zugewiesen ist. - Wenn Sie ein von Google verwaltetes Zertifikat verwenden, prüfen Sie, ob der Status der Zertifikatsressource AKTIV ist. Weitere Informationen finden Sie unter Status der von Google verwalteten SSL-Zertifikatsressource.
- Wenn die Cloud Console anzeigt, dass die Back-End-Instanzen fehlerfrei sind, können Sie den Load-Balancer mit einem Webbrowser testen. Rufen Sie dazu
https://IP_ADDRESS
auf. Ersetzen SieIP_ADDRESS
durch die IP-Adresse des Load-Balancers. - Wenn Sie ein selbst signiertes Zertifikat zu Testzwecken genutzt haben, zeigt Ihr Browser eine Warnung an. Sie müssen den Browser ausdrücklich anweisen, ein selbst signiertes Zertifikat zu akzeptieren.
- 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.
Nächste Schritte
- Lesen Sie mehr daüber , wie IAP für GKE aktiviert wird
- Instanzgruppen.
- Mehr über Load-Balancing und Skalierung erfahren