Compartir a través de


Equilibrio de carga HTTP mediante el Enrutamiento de solicitud de aplicaciones

por el equipo de IIS

Información general

Este tema lleva al lector por los pasos para configurar el Enrutamiento de solicitud de aplicaciones a fin de equilibrar la carga de las solicitudes HTTP para lograr alta disponibilidad y escalabilidad. El tutorial también resalta un par de características principales sobre cómo el Enrutamiento de solicitud de aplicaciones supervisa el estado de los servidores de contenido y las afinidades de las solicitudes de un cliente a un servidor de contenido.

Objetivo

Equilibrar la carga de las solicitudes HTTP en varios servidores de contenido mediante el Enrutamiento de solicitud de aplicaciones, como se muestra a continuación:

Diagrama del enrutamiento de solicitudes de aplicación en varios servidores de contenido.

Requisitos previos

Este tutorial requiere los siguientes requisitos previos:

  • IIS 7.0 o posterior en Windows 2008 (cualquier SKU) o más reciente.
  • Versión 1 del Enrutamiento de solicitud de aplicaciones de Microsoft y módulos dependientes.
  • Un mínimo de dos servidores de contenido con sitios y aplicaciones en funcionamiento.

Siga los pasos descritos en este documento para instalar el Enrutamiento de solicitud de aplicaciones.

Otro requisito previo es que el lector haya definido y configurado una granja de servidores mediante los pasos descritos en Definición y configuración de un grupo de servidores de Enrutamiento de solicitud de aplicaciones (ARR).

Paso 1: Comprobar las reglas de reescritura de direcciones URL

Siempre que la granja de servidores se haya creado con los pasos descritos en Definición y configuración de un grupo de servidores de Enrutamiento de solicitud de aplicaciones (ARR), las reglas de reescritura de direcciones URL ya se habrán creado para un escenario de equilibrio de carga sencillo.

Para comprobar las reglas de reescritura de direcciones URL mediante la interfaz de usuario:

  1. Inicie el Administrador de IIS.
  2. Seleccione la granja de servidores myServerFarm, que se creó en Definición y configuración de un grupo de servidores de Enrutamiento de solicitud de aplicaciones (ARR).
  3. Se muestran los iconos siguientes:
    Captura de pantalla de la granja de servidores. El icono de prueba de estado, el icono de equilibrio de carga, el icono Supervisión y administración, el icono proxy, el icono Reglas de enrutamiento y el icono afinidad de servidor.
  4. Haga doble clic en Reglas de enrutamiento.
  5. Compruebe que la casilla Usar reescritura de URL para inspeccionar las solicitudes de entrada está activada.
    Captura de pantalla de la página Reglas de enrutamiento. Las casillas situadas junto a Usar U R L Rewrite para inspeccionar las solicitudes entrantes y habilitar la descarga de S S L están activadas.
  6. La descarga SSL está habilitada de manera predeterminada. Cuando esta característica está habilitada, toda la comunicación entre el servidor ARR y los servidores de aplicaciones se realiza en texto no cifrado, incluso para las solicitudes HTTPS de los clientes al servidor ARR. Cuando el servidor ARR y los servidores de aplicaciones se implementan dentro de una red de confianza como, por ejemplo, en el mismo centro de datos, la habilitación de la descarga SSL no sacrifica la seguridad. Además, habilitar esta característica puede ayudar a maximizar aún más los recursos de servidor en los servidores de aplicaciones, ya que no tienen que gastar ciclos en cifrar y descifrar solicitudes y respuestas.
    Para deshabilitar la descarga SSL, desactive la casilla Habilitar descarga SSL y, después, haga clic en Aplicar.
  7. Abra un explorador y envíe varias solicitudes al servidor ARR.
  8. Para comprobar que las solicitudes se están equilibrando por igual entre los servidores de aplicaciones, seleccione myServerFarm. Haga doble clic en Supervisión y administración.
    Captura de pantalla de la granja de servidores. El icono Supervisión y administración se muestra entre otros iconos.
  9. En la vista del panel, compruebe que las solicitudes se distribuyen uniformemente.
    Captura de pantalla de la página de características Supervisión y administración. Se muestran las estadísticas en tiempo de ejecución del enrutamiento de solicitudes de aplicación.

Para comprobar las reglas de reescritura de direcciones URL mediante la línea de comandos:

  1. Abra un símbolo del sistema con privilegios de administrador.

  2. Vaya a %windir%\system32\inetsrv.

  3. Para comprobar que las reglas de reescritura de direcciones URL se han creado correctamente, escriba appcmd.exe list config -section:system.webServer/rewrite/globalRules. Devuelve globalRules, que tiene el siguiente aspecto:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    
  4. Para deshabilitar la descarga SSL, quite primero todas las reglas de reescritura de direcciones URL:

    appcmd.exe clear config -section:system.webServer/rewrite/globalRules
    

    Después, cree las reglas de reescritura de direcciones URL para reenviar el tráfico HTTPS. Más concretamente, con esta regla, ARR reenvía las solicitudes mediante SSL si las solicitudes de entrada son HTTPS:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{HTTPS}',pattern='On']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.url:"https://myServerFarm/{R:0}"
    /commit:apphost
    

    Por último, cree las reglas de reescritura de direcciones URL para reenviar el tráfico HTTP en texto no cifrado a los servidores de aplicaciones:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm/{R:0}"
    /commit:apphost
    
  5. Para comprobar que las reglas de reescritura de direcciones URL se han creado correctamente con la descarga SSL deshabilitada, escriba appcmd.exe list config -section:system.webServer/rewrite/globalRules. Devuelve globalRules, que tiene el siguiente aspecto:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance_SSL" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    <add input="{HTTPS}" pattern="On" />
                    </conditions>
                    <action type="Rewrite" url="https://myServerFarm/{R:0}" />
                </rule>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    

Paso 2: Configurar el seguimiento de la comprobación de estado

El Enrutamiento de solicitud de aplicaciones supervisa el estado de los servidores de contenido de dos maneras:

  • Mediante el tráfico activo
  • Mediante una prueba explícita de direcciones URL

Las pruebas de tráfico activo se realizan automáticamente de manera predeterminada cuando se realizan las solicitudes al Enrutamiento de solicitud de aplicaciones. Las pruebas de direcciones URL explícitas son una prueba adicional que se puede usar con las pruebas de tráfico activas. En esta sección, el tutorial le guía por la configuración de las pruebas de direcciones URL explícitas.

Para configurar seguimiento de la comprobación de estado mediante la interfaz de usuario:

  1. La prueba de direcciones URL requiere que se pruebe una dirección URL específica. Para satisfacer este requisito, use el Bloc de notas a fin de crear un archivo de texto denominado healthCheck.txt que contenga la frase "I am healthy." ("Estoy en buen estado").
  2. Coloque el archivo healthCheck.txt en los servidores de aplicaciones.
  3. Compruebe que el archivo healthCheck.txt se está representando correctamente abriendo la página en un explorador.
  4. En el Administrador de IIS, seleccione la granja de servidores, myServerFarm. Se muestran los iconos siguientes:
    Captura de pantalla de la granja de servidores. El icono De prueba de estado, el Icono de equilibrio de carga, el icono Supervisión y administración, y otros iconos.
  5. Haga doble clic en Prueba de mantenimiento.
    Captura de pantalla de la página de la característica De prueba de estado. Se muestra la prueba de U R L.
  6. Escriba http://(server name or FQDN of ARR server)/healthCheck.txt como valor de URL.
  7. Escriba healthy como valor de Coincidencia de respuesta. La coincidencia de respuesta es una prueba opcional para asegurarse de que el cuerpo de la respuesta contiene la cadena esperada. En este caso, dado que healthCheck.txt contiene la frase "I am healthy." ("Estoy en buen estado"), la coincidencia de respuesta buscará la palabra "healthy".
  8. Haga clic en Aplicar para guardar los cambios.
  9. Para comprobar la función del seguimiento de la comprobación de estado, detenga el sitio supervisado en uno de los servidores de aplicaciones. Dado que el valor de Intervalo (segundos) se establece en 30 segundos, espere 30 segundos para la siguiente comprobación de estado.
  10. Después de esperar 30 segundos, envíe varias solicitudes al servidor ARR.
  11. Para comprobar que todas las solicitudes van a los servidores correctos, haga doble clic en Supervisión y administración y, después, actualice el panel mediante la tecla F5. Tenga en cuenta que se han restablecido las estadísticas en runtime. es así por diseño. Es posible que quiera enviar solicitudes adicionales y actualizar el panel, según sea necesario.
    Captura de pantalla de la página de características Supervisión y administración. Se muestran las estadísticas en tiempo de ejecución.
  12. El seguimiento de estado también se usa para detectar cuándo un servidor en mal estado pasa a estar en buen estado. Para comprobar esta función, inicie el sitio que se detuvo en el Paso 9. De nuevo, como el valor de Intervalo (segundos) se establece en 30 segundos, espere 30 segundos para la siguiente comprobación de estado.
  13. Después de esperar 30 segundos, envíe varias solicitudes al servidor ARR.
  14. Para comprobar que las solicitudes se distribuyen uniformemente entre servidores, actualice el panel en el Administrador de IIS. Tenga en cuenta que se han restablecido las estadísticas en runtime. es así por diseño. Es posible que quiera enviar solicitudes adicionales y actualizar el panel, según sea necesario.

Para configurar el seguimiento de la comprobación de estado mediante la línea de comandos:

  1. Abra un símbolo del sistema con privilegios de administrador.

  2. Vaya a %windir%\system32\inetsrv.

  3. Para establecer la dirección URL en http://(server name or FQDN of ARR server)/healthCheck.txt con I am healthy. (Estoy en buen estado) como cadena que debe coincidir, escriba lo siguiente:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.url:"http://(server
    name or FQDN of ARR server)/healthCheck.txt "
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.responseMatch:"I am
    healthy." /commit:apphost
    

Paso 3: Configurar la afinidad de cliente

El Enrutamiento de solicitud de aplicaciones proporciona una característica de afinidad de cliente que asigna un cliente a un servidor de contenido detrás del Enrutamiento de solicitud de aplicaciones durante la sesión de cliente. Cuando esta característica está habilitada, el algoritmo del equilibrio de carga solo se aplica para la primera solicitud del cliente. Desde ese momento, todas las solicitudes posteriores del mismo cliente se enrutarían al mismo servidor de contenido durante la sesión del cliente. Esta característica es útil si la aplicación del servidor de contenido tiene estado y las solicitudes del cliente deben enrutarse al mismo servidor de contenido porque la administración de sesiones no está centralizada.

Para configurar la afinidad de cliente mediante la interfaz de usuario:

  1. Inicie el Administrador de IIS.
  2. Seleccione la granja de servidores myServerFarm, que se creó en Definición y configuración de un grupo de servidores de Enrutamiento de solicitud de aplicaciones (ARR).
  3. Se muestran los iconos siguientes:
    Captura de pantalla del cuadro de diálogo Granja de servidores e Iconos que se encuentran en el grupo de servidores.
  4. Haga doble clic en Afinidad de servidor.
  5. Para habilitar la afinidad de cliente, active la casilla Afinidad de cliente y, después, haga clic en Aplicar.
    Captura de pantalla de la página de la característica Afinidad de servidor. Se muestra la casilla situada junto a Afinidad de cliente. En el cuadro Nombre de cookie, se muestra el texto A R R Affinity .
    El Enrutamiento de solicitud de aplicaciones usa una cookie para habilitar la afinidad de cliente. El Nombre de la cookie se usará para establecer la cookie en el cliente. Dicho esto, el cliente debe aceptar cookies para que la afinidad de cliente funcione correctamente.
  6. Para comprobar la función de la afinidad de cliente, envíe varias solicitudes al servidor ARR. Actualice el panel en el Administrador de IIS (Supervisión y administración). Compruebe que las estadísticas en runtime cambian solo para uno de los servidores de aplicaciones donde el cliente ha creado afinidad. Es posible que quiera enviar solicitudes adicionales y actualizar el panel, según sea necesario.

Para configurar la afinidad de cliente mediante la línea de comandos:

  1. Abra un símbolo del sistema con privilegios de administrador.

  2. Vaya a %windir%\system32\inetsrv.

  3. Para habilitar la afinidad de cliente, escriba lo siguiente:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.affinity.useCookie:"True"
    /commit:apphost
    

Paso 4: No permitir nuevas conexiones

El hecho de no permitir nuevas conexiones en un servidor es una manera correcta de sacar el servidor del entorno de la granja de servidores. Es más significativo cuando la característica de afinidad de cliente está en uso, ya que el Enrutamiento de solicitud de aplicaciones respetará las sesiones existentes al no permitir nuevas conexiones. Es decir, cuando un cliente ha creado afinidad con el servidor que no permite nuevas conexiones, el cliente seguirá enrutando al mismo servidor y, por lo tanto, no le afectará. Pero no se enrutará ningún nuevo cliente al servidor que no permita nuevas conexiones.

Para no permitir nuevas conexiones mediante la interfaz de usuario:

  1. Con la configuración del Paso 3 anterior, identifique el servidor en el que ha creado afinidad el cliente.
  2. Seleccione la granja de servidores myServerFarm, que se creó en Definición y configuración de un grupo de servidores de Enrutamiento de solicitud de aplicaciones (ARR).
  3. Se muestran los iconos siguientes:
    Captura de pantalla de la granja de servidores. El icono de prueba de estado, el icono de equilibrio de carga, el icono Supervisión y administración, el icono proxy y otros iconos que se encuentran en la granja de servidores.
  4. Haga doble clic en Supervisión y administración.
  5. Seleccione el servidor en el que ha creado afinidad el cliente. En el panel Acciones, haga clic en No permitir nuevas conexiones.
  6. En el cuadro de diálogo de confirmación, haga clic en .
    Captura de pantalla del cuadro de diálogo Enrutamiento de solicitudes de aplicación. El texto ¿Está seguro de que desea denegar nuevas conexiones al servidor seleccionado? se muestra. La opción Sí está resaltada.
  7. Para comprobar que las solicitudes de los clientes siguen enrutando al servidor en el que se ha creado afinidad, que ahora no permite nuevas conexiones, envíe varias solicitudes al servidor ARR. Actualice el panel en el Administrador de IIS. Compruebe que las estadísticas en runtime solo cambian para el servidor donde el cliente ha creado afinidad. Es posible que quiera enviar solicitudes adicionales y actualizar el panel, según sea necesario.
  8. Para comprobar que los nuevos clientes no se enrutan al servidor que no permite nuevas conexiones, quite la cookie que ha establecido el Enrutamiento de solicitud de aplicaciones cerrando y reiniciando el explorador.
  9. Envíe varias solicitudes al servidor ARR. Actualice el panel en el Administrador de IIS. Compruebe que las estadísticas en runtime solo cambian para los servidores que están Disponibles. En concreto, compruebe que las estadísticas en runtime del servidor que no permite nuevas conexiones no han cambiado. Es posible que quiera enviar solicitudes adicionales y actualizar el panel, según sea necesario.

Resumen

Ahora ha configurado correctamente una serie de opciones para el Enrutamiento de solicitud de aplicaciones a fin de escalar horizontalmente y distribuir la carga uniformemente. Para obtener capacidades de enrutamiento más avanzadas mediante el enrutamiento de solicitudes de aplicación, consulte Uso del Enrutamiento de solicitud de aplicaciones.