Consecución de alta disponibilidad y escalabilidad: ARR y NLB

por Won Yoo

Consecución de alta disponibilidad y escalabilidad:
Enrutamiento de solicitud de aplicaciones de Microsoft (ARR) para IIS 7.0 y versiones posteriores y Equilibrio de carga de red (NLB).

Microsoft Corporation
Autor: Ahmed Bisht, Won Yoo
Fecha de publicación: 13 de noviembre de 2008

Abstract

En este documento se proporcionan instrucciones prescriptivas sobre cómo se puede usar el Enrutamiento de solicitud de aplicación (ARR) con un Equilibrio de carga de red (NLB) para lograr una alta disponibilidad y escalabilidad.

Información general

El enrutamiento de solicitudes de aplicaciones (ARR) de Microsoft para IIS 7.0 y versiones superiores es un módulo de enrutamiento basado en proxy que reenvía solicitudes HTTP a servidores de contenido en función de los encabezados HTTP, las variables de servidor y los algoritmos de equilibrio de carga. En el diagrama siguiente se muestra una implementación típica de ARR:

Diagram showing the A R R forwarding H T T P requests.

Aunque ARR proporciona alta disponibilidad y escalabilidad para los servidores de contenido, la implementación general no es de alta disponibilidad ni escalable por lo siguiente:

  • ARR es el único punto de error.
  • La escalabilidad de los servidores de contenido la limita la capacidad máxima de un servidor ARR.

Para superar estos desafíos, los administradores pueden considerar la posibilidad de usar varios servidores ARR con Equilibrio de carga de red (NLB). ARR se puede implementar en modo activo/pasivo para lograr solo alta disponibilidad o en modo activo/activo para lograr alta disponibilidad y escalabilidad. En estas notas del producto se describe cómo se puede implementar ARR y NLB conjuntamente para habilitar los escenarios principales de ARR al tiempo que se logra una alta disponibilidad y escalabilidad generales. NLB está disponible en todas las SKU de Windows Server 2008.

Uso del Enrutamiento de solicitud de aplicaciones y el Equilibrio de carga de red

ARR se crea como un módulo basado en IIS y está diseñado para tomar las decisiones de enrutamiento en el nivel 7 (aplicación). Para ser más precisos, ARR se basa en otro módulo de IIS, Reescritura de direcciones URL, a fin de inspeccionar los encabezados de solicitud HTTP de entrada y las variables de servidor para tomar las decisiones de enrutamiento. Dado este diseño, los administradores podrían escribir reglas de enrutamiento inteligentes basadas en la información de nivel de aplicación, como las siguientes:

  • Nombre de host (HTTP_HOST): enruta el tráfico a distintos servidores de contenido en función del nombre de host.
  • Recurso solicitado (URL): en función de las extensiones de archivo, determina si los recursos solicitados son para contenido estático o contenido dinámico y si enrutan las solicitudes en consecuencia.
  • Información de cliente (HTTP_USER_AGENT): en función del tipo y la versión del explorador, enruta las solicitudes a los servidores de contenido adecuados.
  • Encabezados personalizados (establecer como una cookie por aplicaciones): enruta el tráfico en función de la información de cookies que establecen las aplicaciones, como las preferencias del usuario o Id. de usuario.

Los anteriores son solo algunos de los ejemplos. Para obtener una lista completa de encabezados HTTP y variables de servidor, consulte el Apéndice A.

Dado que NLB toma las decisiones de enrutamiento en el Nivel 3, la información específica de la aplicación, como encabezados HTTP y variables de servidor, no se puede usar para proporcionar enrutamiento basado en el nivel de aplicación. Al mismo tiempo, ARR no proporciona características de implementación tolerantes a errores por sí mismo y debe confiar en otras tecnologías y soluciones complementarias a fin de lograr una alta disponibilidad para el nivel de ARR. NLB funciona en un nivel diferente en la pila de red y está habilitado en los mismos servidores que donde se implementa ARR:

Digram showing connections between A R R 1 and 2 and content servers.

Escenario 1: Enrutamiento basado en HTTP y equilibrio de carga

El escenario de enrutamiento y equilibrio de carga basado en HTTP permite una arquitectura de implementación de 3 niveles que implica lo siguiente:

  • Nivel 1 (web): proporciona dos propósitos de procesamiento de contenido estático, enrutamiento y equilibrio de carga de las solicitudes dinámicas restantes a los servidores de nivel 2.
  • Nivel 2 (aplicación): procesa el contenido dinámico que se basa en la lógica de negocios.
  • Nivel 3 (datos): almacena datos.

En el diagrama siguiente se muestra la implementación de 3 niveles:

Diagram showing the content flow between A R R and content servers in each tier.

Aunque en el ejemplo anterior se muestra una regla de enrutamiento que diferencia el contenido estático del contenido dinámico, otro escenario común es diferenciar las solicitudes de presentación de las de servicio web.

Opción 1: Activo/pasivo

En el modo activo/pasivo, normalmente hay dos servidores ARR, en los que uno de ellos procesa las solicitudes mientras que el otro es un servidor de conmutación por error. Como se indicó anteriormente, aunque esta configuración logra una alta disponibilidad quitando el único punto de error, no es una solución de escalabilidad horizontal, ya que la capacidad agregada de los servidores de contenido la limita la capacidad máxima de un servidor ARR.

En esta configuración, dado que se configuran dos servidores ARR de la misma manera, se usa una configuración compartida. En primer lugar, instale ARR en ambos servidores y, después, cree el clúster NLB. El clúster NLB está configurado para aceptar el tráfico solo en uno de los nodos de clúster. Esto se logra configurando las reglas de puerto de clúster con el modo de filtrado de host único. El nodo que acepta el tráfico lo determina la configuración de prioridad de host de los nodos del clúster NLB. Consulte Configuración de NLB para obtener más detalles.

A excepción de la característica de afinidad de nombre de host en ARR, no hay información de estado en runtime que se deba compartir entre los dos servidores ARR. Por lo tanto, para este escenario, no se necesita ninguna configuración especial en ARR o NLB. Incluso si usa la característica de afinidad de servidor en ARR, la información de estado de afinidad estará disponible para el servidor pasivo mediante una cookie en el encabezado de solicitud.

Este escenario es totalmente compatible con la versión 1 de ARR.

Configuración de ARR

Paso 1: Habilitar la configuración compartida en dos servidores ARR.

  • Siga los pasos de este documento para establecer la configuración compartida en IIS.

Paso 2: Configurar la arquitectura de implementación de 3 niveles mediante ARR.

  • Siga los pasos de este documento para configurar ARR en la arquitectura de implementación de 3 niveles.

  • En general, el documento anterior describe lo siguiente:

    • Cómo hacer que el contenido estático esté disponible en el servidor ARR.
    • Cómo escribir reglas de reescritura de direcciones URL para contenido estático a fin de que se sirvan directamente desde el servidor ARR.
    • Cómo escribir reglas de reescritura de direcciones URL para contenido dinámico a fin de que se reenvíen a los servidores de aplicaciones.

Configuración de NLB

La configuración de NLB se divide en los pasos siguientes:

  1. Instalar la característica NLB en todos los servidores ARR.
  2. Crear un clúster NLB para ARR.
  3. Configurar NLB para la implementación activa/pasiva.

Instalación de la característica NLB en todos los servidores ARR

  1. Abra el Administrador del servidor.
    Screenshot of the Server Manager window showing details in the main pane.
  2. Expanda Características.
  3. Haga clic en Agregar características.
  4. En el Asistente para agregar características, seleccione Equilibrio de carga de red.
    Screenshot of the Add Features Wizard window showing features in the main pane.
  5. Haga clic en Instalar para confirmar la instalación de la característica NLB.
    Screenshot of the Add Features Wizard window showing the Confirm Installation Selections in the main pane.
  6. Compruebe que la característica NLB se ha instalado correctamente.
    Screenshot of the Add Features Wizard window showing the Installation Results page in the main pane.
  7. Repita los pasos anteriores en todos los servidores ARR.

Creación de un clúster NLB para ARR

  1. Compruebe que NLB está instalado en todas las instancias de servidores ARR.
  2. Vaya a Inicio > Todos los programas > Herramientas administrativas y abra el Administrador de equilibrio de carga de red.
    Screenshot of the Network Load Balancing Manager window with Network Load Balancing Clusters highlighted.
  3. Haga clic con el botón derecho en Clústeres de equilibrio de carga de red y luego seleccione Nuevo clúster.
    Screenshot of the New Cluster dialog.
  4. En el cuadro de diálogo Nuevo clúster, en el cuadro de texto Host, escriba la dirección del servidor de uno de los servidores ARR. Si hay varias interfaces, escriba la dirección del servidor en la que quiere crear el clúster NLB.
    Screenshot of the New Cluster dialog showing an I P address in the host input box.
  5. En el modo activo/pasivo (modo host único en NLB), la prioridad determina el orden en el que tiene lugar la conmutación por error. De manera predeterminada, el servidor con prioridad 1 es el nodo activo.
    Screenshot of the New Cluster Host Parameters dialog with default settings.
  6. Se necesita la dirección IP del clúster, una dirección IP virtual. Haga clic en Agregar. Esta es la dirección IP con la que se comunicarán los clientes.
    Screenshot of the New Cluster Cluster I P Addresses dialog.
  7. Escriba la dirección IP virtual y haga clic en Aceptar.
    Screenshot of the Add I P Address dialog
  8. Haga clic en Next.
    Screenshot of the Cluster I P Addresses dialog showing an I P address and subnet mask.
  9. Acepte los valores predeterminados. Para obtener información más detallada, consulte el Apéndice.
    Screenshot of the Cluster Parameters dialog showing default parameters.
  10. Haga clic en Finalizar para completar la creación del clúster NLB.
    Screenshot of the Port Rules dialog
  11. Ahora que se ha creado el clúster NLB, puede agregar miembros adicionales al clúster. Siga los pasos restantes en todos los servidores miembro adicionales. En el Administrador de equilibrio de carga de red, haga clic con el botón derecho en el clúster recién seleccionado y, después, seleccione Agregar host al clúster.
    Screenshot of the Add Host to Cluster dialog.
  12. Escriba la dirección del servidor del miembro que se va a agregar. Si hay varias interfaces, seleccione la que debe usar el clúster NLB.
    Screenshot of the Connect dialog. There is an I P address in the host input box.
  13. Tenga en cuenta que la asignación de prioridad es mutuamente exclusiva y única entre los servidores miembro del clúster. En el modo activo/pasivo (modo host único en NLB), la prioridad determina el orden de conmutación por error.
    Screenshot of the Host Parameters dialog. Priority is set to 2.
  14. Haga clic en Finalizar para agregar el servidor miembro al clúster.
    Screenshot of the Port Rules dialog. The Finish button is selected.
  15. El Administrador de equilibrador de carga de red debe tener un aspecto similar al siguiente:
    Screenshot of the Network Load Balancing Manager window.

Configuración de NLB para la implementación activa/pasiva

  1. A fin de configurar NLB para la implementación activa/pasiva, en el Administrador de equilibrio de carga de red, haga clic con el botón derecho en el clúster y, después, seleccione Propiedades del clúster. Haga clic en la pestaña Reglas de puerto. Haga clic en Editar.
    Screenshot of the Properties dialog with the Port Rules tab selected.
  2. Seleccione Host únicoy, después, haga clic en Aceptar.
    Screenshot of the Add/Edit Port Rule dialog. Single host is selected in the Filtering mode section.

NLB se configura correctamente para funcionar en modo activo/pasivo con ARR.

Opción 2: Activo/activo

En el modo activo/activo, puede tener dos o más servidores ARR. Esta configuración logra la alta disponibilidad y la escalabilidad, a diferencia del modo activo/pasivo, lo que solo logra una alta disponibilidad.

Como se indicó anteriormente, como varios servidores ARR se configuran de la misma manera, se usa una configuración compartida. La principal diferencia es la configuración de NLB. Para usar todos los servidores ARR al mismo tiempo, la regla de puerto del clúster NLB está configurada en el modo de host múltiple.

Independientemente de si la característica de afinidad está habilitada en NLB, no se necesita ninguna configuración especial en los servidores ARR. Por un lado, los servidores ARR usan una configuración compartida para que se configuren de la misma manera. En segundo lugar, dado que ARR usa una cookie de cliente a fin de almacenar la información de afinidad del servidor para su propio uso, esta información está disponible por solicitud y, por tanto, disponible en los servidores ARR. La recomendación para NLB es que la afinidad se establezca en ninguna, ya que da como resultado una distribución de carga más uniforme.

Este escenario es totalmente compatible con la versión 1 de ARR.

Configuración de ARR

La configuración de ARR para activo/activo es idéntica a la de activo/pasivo. La principal diferencia es cómo se configura NLB.

Paso 1: Habilitar la configuración compartida en dos servidores ARR.

  • Siga los pasos de este documento para establecer la configuración compartida en IIS.

Paso 2: Configurar la arquitectura de implementación de 3 niveles mediante ARR.

  • Siga los pasos de este documento para configurar ARR en la arquitectura de implementación de 3 niveles.

  • En general, el documento anterior describe lo siguiente:

    • Cómo hacer que el contenido estático esté disponible en el servidor ARR.
    • Cómo escribir reglas de reescritura de direcciones URL para contenido estático a fin de que se sirvan directamente desde el servidor ARR.
    • Cómo escribir reglas de reescritura de direcciones URL para contenido dinámico a fin de que se reenvíen a los servidores de aplicaciones.

Configuración de NLB

La configuración de NLB se divide en los pasos siguientes:

  1. Instalar la característica NLB en todos los servidores ARR.
  2. Crear un clúster NLB para ARR.
  3. Configurar NLB para la implementación activa/activa.

Instalar la característica NLB en todos los servidores ARR: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#install NLB).

Crear un clúster NLB para ARR: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#create nlb).

Configurar NLB para la implementación activa/activa.

  1. A fin de configurar NLB para la implementación activa/activa, en el Administrador de equilibrio de carga de red, haga clic con el botón derecho en el clúster y, después, seleccione Propiedades del clúster. Haga clic en la pestaña Reglas de puerto. Haga clic en Editar.
    Screenshot of the Properties dialog.
  2. Seleccione Host múltiple. En la configuración de Afinidad, seleccione Ninguno. Como se mencionó anteriormente, la recomendación es no usar la afinidad en NLB, ya que dará lugar a una mejor distribución de carga.
    Screenshot of the Add/Edit Port Rule dialog. Multiple host is selected in the Filtering mode section.

NLB se configura correctamente para que funcione en modo activo/activo con ARR.

Escenario 2: Hospedaje compartido con afinidad de nombre de host

En este escenario se usa la característica de afinidad de nombre de host en ARR a fin de habilitar una implementación de hospedaje compartida para lo siguiente:

  • Reducir la administración manual y el mantenimiento implicados en la implementación tradicional de hospedaje compartido.
  • Maximizar los recursos de servidor existentes al tiempo que garantiza que todos los recursos de servidor se usen uniformemente.
  • Escalar horizontalmente el entorno con facilidad.
  • Crear oportunidades de negocio para vender capacidad adicional.

Para obtener más información sobre el hospedaje compartido y ARR, vea este documento.

En el diagrama siguiente se muestra el entorno de hospedaje compartido mediante ARR:

Diagram showing the flow of requests and responses.

Opción 1: Activo/pasivo

Tal como se indicó anteriormente, en el modo activo/pasivo normalmente hay dos servidores ARR, en los que uno de ellos procesa las solicitudes mientras que el otro es un servidor de conmutación por error. Aunque esta configuración logra una alta disponibilidad quitando el único punto de error, no es una solución de escalabilidad horizontal, ya que la capacidad agregada de los servidores de contenido la limita la capacidad máxima de un servidor ARR.

En esta configuración, dado que se configuran dos servidores ARR de la misma manera, se usa una configuración compartida. El clúster NLB está configurado para aceptar el tráfico solo en uno de los nodos de clúster. Esto se logra configurando las reglas de clúster con el modo de filtrado de host único. El nodo que acepta el tráfico lo determina la configuración de prioridad de host de los nodos del clúster NLB. Consulte Configuración de NLB para obtener más detalles.

La característica de afinidad de nombre de host de ARR muestra afinidad de las solicitudes a un servidor determinado (o a un grupo de servidores en RC) en función del nombre de host. La información de estado en runtime de la asignación de afinidad entre los nombres de host y los servidores de contenido se almacena en la memoria dentro de una instancia de un servidor ARR. En la versión 1 de ARR se saca provecho de la versión 1 de la caché externa de Microsoft para IIS a fin de compartir y mantener este estado en runtime entre varios servidores ARR. En este documento encontrará más información sobre este escenario.

Este escenario es totalmente compatible con la versión 1 de ARR.

Configuración de ARR

Paso 1: Configurar ARR para el hospedaje compartido con afinidad de nombre de host.

  • Siga los pasos de este documento a fin de configurar la característica de afinidad de nombre de host en ARR para el hospedaje compartido.

Paso 2: Habilitar y configurar la caché externa.

  • Siga los pasos de este documento para habilitar y configurar la caché externa.

Configuración de NLB

La configuración de NLB se divide en los pasos siguientes:

  1. Instalar la característica NLB.
  2. Crear un clúster NLB para ARR.
  3. Configurar NLB para la implementación activa/pasiva.

Instalar la característica NLB: documentada [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Install NLB features).

Crear un clúster NLB para ARR: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Create NLB cluster for ARR).

Configurar NLB para la implementación activa/pasiva: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Configure NLB for active/passive).

Opción 2: Activo/activo en ARR

En el modo activo/activo, puede tener dos o más servidores ARR. Esta configuración logra la alta disponibilidad y la escalabilidad, a diferencia del modo Activo/Pasivo, lo que solo logra una alta disponibilidad. Como se configuran varios servidores ARR de la misma manera, se usa una configuración compartida. Para usar todos los servidores ARR al mismo tiempo, NLB se configura en modo de host múltiple. Tal como se ha indicado anteriormente, la información de estado en runtime de la asignación de afinidad entre los nombres de host y los servidores de contenido se almacena en la memoria dentro de una instancia de un servidor ARR. Para compartir esta información entre varios servidores ARR, se usa la caché externa de Microsoft para IIS. Para obtener más información sobre la caché externa, consulte este documento.

Configuración de ARR

La configuración de ARR para activo/activo es idéntica a la de activo/pasivo. La principal diferencia es cómo se configura NLB.

Paso 1: Configurar ARR para el hospedaje compartido con afinidad de nombre de host.

  • Siga los pasos de este documento a fin de configurar la característica de afinidad de nombre de host en ARR para el hospedaje compartido.

Paso 2: Habilitar y configurar la caché externa.

  • Siga los pasos de este documento para habilitar y configurar la caché externa.

Configuración de NLB

La configuración de NLB se divide en los pasos siguientes:

  1. Instalar la característica NLB.
  2. Crear un clúster NLB para ARR.
  3. Configurar NLB para la implementación activa/activa.

Instalar la característica NLB: documentada [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Install NLB features).

Crear un clúster NLB para ARR: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Create NLB cluster for ARR).

Configurar NLB para la implementación activa/activa: documentado [aquí](achieving-high-availability-and-scalability-arr-and-nlb.md#Configure NLB for active/active). Se recomienda no usar afinidad en NLB para este escenario de ARR.

Resumen

En estas notas del producto, se revisaron dos escenarios principales de ARR para lograr alta disponibilidad y escalabilidad implementando varios servidores ARR y el uso de NLB.

Apéndice

Apéndice A: Todos los encabezados HTTP y variables de servidor disponibles para escribir reglas de decisión de enrutamiento.

ALL_HTTP ALL_RAW APPL_MD_PATH
APPL_PHYSICAL_PATH CERT_COOKIE CERT_FLAGS
CERT_ISSUER CERT_KEYSIZE CERT_SECRETKEYSIZE
CERT_SERIALNUMBER CERT_SERVER_ISSUER CERT_SERVER_SUBJECT
CERT_SUBJECT CONTENT_LENGTH CONTENT_TYPE
DOCUMENT_ROOT GATEWAY_INTERFACE HTTP_ACCEPT
HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION
HTTP_CONTENT_LENGTH HTTP_HOST HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH HTTP_REFERER HTTP_UA_CPU
HTTP_USER_AGENT HTTPS HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE HTTPS_SERVER_ISSUER HTTPS_SERVER_SUBJECT
INSTANCE_ID INSTANCE_META_PATH LOCAL_ADDR
PATH_INFO PATH_TRANSLATED QUERY_STRING
REMOTE_ADDR REMOTE_HOST REMOTE_PORT
REMOTE_USER REQUEST_FILENAME REQUEST_METHOD
REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME
SERVER_ADDR SERVER_NAME SERVER_PORT
SERVER_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE
URL

Apéndice B: Documentación adicional de NLB.