Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du diagnostiserar och löser problem med sessionstillhörighet med Azure Application Gateway.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Översikt
Funktionen cookiebaserad sessionstillhörighet är användbar för att hålla en användarsession på samma server. Genom att använda gatewayhanterade cookies kan Application Gateway dirigera efterföljande trafik från en användarsession till samma server för bearbetning. Det här är viktigt i de fall där sessionstillstånd har sparats lokalt på servern för en användarsession. Sessionstillhörighet kallas även klistriga sessioner.
Kommentar
Application Gateway v1 utfärdar en cookie med namnet ARRAffinity, som används för att dirigera trafik till samma medlem i serverdelspoolen. I Application Gateway v2 har den här cookien bytt namn till ApplicationGatewayAffinity. I det här dokumentet används ApplicationGatewayAffinity som exempel, ARRAffinity kan i förekommande fall ersättas med Application Gateway v1-instanser.
Möjliga problemorsaker
Problemet med att upprätthålla cookiebaserad sessionstillhörighet kan inträffa på grund av följande huvudsakliga orsaker:
- Inställningen "Cookiebaserad tillhörighet" är inte aktiverad
- Ditt program kan inte hantera cookiebaserad tillhörighet
- Applikationen använder cookiebaserad tillhörighet men begäranden studsar fortfarande mellan backendservrar.
Kontrollera om inställningen "Cookiebaserad tillhörighet" är aktiverad
Ibland kan problem med sessionstillhörighet uppstå när du glömmer att aktivera inställningen "Cookiebaserad tillhörighet". Följ anvisningarna för att avgöra om du har aktiverat inställningen "Cookiebaserad tillhörighet" på fliken Serverdelsinställningar i Azure-portalen:
Logga in på Azure-portalen.
I det vänstra navigeringsfönstret väljer du Alla resurser. Välj namnet på programgatewayen på bladet Alla resurser. Om den prenumeration som du valde redan har flera resurser kan du ange namnet på programgatewayen i rutan Filtrera efter namn... för att enkelt komma åt programgatewayen.
Välj fliken Inställningar för serverdel under INSTÄLLNINGAR.
Välj serverdelsinställningen och kontrollera om cookiebaserad tillhörighet är aktiverad på sidan Lägg till serverdelsinställning.
Du kan också kontrollera att värdet för "CookieBasedAffinity" är inställt på Aktiverad under "backendHttpSettingsCollection" med någon av följande metoder:
- Kör Get-AzApplicationGatewayBackendHttpSetting i PowerShell
- Titta igenom JSON-filen med hjälp av Azure Resource Manager-mallen
"cookieBasedAffinity": "Enabled",
Programmet kan inte hantera cookiebaserad tillhörighet
Orsak
Programgatewayen kan bara utföra sessionsbaserad tillhörighet med hjälp av en cookie.
Provisorisk lösning
Om programmet inte kan hantera cookiebaserad tillhörighet måste du använda en extern eller intern Azure-lastbalanserare eller en annan lösning från tredje part.
Applikationen använder cookiebaserad tillhörighet men begäranden studsar fortfarande mellan backendservrar.
Symptom
Du har aktiverat inställningen för cookiebaserad tillhörighet. När du kommer åt Application Gateway med en kort namn-URL i Internet Explorer, exempelvis http://website, så studsar begäran fortfarande mellan back-end-servrar.
Följ anvisningarna för att identifiera det här problemet:
Ta en spårning med ett webbfelsökningsverktyg på "Klienten" som ansluter till applikationen bakom Application Gateway (Vi använder Fiddler i det här exemplet). Tips Om du inte vet hur du använder Fiddler kontrollerar du alternativet "Jag vill samla in nätverkstrafik och analysera den med hjälp av webbfelsökaren" längst ned.
Kontrollera och analysera sessionsloggarna för att avgöra om de cookies som tillhandahålls av klienten har information om ApplicationGatewayAffinity. Om du inte hittar informationen om ApplicationGatewayAffinity, till exempel "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" i cookieuppsättningen, innebär det att klienten inte svarar med ApplicationGatewayAffinity-cookien, som tillhandahålls av Application Gateway. Till exempel:
Programmet fortsätter att försöka ställa in cookien för varje begäran tills den får svar.
Orsak
Det här problemet beror på att Internet Explorer och andra webbläsare kanske inte lagrar eller använder cookien med en kort namn-URL.
Åtgärd
För att åtgärda det här problemet bör du komma åt Application Gateway med hjälp av ett fullständigt kvalificerat domännamn (FQDN). Använd till exempel http://website.com eller http://appgw.website.com .
Ytterligare loggar för felsökning
Du kan samla in ytterligare loggar och analysera dem för att felsöka problem med cookiebaserad sessionstillhörighet
Analysera Application Gateway loggar
Följ anvisningarna för att samla in Application Gateway-loggarna:
Aktivera loggning med hjälp av Azure Portal.
Leta reda på resursen i Azure Portal och välj sedan Diagnostikinställning.
För Application Gateway är tre loggar tillgängliga: åtkomstlogg, prestandalogg och brandväggslogg.
Om du vill börja samla in data väljer du Lägg till diagnostikinställning.
Sidan Diagnostikinställning innehåller inställningarna för diagnostikloggarna. I det här exemplet lagrar Log Analytics loggarna. Du kan också använda händelsehubbar och ett lagringskonto till att spara dina diagnostiska loggar.
Bekräfta inställningarna och välj sedan Spara.
Använda webbfelsökaren för att samla in och analysera HTTP- eller HTTPS-trafik
Webbfelsökningsverktyg som Fiddler kan hjälpa dig att felsöka webbprogram genom att samla in nätverkstrafik mellan Internet och testa datorer. Med de här verktygen kan du inspektera inkommande och utgående data när webbläsaren tar emot/skickar dem. Fiddler har alternativet för HTTP-uppspelning som kan hjälpa dig att felsöka problem på klientsidan med webbapplikationer, särskilt vid autentiseringsproblem.
Använd valfritt webbfelsökare. I det här exemplet använder vi Fiddler för att samla in och analysera http- eller https-trafik genom att följa anvisningarna:
Ladda ned Fiddler.
Kommentar
Välj Fiddler4 om avbildningsdatorn har .NET 4 installerat. Annars väljer du Fiddler2.
Högerklicka på den körbara installationen och kör som administratör för att installera.
När du öppnar Fiddler bör den automatiskt börja samla in trafik (observera avbildningen i det nedre vänstra hörnet). Tryck på F12 för att starta eller stoppa trafikinsamlingen.
Troligtvis är du intresserad av dekrypterad HTTPS-trafik och du kan aktivera HTTPS-dekryptering genom att välja Verktyg>Fiddler-alternativ och markera kryssrutan " Dekryptera HTTPS-trafik".
Du kan ta bort tidigare orelaterade sessioner innan du återskapar problemet genom att klicka på X (ikon) >Ta bort alla enligt följande skärmbild:
När du har återskapat problemet sparar du filen för granskning genom att välja Spara>>alla sessioner...
Kontrollera och analysera sessionsloggarna för att avgöra vad problemet är.
Exempel:
Exempel A: Du hittar en sessionslogg där begäran skickas från klienten och går till den offentliga IP-adressen för Application Gateway. Välj den här loggen för att visa detaljerna. Till höger är data i den nedre rutan vad Application Gateway returnerar till klienten. Välj fliken "RAW" och avgör om klienten får en "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue". Om det inte finns någon cookie har sessionstillhörighet inte angetts eller om Application Gateway inte tillämpar cookien tillbaka på klienten.
Kommentar
Det här ApplicationGatewayAffinity-värdet är cookie-ID som Application Gateway anger för att klientens förfrågningar ska riktas till en viss bakomliggande server.
Exempel B: Nästa sessionslogg följt av den föregående är klienten som svarar tillbaka på Application Gateway, som har angett ApplicationGatewayAffinity. Om ApplicationGatewayAffinity-cookie-id matchar ska paketet skickas till samma backendserver som användes tidigare. Kontrollera följande flera rader med http-kommunikation för att se om klientens ApplicationGatewayAffinity-cookie ändras.
Kommentar
För samma kommunikationssession bör cookien inte ändras. Markera den övre rutan till höger, välj fliken Cookies för att se om klienten använder cookien och skicka tillbaka den till Application Gateway. Annars behåller inte klientwebbläsaren cookien och använder den för konversationer. Ibland kan klienten ljuga.
Nästa steg
Om föregående steg inte löser problemet öppnar du ett supportärende.