Solución de problemas de afinidad de sesión en Azure Application Gateway
Aprenda a diagnosticar y resolver problemas de afinidad de sesión con Azure Application Gateway.
Nota:
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Información general
La característica de afinidad de sesión basada en cookies es útil cuando se quiere mantener una sesión de usuario en el mismo servidor. Mediante el uso de cookies administradas por la puerta de enlace, Application Gateway puede dirigir el tráfico posterior de una sesión de usuario hasta el mismo servidor para su procesamiento. Esto es importante en aquellos casos en los que se guarda el estado de la sesión de forma local en el servidor para una sesión de usuario. La afinidad de sesión también se conoce como sesiones persistentes.
Nota:
Application Gateway v1 emite una cookie denominada ARRAffinity, que se usa para dirigir el tráfico al mismo miembro del grupo de back-end. En Application Gateway v2, se ha cambiado el nombre de esta cookie a ApplicationGatewayAffinity. Para los fines de este documento, se usará ApplicationGatewayAffinity como ejemplo, ARRAffinity se puede sustituir en cuanto sea aplicable para las instancias de Application Gateway v1.
Causas posibles del problema
El problema en el mantenimiento de la afinidad de sesión basada en cookies puede ocurrir debido a los siguientes motivos principales:
- La opción de configuración "Afinidad basada en cookies" no está habilitada
- La aplicación no puede administrar la afinidad basada en cookies
- La aplicación está usando la afinidad basada en cookies, pero las solicitudes siguen rebotando entre los servidores back-end
Comprobación de si está habilitada la opción de configuración "Afinidad basada en cookies"
A veces, pueden producirse problemas de afinidad de sesión cuando se olvida de habilitar la opción de configuración "Afinidad basada en cookies". Para determinar si se ha habilitado la opción de configuración "Afinidad basada en cookies" en la pestaña Configuración de HTTP en Azure Portal, siga las instrucciones:
Inicie sesión en Azure Portal.
En el panel de navegación izquierdo, haga clic en Todos los recursos. Haga clic en el nombre de la puerta de enlace de aplicación en la hoja Todos los recursos. Si la suscripción que seleccionó ya tiene varios recursos en ella, puede escribir la puerta de enlace de aplicación en el cuadro Filtrar por nombre para acceder fácilmente a la puerta de enlace de aplicaciones.
Seleccione la pestaña Configuración HTTP, en CONFIGURACIÓN.
Seleccione la configuración HTTP y, en la página Agregar configuración HTTP, compruebe si la opción Afinidad basada en cookies está habilitada.
También puede comprobar que el valor de "CookieBasedAffinity" está establecido en Enabled, bajo "backendHttpSettingsCollection" mediante uno de los métodos siguientes:
- Ejecute Get-AzApplicationGatewayBackendHttpSetting en PowerShell
- Examine el archivo JSON con la plantilla de Azure Resource Manager
"cookieBasedAffinity": "Enabled",
La aplicación no puede administrar la afinidad basada en cookies
Causa
La puerta de enlace de aplicación solo puede realizar la afinidad basada en la sesión mediante el uso de una cookie.
Solución alternativa
Si la aplicación no puede controlar la afinidad basada en cookies, debe usar un equilibrador de carga interno o externo, u otra solución de terceros.
La aplicación está usando la afinidad basada en cookies, pero las solicitudes siguen rebotando entre los servidores back-end
Síntoma
Si ha habilitado la opción de configuración Afinidad basada en cookies, al acceder a Application Gateway con una dirección URL con un nombre corto en Internet Explorer, por ejemplo, http://website
, es posible que la solicitud aún rebote entre los servidores back-end.
Para identificar este problema, siga las instrucciones:
Realice un seguimiento del depurador web en el "cliente" que se conecta a la aplicación detrás de Application Gateway (en este ejemplo, se usa Fiddler). Sugerencia Si no sabe cómo usar Fiddler, active la opción "I want to collect network traffic and analyze it using web debugger" (Deseo recopilar el tráfico de red y analizarlo con el depurador web) en la parte inferior.
Compruebe y analizar los registros de sesión, para determinar si las cookies proporcionadas por el cliente tienen los detalles de ApplicationGatewayAffinity. Si no encuentra los detalles de ApplicationGatewayAffinity, como "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" dentro del conjunto de cookies, significa que el cliente no está respondiendo con la cookie ApplicationGatewayAffinity, que Application Gateway proporciona. Por ejemplo:
La aplicación continúa intentando establecer la cookie en cada solicitud hasta que obtiene respuesta.
Causa
Este problema se produce porque Internet Explorer y otros exploradores no pueden almacenar o usar la cookie con una dirección URL de nombre corto.
Solución
Para corregir esta incidencia, debe acceder a Application Gateway con un nombre de dominio completo. Por ejemplo, use http://website.com o http://appgw.website.com.
Registros adicionales para solucionar problemas
Puede recopilar registros adicionales y analizarlos para solucionar problemas relacionados con la afinidad de sesión basada en cookies
Análisis de los registros de Application Gateway
Para recopilar los registros de Application Gateway, siga las instrucciones:
Habilite el registro con Azure Portal.
En Azure Portal, busque el recurso y seleccione Configuración de diagnóstico.
Por Application Gateway, hay tres registros disponibles: registro de acceso, registro de rendimiento y registro de firewall.
Para empezar a recopilar datos, seleccione Agregar configuración de diagnóstico.
En la página Configuración de diagnóstico, encontrará las opciones de configuración de los registros de diagnóstico. En este ejemplo, se utiliza Log Analytics para almacenar los registros. Se pueden utilizar también Events Hubs y la cuenta de almacenamiento para guardar los registros de diagnóstico.
Confirme la configuración y seleccione Guardar.
Uso del depurador web para capturar y analizar el tráfico HTTP o HTTPS
Las herramientas de depuración web, como Fiddler Web, pueden ayudarle a depurar las aplicaciones web mediante la captura de tráfico de red entre los equipos de prueba e Internet. Estas herramientas permiten inspeccionar los datos entrantes y salientes a medida que el explorador los reciba o los envíe. Fiddler, en este ejemplo, tiene la opción de reproducir HTTP que puede ayudarle a solucionar problemas del cliente con las aplicaciones web, especialmente los relacionados con la autenticación.
Use el depurador web que prefiera. En este ejemplo usaremos Fiddler para capturar y analizar el tráfico HTTP o HTTPS; siga las instrucciones:
Descargue Fiddler.
Nota:
Elija Fiddler4 si el equipo de captura tiene instalado .NET 4. De lo contrario, elija Fiddler2.
Haga clic con el botón derecho en el ejecutable del programa de instalación y ejecútelo como administrador para instalarlo.
Cuando abra Fiddler, debe empezar automáticamente a capturar el tráfico (observe la captura en la esquina inferior izquierda). Presione F12 para iniciar o detener la captura del tráfico.
Probablemente, estará interesado en el tráfico HTTPS descifrado y puede habilitar el descifrado de HTTPS si selecciona Herramientas>Opciones de Fiddler y activa la casilla " Descifrar el tráfico HTTPS".
Puede quitar las sesiones no relacionadas anteriores antes de reproducir el problema si hace clic en X (icono) >Quitar todo como en la captura de pantalla siguiente:
Una vez que se haya reproducido el problema, guarde el archivo para su revisión; para ello, seleccione Archivo>Guardar>Todas las sesiones... .
Compruebe y analice los registros de sesiones para determinar cuál es el problema.
Por ejemplo:
Ejemplo A: Encuentra un registro de sesión que indica que la solicitud se envía desde el cliente y va a la dirección IP pública de Application Gateway; haga clic en este registro para ver los detalles. En el lado derecho, los datos del cuadro inferior es lo que Application Gateway devuelve al cliente. Seleccione la pestaña “RAW” y determine si el cliente recibe "Set-Cookie: ApplicationGatewayAffinity= ApplicationGatewayAffinityValue." Si no hay ninguna cookie, la afinidad de la sesión no está establecida o bien Application Gateway no está aplicando la cookie al cliente.
Nota:
Este valor ApplicationGatewayAffinity es el identificador de la cookie, que Application Gateway establece para que el cliente se envíe a un servidor back-end determinado.
Ejemplo B: el siguiente registro de sesiones seguido del anterior es el cliente que responde a Application Gateway, que estableció el valor de ApplicationGatewayAffinity. Si el identificador de cookie de ApplicationGatewayAffinity coincide, el paquete se debe enviar al mismo servidor back-end que se usó anteriormente. Compruebe las siguientes líneas de comunicación HTTP para ver si la cookie de ApplicationGatewayAffinity del cliente está cambiando.
Nota:
En la misma sesión de comunicación, la cookie no se debe cambiar. Active la casilla superior en el lado derecho, seleccione la pestaña "Cookies" para ver si el cliente usa la cookie y la envía de vuelta a Application Gateway. De lo contrario, el explorador del cliente no está manteniendo y usando la cookie para las conversaciones. En ocasiones, el cliente podría mentir.
Pasos siguientes
Si los pasos anteriores no resuelven el problema, abra una incidencia de soporte técnico.