Delen via


Problemen met de sessieaffiniteit van de Azure Application Gateway oplossen

Meer informatie over het vaststellen en oplossen van problemen met sessieaffiniteit met Azure-toepassing Gateway.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Overzicht

De functie sessieaffiniteit op basis van cookies is handig om een gebruikerssessie op dezelfde server te houden. Met behulp van de gatewaybeheerde cookies kan de Application Gateway het daarop volgende verkeer van een gebruikerssessie naar dezelfde server leiden voor verwerking. Dit is belangrijk wanneer de sessiestatus lokaal wordt opgeslagen op de server voor een gebruikerssessie. Sessieaffiniteit wordt ook wel plaksessies genoemd.

Notitie

Application Gateway v1 geeft een cookie met de naam ARRAffinity, die wordt gebruikt om verkeer naar hetzelfde lid van de back-endpool te leiden. In Application Gateway v2 is de naam van deze cookie gewijzigd in ApplicationGatewayAffinity. Voor dit document wordt ApplicationGatewayAffinity als voorbeeld gebruikt, kan ARRAffinity worden vervangen in waar van toepassing op Application Gateway v1-exemplaren.

Mogelijke oorzaken van problemen

Het probleem bij het onderhouden van sessieaffiniteit op basis van cookies kan worden veroorzaakt door de volgende hoofdredenen:

  • Instelling 'Affiniteit op basis van cookies' is niet ingeschakeld
  • Uw toepassing kan geen affiniteit op basis van cookies verwerken
  • Toepassing maakt gebruik van affiniteit op basis van cookies, maar aanvragen worden nog steeds tussen back-endservers verzonden

Soms kunnen de problemen met sessieaffiniteit optreden wanneer u vergeet de instelling 'Affiniteit op basis van cookies' in te schakelen. Volg de instructies om te bepalen of u de instelling 'Affiniteit op basis van cookies' hebt ingeschakeld op het tabblad Back-endinstellingen in Azure Portal:

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer Alle resources in het linkernavigatiedeelvenster. Selecteer de naam van de toepassingsgateway in de blade Alle resources. Als het abonnement dat u hebt geselecteerd al meerdere resources bevat, kunt u de naam van de toepassingsgateway invoeren in het vak Filteren op naam... om eenvoudig toegang te krijgen tot de toepassingsgateway.

  3. Selecteer het tabblad Back-endinstellingen onder INSTELLINGEN.

    Schermopname toont INSTELLINGEN met Backend-instellingen geselecteerd.

  4. Selecteer de back-endinstelling en controleer op de pagina Back-endinstelling toevoegen of affiniteit op basis van cookies is ingeschakeld.

    Schermopname van de gateway-instellingen voor een app-gateway, inclusief of affiniteit op basis van cookies is geselecteerd.

U kunt ook controleren of de waarde van 'CookieBasedAffinity' is ingesteld op Ingeschakeld onder 'backendHttpSettingsCollection' met behulp van een van de volgende methoden:

"cookieBasedAffinity": "Enabled", 

Oorzaak

De toepassingsgateway kan alleen op sessies gebaseerde affiniteit uitvoeren met behulp van een cookie.

Tijdelijke oplossing

Als de toepassing geen affiniteit op basis van cookies kan verwerken, moet u een externe of interne Azure-load balancer of een andere externe oplossing gebruiken.

Symptoom

U hebt de instelling Affiniteit op basis van cookies ingeschakeld. Wanneer u de Application Gateway opent met behulp van een korte naam-URL in Internet Explorer, bijvoorbeeld: http://website, blijft de aanvraag nog steeds tussen de back-end servers wisselen.

Volg de instructies om dit probleem te identificeren:

  1. Neem een webdebugger-trace op de "Client" die verbinding maakt met de toepassing achter de Application Gateway (in dit voorbeeld gebruiken we Fiddler). Tip Als u niet weet hoe u Fiddler moet gebruiken, schakelt u onderaan de optie 'Ik wil netwerkverkeer verzamelen en analyseren met behulp van een web debugger' in.

  2. Controleer en analyseer de sessielogboeken om te bepalen of de cookies van de client de ApplicationGatewayAffinity-gegevens bevatten. Als u de details van ApplicationGatewayAffinity, zoals ApplicationGatewayAffinity=ApplicationGatewayAffinity=ApplicationGatewayAffinityValue, niet vindt in de cookieset, betekent dit dat de client niet reageert met de cookie ApplicationGatewayAffinity, die wordt geleverd door de Application Gateway. Voorbeeld:

    Schermopname van een sessielogboek met één vermelding gemarkeerd.

    Schermopname van aanvraagheaders voor H T T P, inclusief cookie-informatie.

De toepassing blijft proberen de cookie in te stellen voor elke aanvraag totdat het antwoord wordt weergegeven.

Oorzaak

Dit probleem treedt op omdat Internet Explorer en andere browsers de cookie mogelijk niet opslaan of gebruiken met een korte naam-URL.

Resolutie

U kunt dit probleem oplossen door toegang te krijgen tot application gateway met behulp van een FQDN (Fully Qualified Domain Name). Gebruik bijvoorbeeld http://website.com of http://appgw.website.com .

Aanvullende logboeken voor probleemoplossing

U kunt extra logboeken verzamelen en analyseren om problemen met betrekking tot sessieaffiniteit op basis van cookies op te lossen

Application Gateway-logboeken analyseren

Volg de instructies om de Application Gateway-logboeken te verzamelen:

Schakel logboekregistratie in met behulp van Azure Portal.

  1. Zoek uw resource in Azure Portal en selecteer vervolgens diagnostische instelling.

    Voor Application Gateway zijn drie logboeken beschikbaar: Toegangslogboek, Prestatielogboek en Firewall-logboek.

  2. Selecteer Diagnostische instelling toevoegen om te beginnen met het verzamelen van gegevens.

    Schermopname van een toepassingsgateway met diagnostische instellingen geselecteerd.

  3. De pagina Diagnostische instelling bevat de instellingen voor de diagnostische logboeken. In dit voorbeeld worden de logboeken opgeslagen in Log Analytics. U kunt ook Event Hubs en een opslagaccount gebruiken om de diagnostische logboeken op te slaan.

    Schermopname van het deelvenster Diagnostische instellingen met Log Analytics Configureren geselecteerd.

  4. Bevestig de instellingen en selecteer Opslaan.

Webdebugger gebruiken om het HTTP- of HTTPS-verkeer vast te leggen en te analyseren

Hulpprogramma's voor webfoutopsporing, zoals Fiddler, kunnen u helpen bij het opsporen van fouten in webtoepassingen door netwerkverkeer tussen internet en testcomputers vast te leggen. Met deze hulpprogramma's kunt u binnenkomende en uitgaande gegevens inspecteren wanneer de browser deze ontvangt/verzendt. Fiddler heeft in dit voorbeeld de optie HTTP-herhaling waarmee u problemen aan de clientzijde kunt oplossen met webtoepassingen, met name voor verificatieproblemen.

Gebruik het webdebugger van uw keuze. In dit voorbeeld gebruiken we Fiddler om http- of https-verkeer vast te leggen en te analyseren. Volg de instructies:

  1. Download Fiddler.

    Notitie

    Kies Fiddler4 als op de opnamecomputer .NET 4 is geïnstalleerd. Anders kunt u kiezen voor Fiddler2.

  2. Klik met de rechtermuisknop op het uitvoerbare installatieprogramma en voer deze uit als beheerder om te installeren.

    Schermopname van het Installatieprogramma van Fiddler met een contextmenu waarin Uitvoeren als administrator is geselecteerd.

  3. Wanneer u Fiddler opent, wordt het verkeer automatisch vastgelegd (let op de opname in de linkerbenedenhoek). Druk op F12 om het vastleggen van verkeer te starten of te stoppen.

    Schermopname van het Fiddler Web Debugger met de indicator Vastleggen gemarkeerd.

  4. Waarschijnlijk bent u geïnteresseerd in ontsleuteld HTTPS-verkeer en kunt u HTTPS-ontsleuteling inschakelen door ExtraFiddler-opties> te selecteren en het selectievakje HTTPS-verkeer ontsleutelen in te schakelen.

    Schermopname van Opties in Fiddler met H T T P geselecteerd en HTTPS-verkeer ontsleutelen geselecteerd.

  5. U kunt eerdere niet-gerelateerde sessies verwijderen voordat u het probleem reproduceert door op X (pictogram) > verwijderen te klikken als volgt:

    Schermopname met het X-pictogram geselecteerd, waarin de optie Alles verwijderen wordt weergegeven.

  6. Nadat u het probleem hebt gereproduceerd, slaat u het bestand op voor beoordeling door Bestand>Opslaan>Alle sessies.. te selecteren.

    Schermopname met de optie Alle sessies opslaan geselecteerd.

  7. Controleer en analyseer de sessielogboeken om te bepalen wat het probleem is.

    Voorbeelden:

  • Voorbeeld A: U vindt een sessielogboek dat de aanvraag wordt verzonden vanaf de client en gaat naar het openbare IP-adres van de Application Gateway. Selecteer dit logboek om de details weer te geven. Aan de rechterkant zijn de data in het onderste vak die de Application Gateway naar de client terugstuurt. Selecteer het tabblad "RAW" en bepaal of de client een "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" ontvangt. Als er geen cookie is, is sessieaffiniteit niet ingesteld of past de Application Gateway de cookie niet toe aan de client.

    Notitie

    Deze waarde van ApplicationGatewayAffinity is de cookie-id, die de Application Gateway instelt voordat de client naar een bepaalde back-endserver wordt verzonden.

    Schermopname van een voorbeeld van details van een logboekvermelding met de waarde Set-Cookie gemarkeerd.

  • Voorbeeld B: Het volgende sessielogboek, dat volgt op het vorige, toont hoe de client reageert op de Application Gateway, die de ApplicationGatewayAffinity heeft ingesteld. Als de cookie-id van ApplicationGatewayAffinity overeenkomt, moet het pakket worden verzonden naar dezelfde back-endserver die eerder is gebruikt. Controleer de volgende regels van de HTTP-communicatie om te zien of de ApplicationGatewayAffinity-cookie van de client verandert.

    Schermopname van een voorbeeld van details van een logboekvermelding met een cookie gemarkeerd.

Notitie

Voor dezelfde communicatiesessie mag de cookie niet veranderen. Controleer het bovenste vakje rechts, selecteer het tabblad "Cookies" om te zien of de client de cookie gebruikt en terugstuurt naar de Applicationgateway. Als dat niet het geval is, bewaart de clientbrowser de cookie niet en gebruikt deze ook niet voor gesprekken. Soms kan het zijn dat de cliënt liegt.

Volgende stappen

Als het probleem niet wordt opgelost met de voorgaande stappen, opent u een ondersteuningsticket.