HTTP-Lastenausgleich mithilfe des Anwendungsanforderungsroutings

von IIS-Team

Übersicht

In diesem Thema wird der Leser durch die Schritte zum Konfigurieren des Anwendungsanforderungsroutings zum Lastenausgleich von HTTP-Anforderungen führt, um hohe Verfügbarkeit und Skalierbarkeit zu erzielen. In der exemplarischen Vorgehensweise werden auch einige Kernfeatures erläutert, wie das Anwendungsanforderungsrouting die Integrität der Inhaltsserver überwacht und Anforderungen von einem Client auf einen Inhaltsserver bezieht.

Ziel

So laden Sie HTTP-Anforderungen auf mehreren Inhaltsservern mithilfe des Anwendungsanforderungsroutings wie unten gezeigt:

Diagramm des Anwendungsanforderungsroutings auf mehreren Inhaltsservern.

Voraussetzungen

Diese exemplarische Vorgehensweise erfordert die folgenden Voraussetzungen:

  • IIS 7.0 oder höher unter Windows 2008 (beliebige SKU) oder höher.
  • Microsoft Application Request Routing Version 1 und abhängige Module.
  • Mindestens zwei Inhaltsserver mit Arbeitswebsites und Anwendungen.

Wenn Anwendungsanforderungsrouting Version 1 nicht installiert wurde, ist sie zum Download verfügbar unter:

  • Microsoft Application Request Routing Version 1 für IIS 7 (x86) hier.
  • Microsoft Application Request Routing Version 1 für IIS 7 (x64) hier.

Führen Sie die in diesem Dokument beschriebenen Schritte aus, um das Anwendungsanforderungsrouting zu installieren.

Eine weitere Voraussetzung besteht darin, dass der Leser eine Serverfarm definiert und konfiguriert hat, indem die in " Definieren" und "Konfigurieren einer Anwendungsanforderungsrouting"-Servergruppe beschriebenen Schritte verwendet werden.

Schritt 1– Überprüfen von URL-Neuschreibregeln

Sofern die Serverfarm mithilfe der schritte erstellt wurde, die in "Definieren und Konfigurieren einer Application Request Routing(ARR)-Servergruppe" beschrieben sind, wurden die URL-Neuschreibungsregeln bereits für ein einfaches Lastenausgleichsszenario erstellt.

So überprüfen Sie URL-Neuschreibungsregeln mithilfe der Benutzeroberfläche:

  1. Starten Sie DEN IIS-Manager.
  2. Wählen Sie die Serverfarm myServerFarm aus, die in "Definieren und Konfigurieren einer Application Request Routing(ARR)-Servergruppe( Application Request Routing) erstellt wurde.
  3. Die folgenden Symbole werden angezeigt:
    Screenshot der Serverfarm. Das Symbol
  4. Doppelklicken Sie auf Routingregeln.
  5. Stellen Sie sicher, dass das Kontrollkästchen "Url neu schreiben" zum Überprüfen eingehender Anforderungen aktiviert ist.
    Screenshot der Seite
  6. SSL-Offloading ist standardmäßig aktiviert. Wenn dieses Feature aktiviert ist, werden alle Kommunikation zwischen dem ARR-Server und den Anwendungsservern klartext ausgeführt, auch für HTTPS-Anforderungen von Clients an den ARR-Server. Wenn sowohl der ARR-Server als auch die Anwendungsserver innerhalb eines vertrauenswürdigen Netzwerks bereitgestellt werden, z. B. innerhalb desselben Rechenzentrums, wird durch die Aktivierung des SSL-Offloads keine Sicherheit geopfert. Darüber hinaus kann die Aktivierung dieses Features dazu beitragen, die Serverressourcen auf den Anwendungsservern zu maximieren, da sie keine Zyklen bei der Verschlüsselung und Entschlüsselung von Anforderungen und Antworten ausgeben müssen.
    Deaktivieren Sie zum Deaktivieren des SSL-Offloadings das Kontrollkästchen " SSL-Offloading aktivieren ", und klicken Sie dann auf "Übernehmen".
  7. Öffnen Sie einen Browser, und senden Sie mehrere Anforderungen an den ARR-Server.
  8. Um zu überprüfen, ob die Anforderungen gleichmäßig zwischen den Anwendungsservern ausgeglichen werden, wählen Sie "myServerFarm" aus. Doppelklicken Sie auf Überwachung und Verwaltung.
    Screenshot der Serverfarm. Das Symbol
  9. Überprüfen Sie in der Dashboardansicht, ob die Anforderungen gleichmäßig verteilt werden.
    Screenshot der Featureseite

So überprüfen Sie DIE URL-Regeln mithilfe der Befehlszeile neu:

  1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten .

  2. Navigieren Sie zu %windir%\system32\inetsrv.

  3. Um zu überprüfen, ob die URL-Neuschreibungsregeln ordnungsgemäß erstellt wurden, geben Sie appcmd.exe Listenkonfiguration -section:system.webServer/rewrite/globalRules ein. Es gibt die globalRules zurück, die wie folgt aussieht:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    
  4. Zum Deaktivieren des SSL-Offloadings entfernen Sie zuerst alle URL-Neuschreibregeln:

    appcmd.exe clear config -section:system.webServer/rewrite/globalRules
    

    Erstellen Sie dann die URL-Neuschreibungsregeln, um HTTPS-Datenverkehr weiterzuleiten. Mit dieser Regel leitet ARR Anforderungen mithilfe von SSL weiter, wenn die eingehenden Anforderungen HTTPS sind:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{HTTPS}',pattern='On']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.url:"https://myServerFarm/{R:0}"
    /commit:apphost
    

    Erstellen Sie schließlich die URL-Neuschreibregeln, um HTTP-Datenverkehr im klartext an die Anwendungsserver weiterzuleiten:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm/{R:0}"
    /commit:apphost
    
  5. Um zu überprüfen, ob die URL-Neuschreibungsregeln ordnungsgemäß mit deaktivierter SSL-Offloading erstellt wurden, geben Sie appcmd.exe Listenkonfiguration -section:system.webServer/rewrite/globalRules ein. Es gibt die globalRules zurück, die wie folgt aussieht:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance_SSL" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    <add input="{HTTPS}" pattern="On" />
                    </conditions>
                    <action type="Rewrite" url="https://myServerFarm/{R:0}" />
                </rule>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    

Schritt 2 – Konfigurieren der Integritätsprüfungsüberwachung

Anwendungsanforderungsrouting überwacht die Integrität der Inhaltsserver auf zwei Arten:

  • Über den Live-Datenverkehr
  • Über einen expliziten URL-Test

Die Live-Datenverkehrstests werden standardmäßig automatisch ausgeführt, wenn die Anforderungen an das Anwendungsanforderungsrouting vorgenommen werden. Der explizite URL-Test ist ein zusätzlicher Test, der mit dem Live-Datenverkehrstest verwendet werden kann. In diesem Abschnitt führt sie durch die exemplarische Vorgehensweise, indem Sie die expliziten URL-Tests konfigurieren.

So konfigurieren Sie die Integritätsprüfung mithilfe der Benutzeroberfläche:

  1. Für die URL-Tests muss eine bestimmte URL getestet werden. Um diese Anforderung zu erfüllen, verwenden Sie Editor, um eine Textdatei mit dem Namen healthCheck.txt zu erstellen, die den Satz "Ich bin gesund".
  2. Platzieren Sie die dateihealthCheck.txt auf den Anwendungsservern.
  3. Stellen Sie sicher, dass die healthCheck.txt ordnungsgemäß gerendert wird, indem Sie die Seite in einem Browser öffnen.
  4. Wählen Sie in IIS-Manager die Serverfarm "myServerFarm" aus. Die folgenden Symbole werden angezeigt:
    Screenshot der Serverfarm. Das Symbol
  5. Doppelklicken Sie auf "Integritätstest".
    Screenshot der Featureseite
  6. Geben Sie http://(server name or FQDN of ARR server)/healthCheck.txt als URL-Wert ein.
  7. Geben Sie fehlerfrei als Antwort-Übereinstimmungswert ein. Die Antwortzustimmung ist ein optionaler Test, um sicherzustellen, dass der Textkörper der Antwort die erwartete Zeichenfolge enthält. In diesem Fall, da healthCheck.txt den Satz "Ich bin gesund", sucht die Antwort-Übereinstimmung nach dem Wort "gesund".
  8. Klicken Sie auf Übernehmen, um die Änderungen zu speichern.
  9. Um die Funktionalität der Integritätsprüfung zu überprüfen, beenden Sie die überwachte Website auf einem der Anwendungsserver. Da der Wert für Intervall (Sekunden) auf 30 Sekunden festgelegt ist, warten Sie 30 Sekunden auf die nächste Integritätsprüfung.
  10. Nachdem Sie auf 30 Sekunden warten, senden Sie mehrere Anforderungen an den ARR-Server.
  11. Um zu überprüfen, ob alle Anforderungen an den fehlerfreien Server gehen, doppelklicken Sie auf Überwachung und Verwaltung, und aktualisieren Sie das Dashboard mithilfe der F5-Taste. Beachten Sie, dass die Laufzeitstatistiken zurückgesetzt wurden. Dies ist beabsichtigt. Möglicherweise möchten Sie zusätzliche Anforderungen senden und das Dashboard nach Bedarf aktualisieren.
    Screenshot der Featureseite
  12. Die Integritätsüberwachung wird auch verwendet, um zu erkennen, wann ein ungesunder Server fehlerfrei wird. Um diese Funktionalität zu überprüfen, starten Sie die Website, die in Schritt 9 beendet wurde. Da der Wert für Intervall (Sekunden) auf 30 Sekunden festgelegt ist, warten Sie 30 Sekunden auf die nächste Integritätsprüfung.
  13. Nachdem Sie auf 30 Sekunden warten, senden Sie mehrere Anforderungen an den ARR-Server.
  14. Um zu überprüfen, ob die Anforderungen gleichmäßig zwischen Servern verteilt werden, aktualisieren Sie das Dashboard im IIS-Manager. Beachten Sie, dass die Laufzeitstatistiken zurückgesetzt wurden. Dies ist beabsichtigt. Möglicherweise möchten Sie zusätzliche Anforderungen senden und das Dashboard nach Bedarf aktualisieren.

So konfigurieren Sie die Integritätsprüfung mithilfe der Befehlszeile:

  1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten .

  2. Navigieren Sie zu %windir%\system32\inetsrv.

  3. Wenn Sie die URL so http://(server name or FQDN of ARR server)/healthCheck.txt festlegen möchten, dass ich fehlerfrei bin. Geben Sie als übereinstimmende Zeichenfolge Folgendes ein:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.url:"http://(server
    name or FQDN of ARR server)/healthCheck.txt "
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.responseMatch:"I am
    healthy." /commit:apphost
    

Schritt 3 – Konfigurieren der Clientaffinität

Das Anwendungsanforderungsrouting stellt ein Clientaffinitätsfeature bereit, das einem Client einen Inhaltsserver hinter dem Anwendungsanforderungsrouting für die Dauer einer Clientsitzung ordnet. Wenn dieses Feature aktiviert ist, wird der Lastenausgleichsalgorithmus nur für die erste Anforderung vom Client angewendet. Ab diesem Zeitpunkt werden alle nachfolgenden Anforderungen aus demselben Client für die Dauer der Clientsitzung an denselben Inhaltsserver weitergeleitet. Dieses Feature ist nützlich, wenn die Anwendung auf dem Inhaltsserver zustandsvoll ist und die Anforderungen des Clients an denselben Inhaltsserver weitergeleitet werden müssen, da die Sitzungsverwaltung nicht zentralisiert ist.

So konfigurieren Sie die Clientaffinität mithilfe der Benutzeroberfläche:

  1. Starten Sie DEN IIS-Manager.
  2. Wählen Sie die Serverfarm myServerFarm aus, die in "Definieren und Konfigurieren einer Application Request Routing(ARR)-Servergruppe( Application Request Routing) erstellt wurde.
  3. Die folgenden Symbole werden angezeigt:
    Screenshot des Dialogfelds
  4. Doppelklicken Sie auf Serveraffinität.
  5. Um die Clientaffinität zu aktivieren, aktivieren Sie das Kontrollkästchen "Clientaffinität ", und klicken Sie dann auf "Übernehmen".
    Screenshot der Featureseite
    Anwendungsanforderungsrouting verwendet ein Cookie, um die Clientaffinität zu ermöglichen. Der Cookiename wird verwendet, um das Cookie auf dem Client festzulegen. Dies bedeutet, dass der Kunde Cookies akzeptieren muss, damit die Kundenaffinität ordnungsgemäß funktioniert.
  6. Um die Funktionalität der Clientaffinität zu überprüfen, senden Sie mehrere Anforderungen an den ARR-Server. Aktualisieren Sie das Dashboard im IIS-Manager (Überwachung und Verwaltung). Stellen Sie sicher, dass sich die Laufzeitstatistiken nur für einen der Anwendungsserver ändern, auf den der Client affinitisiert ist. Möglicherweise möchten Sie zusätzliche Anforderungen senden und das Dashboard nach Bedarf aktualisieren.

So konfigurieren Sie die Clientaffinität mithilfe der Befehlszeile:

  1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten .

  2. Navigieren Sie zu %windir%\system32\inetsrv.

  3. Um die Clientaffinität zu aktivieren, geben Sie Folgendes ein:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.affinity.useCookie:"True"
    /commit:apphost
    

Schritt 4 – Zulassen neuer Verbindungen

Das Aufheben der Zuordnung neuer Verbindungen auf einem Server ist eine anmutige Möglichkeit, den Server aus der Serverfarmumgebung herauszunehmen. Es ist sinnvoller, wenn die Clientaffinitätsfunktion verwendet wird, da das Anwendungsanforderungsrouting die vorhandenen Sitzungen berücksichtigt, wenn neue Verbindungen nicht zugewiesen werden. Wenn ein Client auf den Server affinitiert ist, der neue Verbindungen nicht zuwehiert, wird der Client weiterhin an denselben Server weitergeleitet und hat daher keine Auswirkungen auf den Client. Es werden jedoch keine neuen Clients an den Server weitergeleitet, der neue Verbindungen nicht zuwehiert.

So können Sie neue Verbindungen mithilfe der Benutzeroberfläche nicht zulassen:

  1. Identifizieren Sie mithilfe des Setups von Schritt 3 oben den Server, auf den Ihr Client affinitisiert ist.
  2. Wählen Sie die Serverfarm myServerFarm aus, die in "Definieren und Konfigurieren einer Application Request Routing(ARR)-Servergruppe( Application Request Routing) erstellt wurde.
  3. Die folgenden Symbole werden angezeigt:
    Screenshot der Serverfarm. Das Symbol
  4. Doppelklicken Sie auf Überwachung und Verwaltung.
  5. Wählen Sie den Server aus, auf dem Ihr Client affinitisiert ist. Klicken Sie im Bereich "Aktionen " auf "Neue Verbindungen nicht zulassen".
  6. Klicken Sie im Bestätigungsdialogfeld auf Ja.
    Screenshot des Dialogfelds
  7. Um zu überprüfen, ob die Anforderungen von Ihren Clients weiterhin an den affinitisierten Server weitergeleitet werden, der jetzt neue Verbindungen nicht zuweht, senden Sie mehrere Anforderungen an den ARR-Server. Aktualisieren Sie das Dashboard im IIS-Manager. Stellen Sie sicher, dass sich die Laufzeitstatistiken nur für den Server ändern, auf den der Client affinitisiert ist. Möglicherweise möchten Sie zusätzliche Anforderungen senden und das Dashboard nach Bedarf aktualisieren.
  8. Um zu überprüfen, ob neue Clients nicht an den Server weitergeleitet werden, der neue Verbindungen nicht zuweet, entfernen Sie das cookie, das durch Anwendungsanforderungsrouting festgelegt ist, indem Sie den Browser schließen und neu starten.
  9. Senden Sie mehrere Anforderungen an den ARR-Server. Aktualisieren Sie das Dashboard im IIS-Manager. Stellen Sie sicher, dass sich die Laufzeitstatistiken nur für die verfügbaren Server ändern. Überprüfen Sie genauer, ob die Laufzeitstatistik für den Server nicht geändert wird. Möglicherweise möchten Sie zusätzliche Anforderungen senden und das Dashboard nach Bedarf aktualisieren.

Zusammenfassung

Sie haben nun eine Reihe von Einstellungen für das Anwendungsanforderungsrouting erfolgreich konfiguriert, um die Auslastung gleichmäßig zu skalieren und zu verteilen. Weitere erweiterte Routingfunktionen mithilfe des Anwendungsanforderungsroutings finden Sie unter "Verwenden des Anwendungsanforderungsroutings".