In dieser Anleitung wird beschrieben, wie Sie Traffic mit einem externen Application Load Balancer auf Microsoft IIS-Webserver (Internet Information Services) verteilen, die auf Compute Engine-VMs ausgeführt werden, die in verschiedenen Regionen bereitgestellt werden.
Ziel
In dieser Anleitung wird gezeigt, wie Sie den Traffic für die Website www.example.com
mithilfe von Load-Balancing verteilen und dafür sorgen, dass:
- Eingehende Anfragen werden an die nächstgelegene Region weitergeleitet.
- Wenn eine Instanz ausfällt oder ihre Kapazität erreicht, leitet der Load-Balancer Anfragen an andere responsive Instanzen in derselben oder einer anderen Region weiter.
Die Konfiguration für dieses Szenario verwendet einen externen Anwendungs-Load-Balancer, der Anfragen über eine einzige globale IP-Adresse empfängt. Diese IP-Adresse kann jede eingehende Anfrage nach Verbindungstyp (d. h. HTTP oder HTTPS) weiterleiten. Bei HTTPS-Anfragen implementiert der Load-Balancer die SSL- bzw. TLS-Verschlüsselung zwischen dem Client, der die Anfrage sendet, und dem Load-Balancer.
Das folgende Diagramm zeigt die Architektur des Load-Balancers:
Beachten Sie, dass der Load-Balancer mehrere Komponenten umfasst, um eine möglichst effektive Konfiguration sicherzustellen. Eine Beschreibung der Funktion der einzelnen Komponenten finden Sie in der Übersicht über externe Application Load Balancer.
In dieser Anleitung erfahren Sie, wie Sie die folgenden Aufgaben ausführen, um Ihr Ziel zu erreichen:
- Richten Sie die Backend-Instanzen ein.
- Load-Balancing-Dienst erstellen und konfigurieren
- Senden Sie Traffic an die Back-Ends.
- Zugriff auf Back-Ends einschränken
- Ausfall simulieren
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine virtual machine (VM) instances
- Compute Engine persistent disks
- Optional: Google-managed SSL certificate
- Windows Server 2016 machine images
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installieren Sie einen RDP-Client (Remote Desktop Protocol). Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients. Wenn Sie bereits einen RDP-Client installiert haben, können Sie diese Aufgabe überspringen.
- Wählen Sie die Zonen und Regionen aus, in denen Sie Ihre Ressourcen bereitstellen möchten. Im Architekturdiagramm werden Ressourcen angezeigt, die in den verschiedenen Zonen der Regionen "USA" und "EU" bereitgestellt werden. Dies dient nur zu Referenzzwecken. Sie können Ihre Ressourcen in jeder beliebigen Region/Zone bereitstellen.
- Optional: Lesen und verstehen Sie die Übersicht über externe Application Load Balancer.
Backend-Instanzen einrichten
In diesem Abschnitt erstellen Sie zwei Backend-Dienste in unterschiedlichen Regionen. Jeder der Backend-Dienste beinhaltet zwei Backend-Instanzen, die jeweils einen Microsoft IIS-Webserver auf Windows Server 2016 ausführen. Erstellen Sie von einer Serverinstanz ein Festplatten-Image, um eine aufwändige Konfiguration jedes Servers zu vermeiden. Dieses verwenden Sie anschließend für die Erstellung der anderen Serverinstanzen.
Compute Engine-Instanz erstellen und konfigurieren
So erstellen Sie die Instanz als Quell-Image:
Starten Sie im Google Cloud Marketplace eine Instanz von Windows Server 2016, auf der Microsoft IIS in Compute Engine ausgeführt wird, in einer Zone Ihrer Wahl und richten Sie Firewallregeln ein, um externen HTTP-, HTTPS- und RDP-Traffic an Ihre Quell-Image-Instanz zuzulassen:
Rufen Sie in der Google Cloud Console die Cloud Marketplace-Seite ASP.NET Framework auf.
Klicken Sie auf Starten.
Geben Sie im Feld Bereitstellungsname src-img ein.
Wählen Sie im Feld Zone eine Zone aus, in der Sie das Image bereitstellen möchten.
Wählen Sie im Feld Windows Server-Betriebssystemversion die Option 2016 aus.
Wählen Sie im Bereich Netzwerk – Firewall nur die folgenden Optionen aus:
- HTTP-Traffic zulassen
- HTTPS-Traffic zulassen
- Allow RDP traffic
Akzeptieren Sie die Nutzungsbedingungen und klicken Sie auf Weiter.
Warten Sie, bis die Compute Engine-Instanz erstellt ist.
Instanz für Quell-Image konfigurieren
Erstellen Sie zum Konfigurieren der neuen Quell-Image-Instanz einen neuen Windows-Nutzer in der Quell-Image-Instanz und stellen Sie eine RDP-Verbindung her:
Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.
Klicken Sie auf den Namen der Instanz für das Quell-Image (
src-img
).Klicken Sie auf Windows-Passwort festlegen.
Geben Sie im Dialogfeld Neues Windows-Passwort festlegen Ihren Nutzernamen ein und klicken Sie auf Festlegen, um das Nutzerkonto in Ihrer Instanz zu erstellen.
Kopieren Sie das angegebene Passwort und schließen Sie das Dialogfeld.
Klicken Sie auf das Drop-down-Menü RDP und wählen Sie die Option RDP-Datei herunterladen aus, um die RDP-Datei für die Instanz herunterzuladen. Stellen Sie mithilfe dieser Datei die Verbindung zur Instanz mithilfe eines RDP-Clients her. Weitere Informationen finden Sie unter Microsoft Remote Desktop-Clients.
Fügen Sie im IIS-Standardwebverzeichnis eine Standardstartseite hinzu, nachdem Sie eine RDP-Verbindung zur Instanz für das Quell-Image hergestellt haben:
Öffnen Sie die PowerShell als Administrator in der Instanz für das Quell-Image.
Erstellen Sie eine neue Startseite im Standard-IIS-Webverzeichnis
C:\inetpub\wwwroot
:Echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' > C:\inetpub\wwwroot\index.html
Prüfen, ob die Instanz für das Quell-Image Inhalte senden kann
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf die externe IP-Adresse der Instanz, um zu prüfen, ob Sie Inhalte an die von Ihnen erstellte Startseite sendet.
Ein wiederverwendbares Windows Server 2016-Image der Instanz für das Quell-Image erstellen
Nachdem Sie sichergestellt haben, dass die Instanz für das Quell-Image ordnungsgemäß konfiguriert ist und Inhalte senden kann, erstellen Sie so von der persistenten Root-Festplatte der Instanz ein wiederverwendbares Festplatten-Image:
- Öffnen Sie die PowerShell als Administrator in der Instanz für das Quell-Image.
Führen Sie den folgenden Befehl aus, um das System für den Klonvorgang vorzubereiten:
GCESysprep
Nach Abschluss des
GCESysprep
-Vorgangs wird die Verbindung zu Ihrer RDP-Sitzung automatisch getrennt.Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um die Quelleninstanz zu löschen und gleichzeitig das persistente Root-Laufwerk beizubehalten.
gcloud compute instances delete src-img \ --keep-disks=boot \ --zone=INSTANCE_ZONE
Ersetzen Sie
INSTANCE_ZONE
durch die Zone Ihrer Quellinstanz.Nachdem Sie die Instanz gelöscht haben, erstellen Sie von dem beibehaltenen nichtflüchtigen Root-Laufwerk ein neues Image.
gcloud compute images create win-be-img \ --source-disk=src-img \ --source-disk-zone=IMAGE_ZONE
Ersetzen Sie
IMAGE_ZONE
durch die Zone, in der Sie das Quell-Image erstellen möchten.
Instanzvorlage mithilfe des Quell-Images erstellen
Verwenden Sie das Laufwerk-Image Ihres konfigurierten Windows-Servers als Quell-Image für eine Instanzvorlage. Sie konfigurieren später zwei verwaltete Instanzgruppen, um diese Vorlage für neue Instanzen zu verwenden.
Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um eine Instanzvorlage zu erstellen, die win-be-img
als Quell-Image und rdp-tag
und www-tag
als Instanz-Tags verwendet:
gcloud compute instance-templates create win-be-tmpl \ --tags=rdp-tag,www-tag \ --image=win-be-img
Verwaltete Instanzgruppe für jede Region erstellen
Erstellen Sie in jeder Region verwaltete Instanzgruppen. Nachdem Sie eine Instanzgruppe erstellt haben, wird für die Gruppe automatisch anhand der zuvor definierten Instanzvorlage zwei identische Instanzen erstellt. Später konfigurieren Sie den Load-Balancer so, dass diese Instanzgruppen als Back-End-Ziele verwendet werden.
So erstellen Sie verwaltete Instanzgruppen:
Führen Sie auf dem lokalen Computer den folgenden Befehl aus, um eine neue verwaltete Instanzgruppe in der Zone, in der Sie das Image erstellt haben, zu erstellen und automatisch zwei identische Instanzen darin bereitzustellen:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_1 \ --base-instance-name=BASE_INSTANCE_NAME_1 \ --size=2 \ --zone=ZONE_1 \ --template=win-be-tmpl
Dabei gilt:
MANAGED_INSTANCE_GROUP_NAME_1
: Name Ihrer verwalteten InstanzBASE_INSTANCE_NAME_1
: Name der BasisinstanzZONE_1
: Zone, in der Sie Ihre verwaltete Instanz bereitstellen möchten
Erstellen Sie in der zweiten Zone eine verwaltete Instanzgruppe:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_2 \ --base-instance-name=BASE_INSTANCE_NAME_2 \ --size=2 \ --zone=ZONE_2 \ --template=win-be-tmpl
Dabei gilt:
MANAGED_INSTANCE_GROUP_NAME_2
: Name Ihrer verwalteten InstanzBASE_INSTANCE_NAME_2
: Name der BasisinstanzZONE_2
: Zone, in der Sie Ihre verwaltete Instanz bereitstellen möchten
Ausführung der Backend-Instanzen sicherstellen
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf die externe IP-Adresse jedes Backends, um sicherzustellen, dass das Backend Inhalte an die zuvor erstellte Startseite sendet.
Load-Balancing-Dienst erstellen und konfigurieren
Der Load-Balancing-Dienst für Compute Engine umfasst mehrere Komponenten. In diesem Abschnitt erstellen Sie diese Komponenten und verbinden sie.
Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um eine neue Systemdiagnose zu erstellen. Der Load-Balancer prüft mithilfe dieser Prüfung die Reaktionsfähigkeit Ihrer Backend-Instanzen:
gcloud compute http-health-checks create basic-check
Erstellen Sie einen Backend-Dienst:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --protocol=HTTP \ --http-health-checks=basic-check \ --global
Ersetzen Sie
BACKEND_SERVICE_NAME
durch einen Namen für den Backend-Dienst.Fügen Sie die Instanzgruppen dem Backend-Dienst als Backend-Ziele hinzu:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_1 \ --instance-group-zone=ZONE_1 gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_2 \ --instance-group-zone=ZONE_2
Erstellen Sie eine Standard-URL-Zuordnung, die alle eingehenden Anfragen an alle Ihre Instanzen weiterleitet:
gcloud compute url-maps create lb-map \ --default-service=BACKEND_SERVICE_NAME
Erstellen Sie eine SSL-Zertifikatsressource. Der Load-Balancer verwendet diese Ressource zum Ver- und Entschlüsseln von Traffic.
Wenn Sie bereits einen privaten Schlüssel und ein SSL-Zertifikat von einer Zertifizierungsstelle haben, können Sie diese verwenden, um mit dem folgenden Befehl eine neue
SSLCertificate
-Ressource zu erstellen. Andernfalls können Sie für Tests ein von Google verwaltetes SSL-Zertifikat oder ein selbst signiertes Zertifikat erstellen und verwenden. Weitere Informationen finden Sie unter SSL-Zertifikate.Führen Sie zum Erstellen der SSL-Zertifikatsressource den folgenden Befehl aus:
gcloud compute ssl-certificates create www-cert \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Dabei gilt:
CRT_FILE_PATH
ist der lokale Dateipfad Ihres ZertifikatsKEY_FILE_PATH
ist der Dateipfad Ihres privaten Schlüssels
Erstellen Sie Ziel-HTTP- und -HTTPS-Proxys, um Anfragen an Ihre URL-Zuordnung weiterzuleiten. 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-http-proxies create http-lb-proxy \ --url-map=lb-map gcloud compute target-https-proxies create https-lb-proxy \ --url-map lb-map \ --ssl-certificate SSL_CERT
Ersetzen Sie SSL_CERT basierend auf Folgendem:
- Ersetzen Sie
SSL_CERT
durch www-cert, wenn Sie eine SSL-Zertifikatsressource mit Ihrem SSL-Zertifikat und Ihrem privaten Schlüssel erstellt haben. - Ersetzen Sie
SSL_CERT
durch den Namen Ihres Zertifikats, wenn Sie ein von Google verwaltetes oder selbst signiertes SSL-Zertifikat verwenden.
- Ersetzen Sie
Damit der Load-Balancer Traffic zuverlässig empfängt, weisen Sie der globalen Weiterleitungsregel des Load-Balancers eine globale statische IP-Adresse zu.
Führen Sie zum Erstellen einer globalen statischen IP-Adressressource den folgenden Befehl aus:
gcloud compute addresses create lb-ip \ --global \ --network-tier=PREMIUM
Notieren Sie sich die IP-Adresse.
Erstellen Sie für die Verarbeitung eingehender HTTP- und HTTPS-Anfragen zwei globale Weiterleitungsregeln. Mit jeder Weiterleitungsregel wird Traffic entsprechend der angegebenen IP-Adresse sowie des angegebenen IP-Protokolls und Ports an einen der von Ihnen erstellten Zielproxys gesendet.
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
load-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen klassischen Application Load Balancer
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80 gcloud compute forwarding-rules create https-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Verwenden Sie für einen globalen externen Application Load Balancer den gcloud CLI-Befehl mit
Nachdem Sie die globalen Weiterleitungsregeln erstellt haben, kann es mehrere Minuten dauern, bis die Konfiguration verfügbar ist. Um den Fortschritt der Weitergabe zu überprüfen, können Sie entweder Ihre Konfiguration in der Google Cloud Console überwachen oder den folgenden Befehl auf Ihrem lokalen Computer ausführen:
gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Traffic an Back-Ends senden
Nachdem Sie Ihren Load-Balancer konfiguriert haben, können Sie beginnen, Traffic an die Weiterleitungsregel zu senden und beobachten, wie der Traffic auf verschiedene Instanzen verteilt wird.
So senden Sie Traffic an Ihre Back-Ends:
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Wählen Sie den Tab Front-Ends aus.
Klicken Sie auf die IP-Adressen in der Spalte Adresse, um Ihre Standard-Startseite aufzurufen.
Zugriff auf Back-Ends einschränken
Nachdem Sie sichergestellt haben, dass alles ordnungsgemäß funktioniert, ändern Sie die Firewallregeln, sodass nur HTTP oder HTTPS-Traffic von Ihrem Load-Balancing-Dienst zulässig ist.
Rufen Sie in der Google Cloud Console die Seite Firewall auf.
Klicken Sie auf den Namen der Firewallregel, die externen Zugriff auf Port
tcp:80
zulässt.Klicken Sie auf Bearbeiten, um die Firewallregel zu bearbeiten.
Entfernen Sie im Feld IPv4-Quellbereiche den Wert
0.0.0.0/0
und geben Sie 130.211.0.0/22 ein. Dadurch werden die zulässigen Quell-IP-Adressen der Firewallregel auf den Bereich130.211.0.0/22
beschränkt. Dies ist der IP-Bereich für die HTTPS-Load-Balancer-Systemdiagnose.Klicken Sie auf Speichern.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf die externe IP-Adresse der einzelnen Instanzen, um sicherzustellen, dass diese jetzt nicht zugänglich sind.
Ausfall simulieren
Sie können ein Ausfall für eine oder mehrere Instanzen in einer Region simulieren, um zu sehen, wie die Last auf die reagierenden Instanzen verteilt wird.
So deaktivieren Sie den Erhalt weiterer Anfragen in einer Instanz:
- Stellen Sie eine RDP-Verbindung zu der Instanz her.
- Öffnen Sie in der Instanz die PowerShell als Administrator.
Führen Sie den folgenden Befehl aus, um eine neue Firewallregel für die Instanz zu erstellen. Dieser Befehl blockiert den Systemdiagnose-Traffic und unterbindet sämtliche neuen HTTP-Verbindungen vom Load-Balancer zur Instanz:
netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um sicherzustellen, dass die Instanz jetzt den Status
UNHEALTHY
meldet:gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Wenn die Instanz den Status
UNHEALTHY
meldet, senden Sie eine Anfrage an das Lastenausgleichsmodul. Es sollten nur die reagierenden Instanzen antworten.Nach Abschluss des simulierten Ausfalls können Sie die Verbindung zu der Instanz wiederherstellen, indem Sie die Firewallregel löschen. Öffnen Sie in der nicht reagierenden Instanz die PowerShell als Administrator und führen Sie den folgenden Befehl aus, um die Regel zu löschen:
netsh advfirewall firewall delete rule name="Outage Test"
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Einzelne Ressourcen löschen
Sie müssen alle Ressourcen, die für das Projekt erstellt wurden, einzeln löschen (Images, Instanzvorlagen, Instanzgruppen, Systemdiagnosen, Backend-Dienste, URL-Zuordnung, HTTP-Proxy, Adressen, Weiterleitungsregeln). Sie können die VM-Instanzen erst löschen, wenn Sie die folgenden Befehle ausführen.
Führen Sie die folgenden Befehle auf Ihrem lokalen Computer aus, um die für die Anleitung erstellten Ressourcen zu löschen:
- Löschen Sie die HTTP/S-Weiterleitungsregeln:
gcloud compute forwarding-rules delete https-fwd-rule --global
gcloud compute forwarding-rules delete http-fwd-rule --global
- Löschen Sie die globale statische IP-Adresse:
gcloud compute addresses delete lb-ip --global
- Löschen Sie die HTTP/S-Proxys:
gcloud compute target-https-proxies delete https-lb-proxy
gcloud compute target-http-proxies delete http-lb-proxy
- Löschen Sie das SSL-Zertifikat:
gcloud compute ssl-certificates delete SSL_CERT
- Löschen Sie die URL-Zuordnung:
gcloud compute url-maps delete lb-map
- Löschen Sie den Backend-Dienst:
gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
- Löschen Sie die HTTP-Systemdiagnose:
gcloud compute http-health-checks delete basic-check
- Löschen Sie die verwalteten Instanzgruppen:
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_1 --zone=ZONE_1
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_2 --zone=ZONE_2
- Löschen Sie die Instanzvorlage:
gcloud compute instance-templates delete win-be-tmpl
-
Löschen Sie das Image:
gcloud compute images delete IMAGE_NAME
-
Löschen Sie das Laufwerk:
gcloud compute disks delete DISK_NAME
Nächste Schritte
- Anleitung zum Bereitstellen von IIS-Webservern mit Load-Balancing bereitstellen
- Sehen Sie sich die Best Practices im Google Cloud-Architektur-Framework an.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center