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

Résumé

Découvrez comment diagnostiquer et résoudre les problèmes d’affinité de session avec Azure Application Gateway. En conservant les utilisateurs sur le même serveur principal, vous pouvez améliorer les performances des applications.

Note

Utilisez le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Install Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrate Azure PowerShell d’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 par la passerelle, Application Gateway dirige le trafic ultérieur d’une session utilisateur vers le même serveur pour le traitement. Cette fonctionnalité est importante dans les cas où l’état de session est enregistré localement sur le serveur pour une session utilisateur. L’affinité de session est également connue sous le terme de « sessions permanentes ».

Note

Application Gateway v1 utilise un cookie nommé ARRAffinity pour diriger le trafic vers le même membre du pool principal. Dans Application Gateway v2, ce cookie est renommé ApplicationGatewayAffinity. Dans le cadre de ce document, ApplicationGatewayAffinity est utilisé comme exemple. ARRAffinity peut être substitué le cas échéant pour les instances Application Gateway v1.

Causes de problème possibles

Les problèmes de maintenance de l’affinité de session basée sur les cookies peuvent se produire pour les raisons suivantes :

  • Vous n’avez pas activé le paramètre d’affinité basée sur les cookies .
  • Votre application ne peut pas gérer l’affinité basée sur les cookies.
  • Votre application utilise l’affinité basée sur les cookies, mais les requêtes continuent de rebondir entre les serveurs principaux.

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

  1. Connectez-vous au portail Azure.

  2. Dans le volet de navigation gauche , sélectionnez Toutes les ressources. Sélectionnez 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, entrez le nom de la passerelle d’application dans la zone Filtrer par nom... pour accéder facilement à la passerelle d’application.

  3. Sélectionnez l’onglet Paramètres principaux sous PARAMÈTRES.

    Capture d’écran du portail Azure avec paramètres et paramètres principaux sélectionnés pour une passerelle Application Gateway.

  4. Sélectionnez le paramètre serveur. Dans le paramètre Ajouter un back-end, vérifiez si l’affinité basée sur les cookies est activée.

    Capture d’écran des paramètres principaux montrant l’affinité basée sur les cookies sélectionnée dans Application Gateway.

Pour vérifier si la valeur de « CookieBasedAffinity » est activée sous « backendHttpSettingsCollection », utilisez l’une des méthodes suivantes :

"cookieBasedAffinity": "Enabled", 

La 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 externe ou interne Azure ou une autre solution tierce.

Symptôme

Vous activez le paramètre d’affinité basée sur les cookies. Lorsque vous accédez à Application Gateway à l’aide d’une URL de nom court dans Internet Explorer, par http://websiteexemple, la demande rebondit toujours entre les serveurs principaux.

Pour identifier ce problème, suivez ces instructions :

  1. Suivez une trace de débogueur web sur le client qui se connecte à l’application derrière Application Gateway. Cet exemple utilise Fiddler. Conseil Si vous ne savez pas comment utiliser Fiddler, cochez l'option Je veux collecter le trafic réseau et l'analyser à l'aide du débogueur web en bas.

  2. Vérifiez et analysez les journaux de session pour déterminer si les cookies que le client fournit incluent les détails d’ApplicationGatewayAffinity. Si vous ne trouvez pas les détails d’ApplicationGatewayAffinity, tels que ApplicationGatewayAffinity=ApplicationGatewayAffinityValue dans le jeu de cookies, le client ne répond pas avec le cookie ApplicationGatewayAffinity fourni par Application Gateway. Par exemple:

    Capture d’écran d’un journal de session avec une entrée unique mise en surbrillance.

    Capture d’écran des en-têtes de requête HTTP avec des informations de cookie mises en surbrillance.

L’application continue d’essayer de définir le cookie sur chaque requête jusqu’à ce qu’elle obtienne une réponse.

La cause

Ce problème se produit car Internet Explorer et d’autres navigateurs ne stockent pas ou n’utilisent pas le cookie avec une URL de nom court.

Résolution

Pour résoudre ce problème, accédez à Application Gateway à l’aide d’un nom de domaine complet (FQDN). Par exemple, utilisez http://website.com ou http://appgw.website.com.

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

Vous pouvez collecter et analyser des logs supplémentaires pour résoudre les problèmes liés à l'affinité de session sur la base des cookies.

Analyser les journaux Application Gateway

Pour collecter des journaux d'Application Gateway, suivez ces instructions :

Activez la journalisation à l’aide du portail Azure.

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

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

  2. Sélectionnez Ajouter un paramètre de diagnostic pour commencer à collecter des données.

    Capture d’écran d’une passerelle Application Gateway 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. Vous pouvez également utiliser Azure Event Hubs et un compte de stockage pour enregistrer les journaux de diagnostic.

    Capture d’écran du volet Paramètres de diagnostic avec la configuration Log Analytics sélectionnée.

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

Utiliser un débogueur web pour capturer et analyser le trafic HTTP ou HTTPS

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

Utilisez le débogueur web de votre choix. Dans cet exemple, utilisez Fiddler pour capturer et analyser le trafic HTTP ou HTTPS. Suivez les instructions suivantes :

  1. Téléchargez Fiddler.

    Note

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

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

    Capture d’écran du programme d’installation de Fiddler avec l’option Exécuter en tant qu’administrateur sélectionnée.

  3. Lorsque vous ouvrez Fiddler, il démarre automatiquement la capture du trafic (notez la capture en bas à gauche). Appuyez sur F12 pour démarrer ou arrêter la capture du trafic.

    Capture d’écran du débogueur Web Fiddler avec l’indicateur de capture surligné.

  4. Probablement, vous êtes intéressé par le trafic HTTPS déchiffré. Activez le déchiffrement HTTPS en sélectionnant Outils>Fiddler Options et en cochant la case Déchiffrer le trafic HTTPS.

    Capture d’écran des options Fiddler avec https sélectionné et déchiffrer le trafic HTTPS activé.

  5. Pour supprimer les sessions non liées précédentes avant de reproduire le problème, sélectionnez X>Supprimer tout.

    Capture d’écran du menu X dans Fiddler avec Supprimer tout sélectionné.

  6. Lorsque vous reproduitz le problème, enregistrez le fichier à réviser en sélectionnant Fichier>Enregistrer>toutes les sessions.

    Capture d’écran du menu Fichier dans Fiddler avec l’option Enregistrer toutes les sessions sélectionnée.

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

    Par exemple:

  • Exemple A : Vous trouvez un journal de session indiquant que la requête est envoyée depuis le client, et qu'elle est dirigée vers l’adresse IP publique de l’Application Gateway. Sélectionnez ce journal des événements pour afficher les détails. Sur le côté droit, les données de la zone inférieure sont ce que l’Application Gateway retourne au client. Sélectionnez l’onglet RAW et déterminez si le client reçoit un « Set-Cookie : ApplicationGatewayAffinity=ApplicationGatewayAffinityValue ». S’il n’existe aucun cookie, l’affinité de session n’est pas définie ou si Application Gateway n’applique pas de cookie au client.

    Note

    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 des détails de l'enregistrement du journal avec la valeur Set-Cookie mise en surbrillance.

  • Exemple B : Le journal de session suivant suivi de la précédente est le client qui répond à Application Gateway, qui définit ApplicationGatewayAffinity. Si l’ID de cookie ApplicationGatewayAffinity correspond, le paquet accède au même serveur principal que celui utilisé précédemment. Vérifiez les lignes suivantes de communication HTTP pour voir si le cookie ApplicationGatewayAffinity du client change.

    Capture d’écran des détails de l’entrée de journal avec une valeur de cookie mise en surbrillance.

Note

Pour la même session de communication, le cookie ne doit pas changer. Cochez la case supérieure à droite, sélectionnez l’onglet Cookies pour voir si le client utilise le cookie et le renvoyer à 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.