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

Sammanfattning

Lär dig hur du diagnostiserar och löser problem med sessionstillhörighet med Azure Application Gateway. Genom att behålla användare på samma serverdelsserver kan du förbättra programmets prestanda.

Anmärkning

Använd Azure Az PowerShell-modulen för att interagera med Azure. Kom igång genom att läsa Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i 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 dirigerar Application Gateway efterföljande trafik från en användarsession till samma server för bearbetning. Den här funktionen är viktig om sessionstillståndet sparas lokalt på servern för en användarsession. Sessionstillhörighet kallas även klistriga sessioner.

Anmärkning

Application Gateway v1 använder en cookie med namnet ARRAffinity för att dirigera trafik till samma medlem i serverdelspoolen. I Application Gateway v2 byter den här cookien namn till ApplicationGatewayAffinity. I det här dokumentet används ApplicationGatewayAffinity som exempel. ARRAffinity kan ersätta Application Gateway v1-instanser där det är tillämpligt.

Möjliga problemorsaker

Problem med att upprätthålla cookiebaserad sessionstillhörighet kan inträffa av följande skäl:

  • Du har inte aktiverat inställningen Cookiebaserad tillhörighet .
  • Din applikation kan inte hantera cookiebaserad affinitet.
  • Din ansökan använder cookiebaserad affinitet, men begäranden studsar fortfarande mellan back-end-servrar.

Problem med sessionstillhörighet kan uppstå om du glömmer att aktivera inställningen "Cookiebaserad tillhörighet". Följ dessa steg för att kontrollera 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 anger du namnet på programgatewayen i rutan Filtrera efter namn... för att enkelt komma åt programgatewayen.

  3. Välj fliken Serverdelsinställningar under INSTÄLLNINGAR.

    Skärmbild av Azure-portalen med inställningar och serverdelsinställningar valda för en Application Gateway.

  4. Välj serverdelsinställningen. I inställningen Lägg till backend kontrollerar du om cookie-baserad affinity är aktiverad.

    Skärmbild av serverdelsinställningar som visar cookiebaserad tillhörighet som valts i Application Gateway.

Om du vill kontrollera om värdet för "CookieBasedAffinity" är inställt på Aktiverad under "backendHttpSettingsCollection" använder du någon av följande metoder:

"cookieBasedAffinity": "Enabled", 

Orsak

Programgatewayen kan bara utföra sessionsbaserad tillhörighet med hjälp av en cookie.

Övergångslö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.

Symtom

Du aktiverar inställningen cookiebaserad tillhörighet. När du kommer åt Application Gateway med hjälp av en kort namn-URL i Internet Explorer, till exempel http://website, växlar begäran fortfarande mellan backend-servrar.

Följ dessa anvisningar för att identifiera det här problemet:

  1. Ta en spårning av webbfelsökaren på klienten som ansluter till programmet bakom Application Gateway. I det här exemplet används Fiddler. 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 klienten tillhandahåller innehåller information om ApplicationGatewayAffinity. Om du inte hittar informationen om ApplicationGatewayAffinity, till exempel ApplicationGatewayAffinity=ApplicationGatewayAffinityValue i cookieuppsättningen, svarar inte klienten med den ApplicationGatewayAffinity-cookie som Application Gateway tillhandahåller. Till exempel:

    Skärmbild av en sessionslogg med en enda post markerad.

    Skärmbild av HTTP-begäranderubriker med cookieinformation markerad.

Programmet fortsätter att försöka ställa in cookien för varje begäran tills den får ett svar.

Orsak

Det här problemet beror på att Internet Explorer och andra webbläsare inte lagrar eller använder cookien med en kort namn-URL.

Upplösning

Du kan åtgärda problemet genom att komma åt Application Gateway med hjälp av ett fullständigt 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 och analysera extra loggar för att felsöka problem som rör cookiebaserad sessionstillhörighet.

Analysera Application Gateway loggar

Följ dessa instruktioner för att samla in Application Gateway-loggar:

Aktivera loggning med hjälp av Azure-portalen.

  1. I Azure-portalen letar du upp resursen och väljer sedan inställningen Diagnostic.

    För Application Gateway är tre loggar tillgängliga: åtkomstlogg, prestandalogg och brandväggslogg.

  2. Välj Lägg till diagnostikinställning för att börja samla in data.

    Skärmbild av 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 Azure Event Hubs och ett lagringskonto för att spara diagnostikloggarna.

    Skärmbild av fönstret Diagnostikinställningar med Log Analytics-konfigurationen vald.

  4. Bekräfta inställningarna och välj sedan Spara.

Använda en webbfelsökare för att samla in och analysera HTTP- eller HTTPS-trafiken

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 eller skickar dem. I det här exemplet har Fiddler alternativet HTTP-uppspelning som kan hjälpa dig att felsöka problem på klientsidan med webbprogram, särskilt autentiseringsproblem.

Använd valfritt webbfelsökare. I det här exemplet använder du Fiddler för att samla in och analysera HTTP- eller HTTPS-trafik. Följ anvisningarna:

  1. Ladda ned Fiddler.

    Anmärkning

    Välj Fiddler4 om insamlingsdatorn 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 av Installationsprogrammet för Fiddler med Kör som administratör valt.

  3. När du öppnar Fiddler börjar den automatiskt samla in trafik (observera insamlingen i det nedre vänstra hörnet). Tryck på F12 för att starta eller stoppa trafikinsamlingen.

    Skärmbild av Fiddler Web Debugger med inspelningsindikatorn markerad.

  4. Troligtvis är du intresserad av dekrypterad HTTPS-trafik. Aktivera HTTPS-dekryptering genom att välja Verktyg>Fiddler-alternativ och markera kryssrutan Dekryptera HTTPS-trafik.

    Skärmbild av Fiddler-alternativ med HTTPS valt och Dekryptera HTTPS-trafik aktiverat.

  5. Om du vill ta bort tidigare orelaterade sessioner innan du återskapar problemet väljer du X>Ta bort alla.

    Skärmbild av X-menyn i Fiddler med Ta bort alla markerade.

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

    Skärmbild av menyn Arkiv i Fiddler med Spara alla sessioner markerat.

  7. Kontrollera och analysera sessionsloggarna för att avgöra vad problemet är.

    Till exempel:

  • Exempel A: Du hittar en sessionslogg där begäran skickas från klienten och går till den offentliga IP-adressen till Application Gateway. Välj den här loggen om du vill visa informationen. 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.

    Anmärkning

    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 av loggpostinformation med värdet Set-Cookie markerat.

  • Exempel B: Nästa sessionslogg, efter den föregående, visar klienten som svarar till Application Gateway, vilket konfigurerar ApplicationGatewayAffinity. Om cookie-ID för ApplicationGatewayAffinity matchar går paketet 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 av loggpostinformation med ett cookievärde markerat.

Anmärkning

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.