Kommentar
Å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.
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.
Kontrollera om inställningen "Cookiebaserad tillhörighet" är aktiverad
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:
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 anger du namnet på programgatewayen i rutan Filtrera efter namn... för att enkelt komma åt programgatewayen.
Välj fliken Serverdelsinställningar under INSTÄLLNINGAR.
Välj serverdelsinställningen. I inställningen Lägg till backend kontrollerar du om cookie-baserad affinity är aktiverad.
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:
- 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.
Ö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.
Applikationen använder cookiebaserad tillhörighet men begäranden studsar fortfarande mellan backend-servrar.
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:
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.
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=ApplicationGatewayAffinityValuei cookieuppsättningen, svarar inte klienten med den ApplicationGatewayAffinity-cookie som Application Gateway tillhandahåller. Till exempel:
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
- Använda en webbfelsökare för att samla in och analysera HTTP- eller HTTPS-trafiken
Analysera Application Gateway loggar
Följ dessa instruktioner för att samla in Application Gateway-loggar:
Aktivera loggning med hjälp av Azure-portalen.
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.
Välj Lägg till diagnostikinställning för att börja samla in data.
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.
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:
Ladda ned Fiddler.
Anmärkning
Välj Fiddler4 om insamlingsdatorn 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ö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.
Troligtvis är du intresserad av dekrypterad HTTPS-trafik. Aktivera HTTPS-dekryptering genom att välja Verktyg>Fiddler-alternativ och markera kryssrutan Dekryptera HTTPS-trafik.
Om du vill ta bort tidigare orelaterade sessioner innan du återskapar problemet väljer du X>Ta bort alla.
När du återskapar 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.
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.
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.
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.