Regionenübergreifende Load-Balancing unter Verwendung von Microsoft IIS-Back-Ends

In dieser Anleitung wird beschrieben, wie Sie Traffic mithilfe des HTTP(S)-Load-Balancer-Diensts der Google Compute Engine auf Microsoft IIS-Webserver (Internet Information Services) in verschiedenen Compute Engine-Regionen verteilen.

Szenario

Sie möchten für den Traffic der Website www.example.com einen Lastenausgleich durchführen. Es soll sichergestellt werden, dass eingehende Requests zur am nächsten gelegenen Region weitergeleitet werden. Gleichzeitig ist jedoch wichtig, dass bei einem Ausfall oder wenn Instanzen in einer Region ihre Kapazitätsgrenze erreichen, ein Failover der Requests zu einer intakten Instanz in der am nächsten gelegenen Region erfolgt.

Durch die Konfiguration in diesem Szenario erhalten Sie ein HTTP(S)-Lastenausgleichsmodul, das Requests über eine einzige globale IP-Adresse empfängt. Mit dieser IP-Adresse können alle eingehenden Requests nach Verbindungstyp – also HTTP oder HTTPS – weitergeleitet werden. Für HTTPS-Requests implementiert das Lastenausgleichsmodul zwischen dem Client, der den Request sendet, und dem Lastenausgleichsmodul eine SSL/TLS-Verschlüsselung.

Das folgende Diagramm zeigt die Architektur des Lastenausgleichsmoduls:

Diagramm eines regionenübergreifenden Lastenausgleichs

Das Lastenausgleichsmodul umfasst mehrere Komponenten, um eine möglichst effektive Konfiguration sicherzustellen. Eine Beschreibung der Funktion der einzelnen Komponenten finden Sie in der Übersicht über den HTTP(S)-Lastenausgleich.

Voraussetzungen

In dieser Anleitung wird Folgendes vorausgesetzt:

Back-End-Instanzen einrichten

In diesem Abschnitt erstellen Sie zwei Back-End-Dienste in unterschiedlichen Regionen. Jeder der Back-End-Dienste beinhaltet zwei Back-End-Instanzen, die jeweils einen Microsoft IIS-Webserver auf Windows Server 2012 ausführen. Um eine aufwändige Konfiguration jedes Servers zu vermeiden, erstellen Sie von einer Serverinstanz ein Festplatten-Image. Dieses verwenden Sie anschließend für die Erstellung der anderen Serverinstanzen.

Instanz für Quell-Image erstellen

So erstellen Sie die Instanz für das Quell-Image:

  1. Öffnen Sie auf Ihrem lokalen Windows-Gerät die PowerShell.
  2. Erstellen Sie in der Region us-central1 eine neue Windows Server 2012-Instanz und fügen Sie dieser die Tags rdp-tag und www-tag hinzu. Sie gewähren später externen Zugriff auf die Instanz, indem Sie für diese Tags Firewallregeln erstellen.

    PS C:\> gcloud compute instances create src-img ^
         --zone us-central1-f --image windows-2012-r2 ^
         --tags rdp-tag,www-tag

Nachdem Sie eine Instanz für das Quell-Image erstellt haben, richten Sie Firewallregeln ein, um den externen Zugriff auf die Instanz zu erlauben:

  1. Erstellen Sie eine Firewallregel, die auf allen mit dem Tag rdp-tag gekennzeichneten Instanzen den externen Zugriff auf Port 3389 gewährt. Diese Regel erlaubt unter Verwendung von RDP den Zugriff auf die Instanz für das Quell-Image und alle nachfolgenden Instanzen, die mit dem Tag rdp-tag gekennzeichnet sind:

    PS C:\> gcloud compute firewall-rules create rdp-rule ^
         --allow tcp:3389 --source-ranges 0.0.0.0/0 ^
         --target-tags rdp-tag
  2. Erstellen Sie eine weitere Firewallregel, um auf allen mit dem Tag www-tag gekennzeichneten Instanzen den externen Zugriff auf Port 80 zuzulassen. Diese Regel erlaubt der Instanz für das Quell-Image und allen nachfolgenden Instanzen, die mit dem Tag www-tag gekennzeichnet sind, HTTP-Traffic zu senden und zu empfangen:

     PS C:> gcloud compute firewall-rules create www-rule ^
         --allow tcp:80 --source-ranges 0.0.0.0/0 ^
         --target-tags www-tag

Instanz für Quell-Image konfigurieren

Erstellen Sie anschließend in der Instanz für das Quell-Image einen neuen Windows-Nutzer und stellen Sie eine RDP-Verbindung her:

  1. Öffnen Sie über den Webbrowser die Seite "VM-Instanzen" in der GCP Console. Klicken Sie auf den Namen der Instanz für das Quell-Image (src-img).
  2. Klicken Sie auf die Schaltfläche Windows-Passwort festlegen.
  3. Geben Sie im Dialogfeld Neues Windows-Passwort festlegen Ihren Nutzernamen ein und klicken Sie auf Festlegen, um das Nutzerkonto in Ihrer Instanz zu erstellen.
  4. Kopieren Sie das angegebene Passwort und schließen Sie das Dialogfeld.
  5. Klicken Sie auf der Konsolenseite der Instanz auf RDP.

    • Wenn Sie die Chrome RDP-Erweiterung installiert haben, wird das Fenster der Erweiterung geöffnet. Bestätigen Sie, dass Sie eine Verbindung mit der Instanz herstellen möchten. Geben Sie Ihren Nutzernamen und Ihr Passwort ein und klicken Sie auf OK, um die Verbindung zur Instanz herzustellen.
    • Wenn Sie die Chrome RDP-Erweiterung nicht installiert haben, erhalten Sie die Möglichkeit, die RDP-Datei für die Instanz herunterzuladen. Stellen Sie mithilfe dieser Datei die Verbindung zur Instanz her. Sie können dafür die Windows-Remotedesktopverbindung oder einen beliebigen Drittanbieter-Client verwenden.

Nachdem Sie eine RDP-Verbindung zur Instanz für das Quell-Image hergestellt haben, installieren Sie IIS und geben eine Standardstartseite an:

  1. Öffnen Sie die PowerShell als Administrator in der Instanz für das Quell-Image.
  2. Fügen Sie in der PowerShell Folgendes ein, um die IIS-Dienste und -Abhängigkeiten zu installieren:

    PS C:\> Dism /Online /Enable-Feature /FeatureName:IIS-WebServerRole /FeatureName:IIS-WebServer /FeatureName:IIS-StaticContent /FeatureName:IIS-DefaultDocument /FeatureName:IIS-DirectoryBrowsing /FeatureName:IIS-HttpErrors /FeatureName:IIS-HealthAndDiagnostics /FeatureName:IIS-HttpLogging /FeatureName:IIS-LoggingLibraries /FeatureName:IIS-RequestMonitor /FeatureName:IIS-Security /FeatureName:IIS-RequestFiltering /FeatureName:IIS-HttpCompressionStatic /FeatureName:IIS-WebServerManagementTools /FeatureName:IIS-ManagementConsole /FeatureName:WAS-WindowsActivationService /FeatureName:WAS-ProcessModel /FeatureName:WAS-NetFxEnvironment /FeatureName:WAS-ConfigurationAPI /All
  3. Nachdem Sie die Dienste installiert haben, erstellen Sie im Standard-Webverzeichnis von IIS unter C:\inetpub\wwwroot eine neue Startseite:

    PS C:\> 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 übermitteln kann

Rufen Sie in Ihrem Webbrowser die Seite der 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 übermittelt.

Ein wiederverwendbares Windows Server 2012-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 übermitteln kann, erstellen Sie wie folgt von der persistenten Root-Festplatte der Instanz ein wiederverwendbares Festplatten-Image:

  1. Öffnen Sie die PowerShell als Administrator in der Instanz für das Quell-Image.
  2. Führen Sie den folgenden Befehl aus, um das System für den Klonvorgang vorzubereiten:

     PS C:> GCESysprep

    Nach Abschluss des Vorgangs GCESysprep wird die Verbindung zu Ihrer RDP-Sitzung automatisch getrennt.

  3. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um die Quelleninstanz zu löschen und gleichzeitig das persistente Root-Laufwerk beizubehalten.

     PS C:> gcloud compute instances delete src-img --keep-disks boot

  4. Nachdem Sie die Instanz gelöscht haben, erstellen Sie von dem beibehaltenen persistenten Root-Laufwerk ein neues Image.

     PS C:> gcloud compute images create win-be-img --source-disk src-img --source-disk-zone us-central1-f

Instanzvorlage mithilfe des Quell-Images erstellen

Nachdem Sie nun ein Festplatten-Image des konfigurierten Windows-Servers erstellt haben, können Sie dieses als Quell-Image für eine Instanzvorlage verwenden. Sie konfigurieren später zwei verwaltete Instanzgruppen, die diese Vorlage zum Erstellen neuer Instanzen verwenden.

Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um eine Instanzvorlage zu erstellen. Verwenden Sie dabei win-be-img als Quell-Image und rdp-tag sowie www-tag als Instanz-Tags:

PS C:\> 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 anschließend für jede Region verwaltete Instanzgruppen. Den erstellten Instanzgruppen werden anschließend zwei identische Instanzen hinzugefügt, die auf der zuvor definierten Instanzvorlage basieren. Später konfigurieren Sie das Lastenausgleichsmodul so, dass diese Instanzgruppen als Back-End-Ziele verwendet werden.

So erstellen Sie verwaltete Instanzgruppen:

  1. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um in der Zone us-central1-f eine neue verwaltete Instanzgruppe zu erstellen. Fügen Sie zu dieser Instanzgruppe zwei identische Instanzen hinzu:

     PS C:> gcloud compute instance-groups managed create us-be-group ^
          --base-instance-name us ^
          --size 2 ^
          --zone us-central1-f ^
          --template win-be-tmpl

  2. Führen Sie diesen Schritt auch in der Zone europe-west1-d aus:

    PS C:\> gcloud compute instance-groups managed create eu-be-group ^
          --base-instance-name eu ^
          --size 2 ^
          --zone europe-west1-d ^
          --template win-be-tmpl

Ausführung der Back-End-Instanzen sicherstellen

Rufen Sie in Ihrem Webbrowser die Seite der VM-Instanzen auf. Klicken Sie auf die externe IP-Adresse jedes Back-Ends, um sicherzustellen, dass das Back-End Inhalte an die zuvor erstellte Startseite übermittelt.

Lastenausgleichsdienst erstellen und konfigurieren

Der Lastenausgleichsdienst für Compute Engine beinhaltet mehrere Komponenten. In diesem Abschnitt erstellen Sie die Komponenten und verbinden sie.

  1. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um eine neue Systemdiagnose zu erstellen. Das Lastenausgleichsmodul prüft mithilfe dieser Systemdiagnose den Status der Back-End-Instanzen.

    PS C:\> gcloud compute http-health-checks create basic-check
  2. Erstellen Sie einen Back-End-Dienst:

    PS C:\> gcloud compute backend-services create be-srv ^
          --protocol HTTP --http-health-check basic-check
  3. Fügen Sie die Instanzgruppen dem Back-End-Dienst als Back-End-Ziele hinzu:

    PS C:\> gcloud beta compute backend-services add-backend be-srv ^
          --instance-group us-be-group --zone us-central1-f
    PS C:\> gcloud beta compute backend-services add-backend be-srv ^
          --instance-group eu-be-group --zone europe-west1-d
  4. Erstellen Sie eine Standard-URL-Zuordnung, die alle eingehenden Anfragen an alle Ihre Instanzen weiterleitet:

    PS C:\> gcloud compute url-maps create lb-map --default-service be-srv
  5. Erstellen Sie eine SSL-Zertifikatsressource. Das Lastenausgleichsmodul 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 damit eine neue Ressource SSLCertificate erstellen. Führen Sie in diesem Fall den folgenden Befehl aus. Andernfalls können Sie für Testzwecke auch ein selbst signiertes Zertifikat erstellen und verwenden. Weitere Informationen erhalten Sie unter SSL-Zertifikate.

    Führen Sie zum Erstellen der SSL-Zertifikatsressource den folgenden Befehl aus. Ersetzen Sie <crt_file_path> durch den lokalen Dateipfad Ihres Zertifikats und <key_file_path> durch den Dateipfad Ihres privaten Schlüssels.

    PS C:\> gcloud beta compute ssl-certificates create www-cert ^
    --certificate  --private-key 
  6. Erstellen Sie Ziel-HTTP- und -HTTPS-Proxys, um Anfragen an Ihre URL-Zuordnung weiterzuleiten. Der Proxy ist der Teil des Lastenausgleichsmoduls, der das SSL-Zertifikat für den HTTPS-Lastenausgleich besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.

     PS C:> gcloud compute target-http-proxies create http-lb-proxy ^
          --url-map lb-map
     PS C:> gcloud beta compute target-https-proxies create https-lb-proxy ^
          --url-map lb-map --ssl-certificate www-cert

  7. Damit das Lastenausgleichsmodul Traffic zuverlässig empfängt, weisen Sie der globalen Weiterleitungsregel des Moduls eine globale statische IP-Adresse zu. Führen Sie zum Erstellen einer globalen statischen IP-Adresse den folgenden Befehl aus:

     PS C:> gcloud compute addresses create lb-ip --global

    Notieren Sie sich die IP-Adresse.

  8. Erstellen Sie für die Verarbeitung eingehender HTTP- und HTTPS-Anfragen zwei globale Weiterleitungsregeln. Mit jeder Weiterleitungsregel wird Traffic entsprechend der angegebenen IP-Adresse, des IP-Protokolls und des Ports an einen der von Ihnen erstellten Ziel-Proxys gesendet.

    Ersetzen Sie <lb_ip_addr> in den folgenden Befehlen durch die im vorherigen Schritt erstellte statische IP-Adresse:

    PS C:\> gcloud compute forwarding-rules create http-fwd-rule ^
          --address  --global ^
          --target-http-proxy http-lb-proxy --port-range 80
    PS C:\> gcloud beta compute forwarding-rules create https-fwd-rule ^
          --address  --global ^
          --target-https-proxy https-lb-proxy --port-range 443

Nachdem Sie die globalen Weiterleitungsregeln erstellt haben, kann es mehrere Minuten dauern, bis die Konfiguration verfügbar ist. Sie können den Konfigurationsfortschritt in der Google Cloud Platform Console verfolgen oder den folgenden Befehl auf Ihrem lokalen Computer ausführen:

PS C:\> gcloud compute backend-services get-health be-srv

Traffic an Back-Ends senden

Nachdem Sie Ihren Lastenausgleichsdienst 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:

  1. Öffnen Sie in der GCP Console die Seite "HTTP(S)-Load-Balancer".
  2. Klicken Sie in der Spalte für Eingehender Traffic auf die IP-Adressen. Nun sollte die Standardstartseite geöffnet werden.

Zugriff auf Back-Ends einschränken

Nachdem Sie sichergestellt haben, dass alles ordnungsgemäß funktioniert, ändern Sie die Firewallregeln, sodass nur HTTP(S)-Traffic von Ihrem Lastenausgleichsdienst zulässig ist.

  1. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um Ihre Firewallregel www-rule zu aktualisieren. Beschränken Sie die zulässigen Quell-IP-Adressen auf den Bereich 130.211.0.0/22. Dies ist der IP-Bereich für die Systemdiagnose durch das HTTP(S)-Lastenausgleichsmodul:

    PS C:\> gcloud compute firewall-rules update www-rule ^
           --source-ranges 130.211.0.0/22 ^
           --target-tags www-tag
  2. Rufen Sie in Ihrem Webbrowser die Seite "VM-Instanzen" auf.

  3. Klicken Sie auf jede Instanz, um sicherzustellen, dass diese jetzt nicht zugänglich sind.

Ausfall simulieren

Sie können für eine oder mehrere Instanzen in einer Region einen Ausfall simulieren, um zu prüfen, wie die Last auf die restlichen intakten Instanzen verteilt wird.

So deaktivieren Sie den Erhalt weiterer Anfragen in einer Instanz:

  1. Stellen Sie eine RDP-Verbindung zu der Instanz her.
  2. Öffnen Sie in der Instanz die PowerShell als Administrator.
  3. 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 Lastenausgleichsmodul zur Instanz:

    PS C:\> netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
  4. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus, um sicherzustellen, dass die Instanz jetzt den Status UNHEALTHY meldet:

    PS C:\> gcloud compute backend-services get-health be-srv
  5. Wenn die Instanz den Status UNHEALTHY meldet, senden Sie eine Anfrage an das Lastenausgleichsmodul. Es sollten nur die intakten Instanzen antworten.

  6. Nach Abschluss des simulierten Ausfalls können Sie die Verbindung zu der Instanz wiederherstellen, indem Sie die Firewallregel löschen. Öffnen Sie in der fehlerhaften Instanz die PowerShell als Administrator und führen Sie den folgenden Befehl aus, um die Regel zu löschen:

    PS C:\> netsh advfirewall firewall delete rule name="Outage Test"

Bereinigen

Nach Abschluss der Microsoft IIS-Anleitung können Sie die auf der Google Cloud Platform erstellten Ressourcen bereinigen, damit diese keine weiteren Kosten generieren. In den folgenden Abschnitten wird beschrieben, wie Sie diese Ressourcen löschen oder deaktivieren.

Cloud Platform-Projekt löschen

Sie vermeiden weitere Kosten am einfachsten, indem Sie das für die Anleitung erstellte Projekt löschen.

So löschen Sie das Projekt:

  1. Rufen Sie in der GCP Console die Seite Projekte auf.

    Zur Seite Projekte

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Löschen delete.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.

Instanzen löschen

So löschen Sie eine Compute Engine-Instanz:

Persistente Festplatten löschen

So löschen Sie eine Compute Engine-Festplatte:

Weitere Informationen

Informationen zur Verwendung von Windows in Compute Engine

Lesen Sie die Dokumentation zu Windows-Instanzen in Compute Engine.

Weitere Anleitungen ausprobieren

Weitere Google Cloud Platform-Funktionen testen. Werfen Sie einen Blick auf unsere Anleitungen.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation