Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie Probleme mit der Sitzungsaffinität in Azure Application Gateway diagnostizieren und beheben.
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Überblick
Das Feature „Cookiebasierte Sitzungsaffinität“ ist hilfreich, wenn eine Benutzersitzung auf dem gleichen Server bleiben soll. Mithilfe von durch das Gateway verwalteten Cookies kann Application Gateway weiteren Datenverkehr einer Benutzersitzung zur Verarbeitung an den gleichen Server weiterleiten. Dies ist hilfreich, wenn der Sitzungsstatus für eine Benutzersitzung lokal auf dem Server gespeichert wird. Die Sitzungsaffinität wird auch als Sticky Sessions bezeichnet.
Hinweis
Application Gateway v1 gibt ein Cookie namens ARRAffinity aus, das verwendet wird, um Datenverkehr an dasselbe Back-End-Poolmitglied weiter zu senden. In Application Gateway v2 wurde dieses Cookie in ApplicationGatewayAffinity umbenannt. Für die Zwecke dieses Dokuments wird ApplicationGatewayAffinity als Beispiel verwendet, ARRAffinity kann gegebenenfalls für Anwendungsgateway v1-Instanzen ersetzt werden.
Mögliche Problemursachen
Das Problem bei der Aufrechterhaltung der cookiebasierten Sitzungsaffinität kann aufgrund der folgenden Hauptgründe auftreten:
- Die Einstellung "Cookiebasierte Affinität" ist nicht aktiviert.
- Ihre Anwendung kann cookiebasierte Affinität nicht verarbeiten
- Anwendung verwendet cookiebasierte Affinität, Anforderungen werden dennoch zwischen Back-End-Servern weitergeleitet
Überprüfen, ob die Einstellung „Cookiebasierte Affinität“ aktiviert ist
Manchmal sind die Probleme mit der Sitzungsaffinität darauf zurückzuführen, dass Sie vergessen haben, die Einstellung „Cookiebasierte Affinität“ zu aktivieren. Um festzustellen, ob Sie die Einstellung "Cookiebasierte Affinität" auf der Registerkarte "Back-End-Einstellungen" im Azure-Portal aktiviert haben, befolgen Sie die Anweisungen:
Melden Sie sich beim Azure-Portal an.
Wählen Sie im linken Navigationsbereich"Alle Ressourcen" aus. Wählen Sie den Namen des Anwendungs-Gateway im Bereich "Alle Ressourcen" aus. Falls das von Ihnen ausgewählte Abonnement bereits mehrere Ressourcen enthält, können Sie in das Feld Nach Name filtern den Namen des Anwendungsgateways eingeben, um problemlos auf das Anwendungsgateway zuzugreifen.
Wählen Sie die Registerkarte " Back-End-Einstellungen " unter "EINSTELLUNGEN" aus.
Wählen Sie die Back-End-Einstellung aus, und überprüfen Sie auf der Seite " Back-End-Einstellung hinzufügen ", ob cookiebasierte Affinität aktiviert ist.
Sie können auch den Wert von "CookieBasedAffinity" auf Enabled unter "backendHttpSettingsCollection" überprüfen, indem Sie eine der folgenden Methoden verwenden:
- Ausführen von Get-AzApplicationGatewayBackendHttpSetting in PowerShell
- Durchsuchen der JSON-Datei mithilfe der Azure Resource Manager-Vorlage
"cookieBasedAffinity": "Enabled",
Die Anwendung kann keine cookiebasierte Affinität verarbeiten.
Ursache
Das Anwendungsgateway kann sitzungsbasierte Affinität nur unter Verwendung eines Cookies ausführen.
Problemumgehung
Wenn die Anwendung keine cookiebasierte Affinität verarbeiten kann, müssen Sie einen externen oder internen Azure-Lastenausgleich oder eine andere Drittanbieterlösung verwenden.
Anwendung verwendet cookiebasierte Affinität, Anforderungen werden dennoch zwischen Back-End-Servern weitergeleitet
Symptom
Sie haben die Einstellung "Cookiebasierte Affinität" aktiviert. Wenn Sie auf das Anwendungsgateway zugreifen, indem Sie zum Beispiel eine Kurznamen-URL in Internet Explorer verwenden: http://website, wechselt die Anforderung immer noch zwischen Back-End-Servern.
Gehen Sie zum Beheben dieses Problems wie folgt vor:
Erstellen Sie eine Webdebuggerablaufverfolgung für den "Client", der eine Verbindung mit der Anwendung hinter dem Anwendungsgateway herstellt(Wir verwenden Fiddler in diesem Beispiel). Tipp: Wenn Sie mit der Verwendung von Fiddler nicht vertraut sind, aktivieren Sie die Option I want to collect network traffic and analyze it using web debugger (Ich möchte Netzwerkdatenverkehr mithilfe des Webdebuggers erfassen und analysieren) am unteren Rand.
Überprüfen und analysieren Sie die Sitzungsprotokolle, um zu ermitteln, ob die vom Client bereitgestellten Cookies die ApplicationGatewayAffinity-Details enthalten. Wenn Sie die ApplicationGatewayAffinity-Details nicht finden, z. B. "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" innerhalb der Cookie-Gruppe, bedeutet dies, dass der Client nicht mit dem ApplicationGatewayAffinity-Cookie antwortet, das vom Application Gateway bereitgestellt wird. Zum Beispiel:
In der Anwendung wird weiterhin versucht, das Cookie für jede Anforderung festzulegen, bis eine Antwort empfangen wird.
Ursache
Dieses Problem tritt auf, da das Cookie mit einer Kurznamen-URL in Internet Explorer und anderen Browsern möglicherweise nicht gespeichert oder verwendet wird.
Lösung
Um dieses Problem zu beheben, sollten Sie mithilfe eines vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) auf das Anwendungsgateway zugreifen. Verwenden Sie beispielsweise http://website.com oder http://appgw.website.com.
Zusätzliche Protokolle für die Problembehandlung
Sie können zusätzliche Protokolle erfassen und analysieren, um die Probleme in Bezug auf die cookiebasierte Sitzungsaffinität zu beheben.
Analysieren von Application Gateway-Protokollen
Gehen Sie zum Erfassen der Application Gateway-Protokolle wie folgt vor:
Aktivieren Sie die Protokollierung im Azure-Portal.
Suchen Sie im Azure-Portal nach Ihrer Ressource, und wählen Sie dann Diagnoseeinstellung aus.
Für Application Gateway sind drei Protokolle verfügbar: Zugriffsprotokoll, Leistungsprotokoll und Firewallprotokoll.
Um mit dem Sammeln von Daten zu beginnen, wählen Sie Diagnoseeinstellung hinzufügen aus.
Auf der Seite Diagnoseeinstellung finden Sie die Einstellungen für die Diagnoseprotokolle. In diesem Beispiel werden die Protokolle in Log Analytics gespeichert. Sie können auch Event Hubs und ein Speicherkonto verwenden, um die Diagnoseprotokolle zu speichern.
Bestätigen Sie die Einstellungen, und wählen Sie Speichern aus.
Erfassen und Analysieren des HTTP- oder HTTPS-Datenverkehrs mit dem Webdebugger
Webdebuggingtools wie Fiddler können Ihnen beim Debuggen von Webanwendungen helfen, indem Netzwerkdatenverkehr zwischen dem Internet und Testcomputern erfasst wird. Mit diesen Tools können Sie eingehende und ausgehende Daten überprüfen, wenn sie im Browser empfangen oder gesendet werden. Fiddler verfügt in diesem Beispiel über die HTTP-Wiedergabeoption, mit der Sie clientseitige Probleme mit Webanwendungen beheben können, insbesondere bei Authentifizierungsproblemen.
Sie können einen Webdebugger Ihrer Wahl verwenden. In diesem Beispiel verwenden wir Fiddler, um HTTP- oder HTTPS-Datenverkehr zu erfassen und zu analysieren, befolgen Sie die Anweisungen:
Laden Sie Fiddler herunter.
Hinweis
Wählen Sie Fiddler4 aus, wenn auf dem Computer, auf dem die Erfassung erfolgt, .NET 4 installiert ist. Wählen Sie andernfalls Fiddler2 aus.
Klicken Sie mit der rechten Maustaste auf die ausführbare Setupdatei, und führen Sie die Installation als Administrator aus.
Wenn Sie Fiddler öffnen, sollte die Erfassung von Datenverkehr automatisch gestartet werden. (Beachten Sie die Option „Capturing“ (Erfassen) in der linken unteren Ecke.) Drücken Sie F12, um die Erfassung von Datenverkehr zu starten oder zu beenden.
Wahrscheinlich interessieren Sie sich für entschlüsselten HTTPS-Datenverkehr, und Sie können die HTTPS-Entschlüsselung aktivieren, indem Sie "Extras>Fiddler-Optionen" auswählen und das Kontrollkästchen " HTTPS-Datenverkehr entschlüsseln" aktivieren.
Sie können vorherige nicht verknüpfte Sitzungen entfernen, bevor Sie das Problem reproduzieren, indem Sie wie im folgenden Screenshot gezeigt auf X (Symbol) >Alle entfernen klicken:
Nachdem Sie das Problem reproduziert haben, speichern Sie die Datei zur Überprüfung, indemSie>Alle Sitzungen speichern>"..
Überprüfen und analysieren Sie die Sitzungsprotokolle, um das Problem zu ermitteln.
Beispiele:
Beispiel A: Sie finden ein Sitzungsprotokoll, das zeigt, dass die Anforderung vom Client gesendet wird und zur öffentlichen IP-Adresse des Anwendungsgateways geht. Wählen Sie dieses Protokoll aus, um die Details anzuzeigen. Auf der rechten Seite sind im unteren Feld die Daten aufgeführt, die das Anwendungsgateway an den Client zurückgibt. Wählen Sie die Registerkarte „RAW“ aus, um zu ermitteln, ob der Client die Rückgabe „Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue“ empfängt. Wenn kein Cookie vorhanden ist, ist die Sitzungsaffinität nicht festgelegt, oder das Anwendungsgateway sendet das Cookie nicht zurück an den Client.
Hinweis
Dieser ApplicationGatewayAffinity-Wert ist die Cookie-ID, die das Anwendungsgateway für den Client festlegt und die dieser an einen bestimmten Back-End-Server senden muss.
Beispiel B: Im nächsten Sitzungsprotokoll ist angegeben, dass der Client dem Anwendungsgateway, das den ApplicationGatewayAffinit-Wert festgelegt hat, antwortet. Wenn die ApplicationGatewayAffinity-Cookie-ID übereinstimmt, sollte das Paket an den gleichen Back-End-Server gesendet werden, der zuvor verwendet wurde. Sehen Sie sich die nächsten Zeilen der HTTP-Kommunikation an, um zu überprüfen, ob sich das ApplicationGatewayAffinity-Cookie des Clients ändert.
Hinweis
Für dieselbe Kommunikationssitzung sollte sich das Cookie nicht ändern. Überprüfen Sie das obere Feld auf der rechten Seite. Wählen Sie die Registerkarte „Cookies“ aus, um zu überprüfen, ob der Client das Cookie verwendet und zurück an das Anwendungsgateway sendet. Wenn dies nicht der Fall ist, wird das Cookie im Clientbrowser nicht beibehalten und nicht für die Kommunikation verwendet. In einigen Fällen kann der Client falsche Informationen angeben.
Nächste Schritte
Sollte sich das Problem mit den oben genannten Schritten nicht beheben lassen, erstellen Sie ein Supportticket.