Compartir a través de


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

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:

  1. Inicie sesión en Azure Portal.

  2. 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.

  3. Seleccione la pestaña Configuración HTTP, en CONFIGURACIÓN.

    Captura de pantalla que muestra la sección Configuración con la configuración de HTTP seleccionada.

  4. 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.

    Captura de pantalla que muestra la configuración de puerta de enlace de una puerta de enlace de aplicaciones, incluido si está seleccionada la afinidad basada en cookies.

También puede comprobar que el valor de "CookieBasedAffinity" está establecido en Enabled, bajo "backendHttpSettingsCollection" mediante uno de los métodos siguientes:

"cookieBasedAffinity": "Enabled", 

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.

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:

  1. 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.

  2. 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:

    Captura de pantalla que muestra un registro de sesión con una única entrada resaltada.

    Captura de pantalla que muestra los encabezados de solicitud para HTTP, incluida la información de cookies.

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.

  1. 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.

  2. Para empezar a recopilar datos, seleccione Agregar configuración de diagnóstico.

    Captura de pantalla que muestra una puerta de enlace de aplicación con la configuración de diagnóstico seleccionada.

  3. 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.

    Captura de pantalla que muestra el panel Configuración de diagnóstico con la opción Configurar Log Analytics seleccionada.

  4. 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:

  1. Descargue Fiddler.

    Nota:

    Elija Fiddler4 si el equipo de captura tiene instalado .NET 4. De lo contrario, elija Fiddler2.

  2. Haga clic con el botón derecho en el ejecutable del programa de instalación y ejecútelo como administrador para instalarlo.

    Captura de pantalla que muestra el programa de instalación de Fiddler con un menú contextual con la opción Ejecutar como administrador seleccionada.

  3. 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.

    Captura de pantalla que muestra el depurador web de Fiddler con el indicador de captura resaltado.

  4. 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".

    Captura de pantalla que muestra las opciones de Fiddler con HTTP seleccionado y el descifrado del tráfico HTTPS seleccionado.

  5. 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:

    Captura de pantalla que muestra el icono X seleccionado, que muestra la opción Eliminar todo.

  6. Una vez que se haya reproducido el problema, guarde el archivo para su revisión; para ello, seleccione Archivo>Guardar>Todas las sesiones... .

    Captura de pantalla que muestra la opción del menú Archivo para guardar todas las sesiones seleccionada.

  7. 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.

    Captura de pantalla que muestra un ejemplo de los detalles de una entrada del registro con el valor Set-Cookie resaltado.

  • 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.

    Captura de pantalla que muestra un ejemplo de los detalles de una entrada del registro con una cookie resaltada.

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.