Partager via


Résoudre des problèmes d’affinité de session dans Azure Application Gateway

Découvrez comment diagnostiquer et résoudre des problèmes d’affinité de session avec Azure Application Gateway.

Remarque

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Vue d’ensemble

La fonctionnalité d’affinité de session basée sur les cookies est utile pour conserver une session utilisateur sur le même serveur. En utilisant des cookies gérés de passerelle, la passerelle Application Gateway peut diriger le trafic pour traitement à partir d’une session utilisateur vers le même serveur. Ceci est important lorsque l’état de la session est enregistré localement sur le serveur pour une session utilisateur. L’affinité de session est également connue sous le terme de sessions permanentes.

Remarque

Application Gateway v1 émet un cookie appelé ARRAffinity, qui est utilisé pour diriger le trafic vers le même membre du pool de back-ends. Dans Application Gateway v2, ce cookie a été renommé ApplicationGatewayAffinity. Dans ce document, ApplicationGatewayAffinity sera utilisé comme exemple, et ARRAffinity pourra être utilisé à la place pour les instances Application Gateway v1 où cela s’applique.

Causes de problème possibles

Le problème du maintien de l’affinité de session basée sur des cookies peut se produire principalement pour les raisons suivantes :

  • Le paramètre « Affinité basée sur les cookies » n’est pas activé.
  • Votre application ne peut pas gérer l’affinité basée sur les cookies.
  • L’application utilise une affinité basée sur les cookies, mais les demandes continuent de rebondir entre les serveurs back-end.

Des problèmes d’affinité de session peuvent parfois se produire si vous oubliez d’activer le paramètre « Affinité basée sur les cookies ». Pour déterminer si vous avez l’activé sous l’onglet Paramètres HTTP dans le portail Azure, procédez comme suit :

  1. Connectez-vous au Portail Azure.

  2. Dans le volet de navigation gauche, cliquez sur Toutes les ressources. Cliquez sur le nom de la passerelle d’application dans le panneau Toutes les ressources. Si l’abonnement que vous avez sélectionné comporte déjà plusieurs ressources, vous pouvez saisir le nom de la passerelle applicative dans la zone Filtrer par nom pour accéder facilement à la passerelle applicative.

  3. Sous PARAMÈTRES, sélectionnez Paramètres HTTP.

    Capture d’écran qui montre PARAMÈTRES avec les paramètres HTTP sélectionnés.

  4. Sélectionnez le paramètre HTTP et, dans la page Ajouter un paramètre HTTP, vérifiez si l’affinité basée sur les cookies est activée.

    Capture d’écran qui montre les paramètres d’une passerelle applicative, y compris si l’affinité basée sur les cookies est sélectionnée.

Vous pouvez également vérifier que la valeur de CookieBasedAffinity est définie sur Activé sous backendHttpSettingsCollection en utilisant l’une des méthodes suivantes :

"cookieBasedAffinity": "Enabled", 

Cause

Le passerelle d’application ne peut gérer l’affinité de session qu’en utilisant un cookie.

Solution de contournement

Si l’application ne peut pas gérer l’affinité basée sur les cookies, vous devez utiliser un équilibreur de charge Azure interne ou externe ou une solution tierce.

Symptôme

Si vous avez activé le paramètre Affinité basée sur les cookies, lorsque vous accédez à Application Gateway via une URL au nom court telle que http://website dans Internet Explorer, la requête continuera de rebondir d’un serveur back-end à l’autre.

Pour identifier ce problème, suivez les instructions :

  1. Prenez une trace de débogueur web sur le « Client » qui se connecte à l’application derrière Application Gateway (nous utilisons Fiddler dans cet exemple). Conseil Si vous ignorez comment utiliser Fiddler, activez l’option I want to collect network traffic and analyze it using web debugger (Je veux collecter le trafic réseau et l’analyser à l’aide du débogueur web) en bas de la page.

  2. Vérifiez et analysez les journaux de session afin de déterminer si les cookies fournis par le client contiennent les détails ApplicationGatewayAffinity. Si vous ne trouvez pas les détails ApplicationGatewayAffinity, notamment « ApplicationGatewayAffinity= ApplicationGatewayAffinityValue » dans le jeu de cookies, cela signifie que le client ne répond pas avec le cookie ApplicationGatewayAffinity qui est fourni par Application Gateway. Par exemple :

    Capture d’écran qui montre un journal de session avec une entrée mise en évidence.

    Capture d’écran qui montre les en-têtes de requête pour HTTP, y compris les informations de cookie.

L’application continue d’essayer de définir le cookie sur chaque demande jusqu’à ce qu’elle reçoive une réponse.

Cause

Ce problème se produit parce que Internet Explorer et d’autres navigateurs ne peuvent pas stocker ou utiliser le cookie avec une URL au short name.

Résolution

Pour résoudre ce problème, vous devez accéder à la passerelle d’application en utilisant un nom de domaine complet. Par exemple, utilisez http://website.com ou http://appgw.website.com.

Journaux supplémentaires pour résoudre des problèmes

Vous pouvez collecter des journaux supplémentaires et les analyser pour résoudre des problèmes liés à l’affinité de session basée sur les cookies.

Analyser les journaux Application Gateway

Pour collecter les journaux Application Gateway, procédez comme suit :

Activez la journalisation dans le portail Azure.

  1. Dans le portail Azure, recherchez votre ressource, puis sélectionnez Paramètre de diagnostic.

    Pour Application Gateway, trois journaux sont disponibles : Journal d’accès, Journal des performances et Journal du pare-feu.

  2. Pour commencer à collecter des données, sélectionnez Ajouter un paramètre de diagnostic.

    Capture d’écran qui montre une passerelle applicative avec les paramètres de diagnostic sélectionnés.

  3. La page Paramètre de diagnostic contient les paramètres des journaux de diagnostic. Dans cet exemple, Log Analytics stocke les journaux d’activité. Vous pouvez également utiliser des concentrateurs d’événements et un compte de stockage pour enregistrer les journaux de diagnostic.

    Capture d’écran qui montre le volet Paramètres de diagnostic avec Log Analytics Configurer sélectionné.

  4. Confirmez les paramètres, puis sélectionnez Enregistrer.

Utiliser le débogueur web pour capturer et analyser les trafics HTTP ou HTTPS

Des outils de débogage web tels que Fiddler peuvent vous aider à déboguer des applications web en capturant le trafic réseau entre Internet et des ordinateurs de test. Ces outils vous permettent d’inspecter les données entrantes et sortantes à mesure que le navigateur les reçoit et les envoie. Dans cet exemple, Fiddler offre l’option de relecture HTTP qui peut vous aider à résoudre des problèmes d’applications web côté client, en particulier en lien avec l’authentification.

Utilisez le débogueur web de votre choix. Dans cet exemple, nous allons utiliser Fiddler pour capturer et analyser des trafics HTTP ou HTTPS. Procédez comme suit :

  1. Téléchargez Fiddler.

    Remarque

    Choisissez Fiddler4 si .NET 4 est installé sur l’ordinateur de capture. Sinon, choisissez Fiddler2.

  2. Cliquez avec le bouton droit sur l’exécutable d’installation, puis exécutez-le en tant qu’administrateur pour effectuer l’installation.

    Capture d’écran qui montre le programme d’installation de Fiddler avec un menu contextuel où l’option Exécuter en tant qu’administrateur est sélectionnée.

  3. Lorsque vous ouvrez Fiddler, l’application devrait démarrer automatiquement la capture du trafic (notez que vous pouvez voir l’opération en cours dans l’angle inférieur gauche). Appuyez sur F12 pour démarrer ou arrêter la capture du trafic.

    Capture d’écran qui montre le débogueur web Fiddler avec l’indicateur de capture mis en évidence.

  4. Comme vous vous intéressez très probablement au trafic HTTPS déchiffré, vous pouvez activer le déchiffrement HTTPS en sélectionnant Outils>Options Fiddler, puis en activant la case Déchiffrer le trafic HTTPS.

    Capture d’écran qui montre les options de Fiddler avec HTTP sélectionné et Decrypt HTTPS traffic sélectionné.

  5. Vous pouvez supprimer des sessions antérieures non liées avant de reproduire le problème en cliquant sur X (icône) >Supprimer tout comme dans la capture d’écran suivante :

    Capture d’écran qui montre l’icône X sélectionnée, qui affiche l’option Remove all.

  6. Une fois que vous avez reproduit le problème, enregistrez le fichier pour révision en sélectionnant Fichier>Enregistrer>Toutes les Sessions....

    Capture d’écran qui montre l’option File Save All Sessions sélectionnée.

  7. Vérifiez et analysez les journaux de session pour déterminer la cause du problème.

    Exemples :

  • Exemple A : Vous trouvez un journal de session que la demande est envoyée à partir du client, et il accède à l’adresse IP publique de l’Application Gateway, cliquez sur ce journal pour afficher les détails. Sur le côté droit, les données figurant dans la zone inférieure sont celles qu’Application Gateway renvoie au client. Sélectionnez l’onglet « RAW » et déterminez si le client reçoit un « Set-Cookie: ApplicationGatewayAffinity= ApplicationGatewayAffinityValue ». S’il n’y a aucun cookie, cela signifie que l’affinité de session n’est pas activée ou qu’Application Gateway de réapplique pas le cookie au client.

    Remarque

    Cette valeur ApplicationGatewayAffinity est l’ID de cookie qu’Application Gateway définit pour le client, à envoyer à un serveur back-end particulier.

    Capture d’écran qui montre un exemple de détails d’une entrée de journal avec la valeur Set-Cookie mise en évidence.

  • Exemple B : Le prochain journal de session suivi par le précédent est le client qui répond à l’Application Gateway qui a défini la valeur ApplicationGatewayAffinity. Si l’ID de cookie ApplicationGatewayAffinity correspond, le paquet doit être envoyé au serveur back-end utilisé précédemment. Consultez les quelques lignes de communication HTTP suivantes pour voir si le cookie ApplicationGatewayAffinity du client a changé.

    Capture d’écran qui montre un exemple de détails d’une entrée de journal avec un cookie mis en évidence.

Remarque

Pour la même session de communication, le cookie ne devrait pas changer. Vérifiez la zone supérieure sur le côté droit, sélectionnez l’onglet « Cookies » pour voir si le client utilise le cookie et le renvoie à Application Gateway. Si ce n’est pas le cas, cela signifie que le navigateur client ne conserve et n’utilise pas le cookie pour les conversations. Parfois, le client peut mentir.

Étapes suivantes

Si les étapes précédentes ne vous permettent pas de résoudre le problème, ouvrez un ticket d’incident.