HTTP-Lastausgleich mit Application Request Routing
von IIS-Team
Übersicht
Dieses Thema führt den Leser durch die Schritte zum Konfigurieren des Anwendungsanforderungsroutings zum Lastenausgleich von HTTP-Anforderungen, um hohe Verfügbarkeit und Skalierbarkeit zu erreichen. In der exemplarischen Vorgehensweise werden auch einige wichtige Features zum Überwachen der Integrität der Inhaltsserver und die Affinität von Anforderungen von einem Client zu einem Inhaltsserver hervorgehoben.
Ziel
So laden Sie HTTP-Anforderungen auf mehreren Inhaltsservern mithilfe des Anwendungsanforderungsroutings wie unten dargestellt:
Voraussetzungen
Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:
- IIS 7.0 oder höher unter Windows 2008 (beliebige SKU) oder höher.
- Microsoft Routing von Anwendungsanforderungen Version 1 und abhängige Module.
- Mindestens zwei Anwendungsserver mit funktionierenden Websites und Anwendungen.
Befolgen Sie die Schritte in diesem Dokument, um Routing von Anwendungsanforderungen zu installieren.
Eine weitere Voraussetzung ist, dass der Leser zwei Serverfarmen definiert und konfiguriert hat, indem er die Schritte in Definieren und Konfigurieren einer Servergruppe mit Routing von Anwendungsanforderungen (ARR) ausführt.
Schritt 1: Überprüfen von Regeln zum Neuschreiben von URLs
Sofern die Serverfarm mithilfe der in Definieren und Konfigurieren einer (ARR)-Servergruppebeschriebenen Schritte erstellt wurde, wurden die URL-Umschreibungsregeln bereits für ein einfaches Lastenausgleichsszenario erstellt.
So verifizieren Sie URL-Umschreibungsregeln mithilfe der Benutzeroberfläche:
- Starten Sie den IIS-Manager.
- Wählen Sie die Serverfarm myServerFarm aus, die in Definieren und Konfigurieren einer Servergruppe mit Routing von Anwendungsanforderungen (ARR) erstellt wurde.
- Die folgenden Symbole werden angezeigt:
- Doppelklicken Sie auf Routingregeln.
- Stellen Sie sicher, dass das Kontrollkästchen URL umschreiben, um eingehende Anforderungen zu prüfen, aktiviert ist.
- SSL-Abladung ist standardmäßig aktiviert. Wenn dieses Feature aktiviert ist, erfolgt die gesamte Kommunikation zwischen dem ARR-Server und den Anwendungsservern in Klartext, auch für HTTPS-Anforderungen von Clients an den ARR-Server. Wenn sowohl der ARR-Server als auch die Anwendungsserver in einem vertrauenswürdigen Netzwerk bereitgestellt werden, z. B. innerhalb desselben Rechenzentrums, wird durch die Aktivierung der SSL-Abladung keine Sicherheit geopfert. Außerdem kann die Aktivierung dieses Features dazu beitragen, die Serverressourcen auf den Anwendungsservern zu maximieren, da sie keine Zyklen beim Verschlüsseln und Entschlüsseln von Anforderungen und Antworten ausgeben müssen.
Deaktivieren Sie zum Deaktivieren des SSL-Abladens das Kontrollkästchen SSL-Abladen aktivieren, und klicken Sie dann auf Anwenden. - Öffnen Sie einen Browser, und senden Sie mehrere Anforderungen an den ARR-Server.
- Um zu überprüfen, ob die Anforderungen zwischen den Anwendungsservern lastenausgeglichen werden, wählen Sie myServerFarm aus. Doppelklicken Sie auf Überwachung und Verwaltung.
- Überprüfen Sie in der Dashboardansicht, ob die Anforderungen gleichmäßig verteilt werden.
So überprüfen Sie die URL-Umschreibungsregeln mithilfe der Befehlszeile:
Öffnen Sie eine Eingabeaufforderung mit Administrator-Rechten.
Navigieren Sie zu
%windir%\system32\inetsrv
.Um sicherzustellen, dass die URL-Umschreibregeln ordnungsgemäß erstellt wurden, geben Sie appcmd.exe Listenkonfiguration -section:system.webServer/rewrite/globalRules ein. Dies gibt die globalRules zurück, die wie folgt aussehen:
<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>
Um SSL-Abladung zu deaktivieren, entfernen Sie zuerst alle URL-Umschreibregeln:
appcmd.exe clear config -section:system.webServer/rewrite/globalRules
Erstellen Sie dann die URL-Umschreibregeln, um HTTPS-Datenverkehr weiterzuleiten. Mit dieser Regel leitet ARR Anforderungen mit 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-Umschreibungsregeln, 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
Geben Sie appcmd.exe Listenkonfiguration -section:system.webServer/rewrite/globalRules ein, um zu überprüfen, ob die URL-Umschreibungsregeln ordnungsgemäß erstellt wurden. Dies gibt die globalRules zurück, die wie folgt aussehen:
<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
Das Routing von Anwendungsanforderungen überwacht den Status 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 gestellt werden. Der explizite URL-Test ist ein zusätzlicher Test, der mit dem Live-Datenverkehrstest verwendet werden kann. In diesem Abschnitt werden Sie durch die exemplarische Vorgehensweise durch die Konfiguration des expliziten URL-Tests geführt.
So konfigurieren Sie die Integritätsprüfungsüberwachung mithilfe der Benutzeroberfläche:
- Für den URL-Test muss eine bestimmte URL getestet werden. Verwenden Sie den Editor, um diese Anforderung zu erfüllen, um eine Textdatei namens healthCheck.txt zu erstellen, die den Satz Ich bin fehlerfrei enthält.
- Platzieren Sie die Datei healthCheck.txt auf den Anwendungsservern.
- Stellen Sie sicher, dass die Datei healthCheck.txt ordnungsgemäß gerendert wird, indem Sie die Seite in einem Browser öffnen.
- Wählen Sie im IIS-Manager die Serverfarm myServerFarm aus. Die folgenden Symbole werden angezeigt:
- Doppelklicken Sie auf Integritätstest.
- Geben Sie
http://(server name or FQDN of ARR server)/healthCheck.txt
als URL-Wert ein. - Geben Sie Integrität als Antwort-Übereinstimmungswert ein. Die Antwortübereinstimmung 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 integer. enthält, sucht die Antwortübereinstimmung nach dem Wort Integer.
- Klicken Sie auf Übernehmen, um die Änderungen zu speichern.
- Um die Funktionalität der Integritätsprüfungsüberwachung zu überprüfen, beenden Sie die überwachte Website auf einem der Anwendungsserver. Da der Intervallwert (Sekunden) auf 30 Sekunden festgelegt ist, warten Sie 30 Sekunden auf die nächste Integritätsprüfung.
- Nachdem Sie 30 Sekunden gewartet haben, senden Sie mehrere Anforderungen an den ARR-Server.
- Um zu überprüfen, ob alle Anforderungen zu den integeren Servern wechseln, doppelklicken Sie auf Überwachung und Verwaltung, und aktualisieren Sie das Dashboard mithilfe der F5-TASTE. Beachten Sie, dass die Laufzeitstatistiken zurückgesetzt wurden. Es handelt sich hierbei um ein beabsichtigtes Verhalten. Möglicherweise möchten Sie bei Bedarf zusätzliche Anforderungen senden und das Dashboard aktualisieren.
- Die Integritätsüberwachung wird auch verwendet, um zu erkennen, wann ein fehlerhafter Server fehlerfrei wird. Um diese Funktionalität zu überprüfen, starten Sie die Website, die in Schritt 9 beendet wurde. Da der Intervallwert (Sekunden) wieder auf 30 Sekunden festgelegt ist, warten Sie 30 Sekunden auf die nächste Integritätsprüfung.
- Nachdem Sie 30 Sekunden gewartet haben, senden Sie mehrere Anforderungen an den ARR-Server.
- Aktualisieren Sie das Dashboard im IIS-Manager, um zu überprüfen, ob die Anforderungen gleichmäßig zwischen Servern verteilt werden. Beachten Sie, dass die Laufzeitstatistiken zurückgesetzt wurden. Es handelt sich hierbei um ein beabsichtigtes Verhalten. Möglicherweise möchten Sie bei Bedarf zusätzliche Anforderungen senden und das Dashboard aktualisieren.
So konfigurieren Sie die Überwachung der Integritätsprüfung mithilfe der Befehlszeile:
Öffnen Sie eine Eingabeaufforderung mit Administrator-Rechten.
Navigieren Sie zu
%windir%\system32\inetsrv
.Zum Festlegen der URL auf
http://(server name or FQDN of ARR server)/healthCheck.txt
mit Ich bin integer. 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
Anwendungsanforderungsrouting bietet ein Clientaffinitätsfeature, das einen Client einem Inhaltsserver hinter Anwendungsanforderungsrouting für die Dauer einer Clientsitzung zuordnet. Wenn dieses Feature aktiviert ist, wird der Lastenausgleichsalgorithmus nur für die erste Anforderung vom Client angewendet. Ab diesem Zeitpunkt werden alle nachfolgenden Anforderungen desselben Clients für die Dauer der Clientsitzung an denselben Inhaltsserver weitergeleitet. Dieses Feature ist nützlich, wenn die Anwendung auf dem Inhaltsserver zustandsbehaftet 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:
- Starten Sie den IIS-Manager.
- Wählen Sie die Serverfarm myServerFarm aus, die in Definieren und Konfigurieren einer Servergruppe mit Routing von Anwendungsanforderungen (ARR) erstellt wurde.
- Die folgenden Symbole werden angezeigt:
- Doppelklicken Sie auf Serveraffinität.
- Markieren Sie zum Aktivieren der Clientaffinität das Kontrollkästchen Clientaffinität, und klicken Sie dann auf Anwenden.
Anwendungsanforderungsrouting verwendet ein Cookie, um die Clientaffinität zu ermöglichen. Der Cookie-Name wird verwendet, um das Cookie auf dem Client festzulegen. Der Kunde muss jedoch Cookies akzeptieren, damit die Kundenaffinität ordnungsgemäß funktioniert. - 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 (Monitoring and Management). Stellen Sie sicher, dass sich die Laufzeitstatistiken nur für einen der Anwendungsserver ändern, auf den der Client zusammengefasst ist. Möglicherweise möchten Sie bei Bedarf zusätzliche Anforderungen senden und das Dashboard aktualisieren.
So konfigurieren Sie die Clientaffinität mithilfe der Befehlszeile:
Öffnen Sie eine Eingabeaufforderung mit Administrator-Rechten.
Navigieren Sie zu
%windir%\system32\inetsrv
.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 ordnungsgemäße Möglichkeit, den Server aus der Serverfarmumgebung zu nehmen. Es ist sinnvoller, wenn die Clientaffinitätsfunktion verwendet wird, da Anwendungsanforderungsrouting die vorhandenen Sitzungen berücksichtigt, wenn neue Verbindungen nicht zugewiesen werden. Das heißt, wenn ein Client auf dem Server zusammengefasst ist, der neue Verbindungen nicht zulässt, wird der Client weiterhin an denselben Server weitergeleitet, und daher hat es keine Auswirkungen auf den Client. Es werden jedoch keine neuen Clients an den Server weitergeleitet, der neue Verbindungen nicht zulässt.
So verbieten Sie neue Verbindungen mithilfe der Benutzeroberfläche:
- Identifizieren Sie mithilfe des Setups aus Schritt 3 den Server, zu dem Ihr Client affinitiert ist.
- Wählen Sie die Serverfarm myServerFarm aus, die in Definieren und Konfigurieren einer Servergruppe mit Routing von Anwendungsanforderungen (ARR) erstellt wurde.
- Die folgenden Symbole werden angezeigt:
- Doppelklicken Sie auf Überwachung und Verwaltung.
- Wählen Sie den Server aus, auf dem Ihr Client zusammengefasst ist. Klicken Sie im Bereich Aktionen auf Neue Verbindungen nicht zulassen.
- Klicken Sie im Bestätigungsdialogfeld auf Ja.
- Um zu überprüfen, ob die Anforderungen von Ihren Clients weiterhin an den zusammenfassenden Server weitergeleitet werden, der jetzt neue Verbindungen nicht mehr zulässt, 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 dem der Client zusammengefasst ist. Möglicherweise möchten Sie bei Bedarf zusätzliche Anforderungen senden und das Dashboard aktualisieren.
- Um sicherzustellen, dass neue Clients nicht an den Server weitergeleitet werden, der neue Verbindungen nicht zulässt, entfernen Sie das Cookie, das durch Anwendungsanforderungsrouting festgelegt wurde, indem Sie den Browser schließen und neu starten.
- 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 Server ändern, die Verfügbar sind. Überprüfen Sie insbesondere, ob die Laufzeitstatistiken für den Server nicht mehr zugeordnet werden, um neue Verbindungen zu verhindern. Möglicherweise möchten Sie bei Bedarf zusätzliche Anforderungen senden und das Dashboard aktualisieren.
Zusammenfassung
Sie haben nun eine Reihe von Einstellungen für Anwendungsanforderungsrouting erfolgreich konfiguriert, um die Auslastung gleichmäßig zu skalieren und zu verteilen. Weitere erweiterte Routingfunktionen mit Anwendungsanforderungsrouting finden Sie unter Verwendung von Routing von Anwendungsanforderungen.