Dela via


Felsöka problem med sessionstillhörighet i Azure Application Gateway

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.

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:

  1. Logga in på Azure-portalen.

  2. 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.

  3. Välj fliken Inställningar för serverdel under INSTÄLLNINGAR.

    Skärmbild som visar INSTÄLLNINGAR med inställningar för serverdelen valda.

  4. Välj serverdelsinställningen och kontrollera om cookiebaserad tillhörighet är aktiverad på sidan Lägg till serverdelsinställning.

    Skärmbild som visar gatewayinställningarna för en appgateway, inklusive om cookiebaserad tillhörighet har valts.

Du kan också kontrollera att värdet för "CookieBasedAffinity" är inställt på Aktiverad under "backendHttpSettingsCollection" med någon av följande metoder:

"cookieBasedAffinity": "Enabled", 

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.

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:

  1. 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.

  2. 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:

    Skärmbild som visar en sessionslogg med en enda post markerad.

    Skärmbild som visar begärandehuvuden för H T T P, inklusive cookieinformation.

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.

  1. 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.

  2. Om du vill börja samla in data väljer du Lägg till diagnostikinställning.

    Skärmbild som visar en programgateway med diagnostikinställningar valda.

  3. 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.

    Skärmbild som visar fönstret Diagnostikinställningar med Log Analytics Configure valt.

  4. 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:

  1. Ladda ned Fiddler.

    Kommentar

    Välj Fiddler4 om avbildningsdatorn har .NET 4 installerat. Annars väljer du Fiddler2.

  2. Högerklicka på den körbara installationen och kör som administratör för att installera.

    Skärmbild som visar Installationsprogrammet för Fiddler med en snabbmeny med Kör som administratör valt.

  3. 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.

    Skärmbild som visar Fiddler Web Debugger med indikatorn Inspelning markerad.

  4. 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".

    Skärmbild som visar Alternativ i Fiddler med H T T P valt och Dekryptera HTTPS-trafik valt.

  5. 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:

    Skärmbild som visar X-ikonen markerad, som visar alternativet Ta bort alla.

  6. När du har återskapat problemet sparar du filen för granskning genom att välja Spara>>alla sessioner...

    Skärmbild som visar alternativet Spara alla sessioner markerade.

  7. 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.

    Skärmbild som visar ett exempel på information om en loggpost med värdet Set-Cookie markerat.

  • 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.

    Skärmbild som visar ett exempel på information om en loggpost med en cookie markerad.

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.