Implementación del Enrutamiento de solicitud de aplicaciones en CDN
por Won Yoo
Esta sección del documento se aplica a la versión 2 del Enrutamiento de solicitud de aplicaciones de Microsoft para IIS 7 y versiones posteriores.
Objetivo
Configurar correctamente un nodo de la caché secundaria o perimetral y un nodo de la caché principal en una implementación de jerarquía de caché de 2 niveles en un entorno de red de entrega de contenido o red con almacenamiento en caché perimetral (CDN/ECN). El enfoque de este tutorial es comprender las reglas de reescritura de direcciones URL en el nodo de la caché secundaria o perimetral y en el nodo de la caché principal. En última instancia, en este tutorial se revisarán las instrucciones paso a paso para establecer la siguiente configuración:
Algunos de los aspectos destacados de esta configuración son los siguientes:
La búsqueda de origen se realiza mediante el nodo de la caché secundaria o perimetral.
- La lista de clientes (es decir, la lista de servidores de origen aceptables) se administra explícitamente mediante una asignación de reescritura en la reescritura de direcciones URL.
- Los nombres de host que no se encuentran en el mapa de reescritura se bloquean.
El nodo de la caché principal está, en su mayor parte, configurado como proxy de reenvío.
SAN está configurado para que lo compartan los nodos de la caché secundaria o perimetral.
De hecho, hay 3 niveles de caché:
- Nodo de la caché secundaria o perimetral.
- SAN.
- Nodo de la caché primaria.
Requisitos previos
En este tutorial se da por supuesto que conoce bien las configuraciones de administración de jerarquías de caché y la caché de disco en la versión 2 de ARR. Si aún no lo ha hecho, se recomienda revisar los siguientes tutoriales antes de continuar:
- Configuración y habilitación de la caché de disco en el Enrutamiento de solicitud de aplicaciones
- Administración de jerarquías de caché mediante el Enrutamiento de solicitud de aplicaciones
Si no se ha instalado la versión 2 del Enrutamiento de solicitud de aplicaciones, puede descargarla en:
- Descargue la versión 2 del enrutamiento de solicitud de aplicaciones de Microsoft para IIS 7 (x86) aquí (
https://download.microsoft.com/download/4/D/F/4DFDA851-515F-474E-BA7A-5802B3C95101/ARRv2_setup_x86.EXE
). - Descargue la versión 2 del enrutamiento de solicitud de aplicaciones de Microsoft para IIS 7 (x64) aquí (
https://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE
).
Siga los pasos descritos en el artículo Instalación del Enrutamiento de solicitud de aplicaciones versión 2 para instalar la versión 2 de ARR.
Configuración del nodo de la caché secundaria o perimetral
Paso 1: Configurar la caché de disco
Configure y habilite la caché de disco siguiendo el artículo Instalación del Enrutamiento de solicitud de aplicaciones versión 2. En este artículo también se describe cómo configurar un entorno SAN para usarlo como una ubicación de unidad de caché secundaria.
Paso 2: Definir una granja de servidores para nodos de la caché primaria
Defina una granja de servidores y agregue nodos de la caché principal siguiendo el artículo Administración de jerarquías de caché mediante el Enrutamiento de solicitud de aplicaciones.
Paso 3: Elaborar reglas de reescritura de direcciones URL adicionales para el nodo de la caché secundaria o perimetral
En este momento, con myParentCacheNodes como nombre de la granja de servidores, se ha escrito la siguiente regla de reescritura de direcciones URL en el archivo applicationHost.config, ubicado en %windir%\system32\inetsrv\config\
:
<rewrite>
<globalRules>
<rule name="ARR_myParentCacheNodes_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="http://myParentCacheNodes/{R:0}" />
</rule>
</globalRules>
</rewrite>
La regla anterior no es suficiente para una implementación de CDN/ECN porque los nodos de la caché están en capas y el siguiente nivel de nodos de la caché (es decir, los nodos de la caché primaria) no sabrían cómo encontrar los servidores de origen cuando falta la caché en el nivel de caché primaria.
En este tutorial se soluciona el problema al hacer que el nodo de la caché secundaria asigne el servidor de origen antes de que la solicitud se enrute al nodo de la caché primaria. Hay dos formas más habituales de asignar los servidores de origen en función de la dirección URL que recibe el nodo de la caché secundaria:
- El cliente de la red CDN/ECN se especifica como subdominio. En este caso, puede haber muchos enlaces de nombre de host a la misma dirección IP del nodo de la caché secundaria.
Por ejemplo,http://customer1.mycnd.net/
,http://customer2.mycdn.net/
, etc. - El cliente de la red CDN/ECN se especifica como la primera ruta de acceso de la dirección URL.
Por ejemplo,http://static.mycdn.net/customer1/
,http://static.mycdn.net/customer2/
, etc.
En este tutorial, para la demostración se usa el primer ejemplo. También se pueden escribir reglas similares para habilitar el segundo escenario.
Defina las asignaciones de reescritura de direcciones URL que se pueden usar para buscar el nombre de host del servidor de origen. Inicie el Administrador de IIS.
Seleccione y expanda la raíz del servidor. Este es el nodo de la caché secundaria (perimetral).
Haga doble clic en Reescritura de URL.
En el panel Acciones, haga clic en Ver asignaciones de reescritura.
En el panel Acciones, haga clic en Agregar asignación de reescritura.
En el cuadro de diálogo Agregar asignación de reescritura, asigne un nombre a la asignación de reescritura, OriginServers.
En la asignación de reescritura, identificará explícitamente la asignación entre el nombre de host que recibe el nodo de la caché secundaria y los nombres de host de origen correspondientes. En el panel Acciones, haga clic en Agregar entrada de asignación....
En el cuadro de diálogo Agregar entrada de asignación, agregue el nombre de host que recibe el nodo de la caché secundaria y el nombre de host de origen. En el ejemplo siguiente, el encabezado de nombre de host del nodo de la caché secundaria de ARR es customer1.mycdn.net. El servidor de origen correspondiente es images.customer1.com.
Repita el Paso 8 tantas veces como sea necesario para incluir todos los clientes a los que la red CDN/ECN proporciona servicios. Así es como puede administrar la lista explícita de los clientes para asegurarse de que el servicio solo se proporciona a sus clientes.
Para bloquear los clientes que no están en la lista de asignación de reescritura, establezca el valor predeterminado de esta asignación de reescritura en #, que es un carácter no válido que no se puede usar como parte del encabezado de nombre de host, por cada RFC. En el panel Acciones, haga clic en Editar configuración de la asignación....
En el cuadro de diálogo Editar asignación de reescritura, escriba # como valor predeterminado para esta asignación de reescritura.
Vuelva a escribir el encabezado de nombre de host con las reglas configuradas en la asignación de reescritura OriginServers. Cuando se produce un error en la memoria caché y la solicitud se enruta al nodo de la caché primaria, la solicitud tendrá el nombre de host que coincide con el servidor de origen. Por este motivo, en su mayor parte, el nodo de la caché primaria está configurado como proxy de reenvío. Cuando se produce un error de caché en el nodo de la caché primaria, la solicitud simplemente se enruta al servidor de origen en función del encabezado de nombre de host que recibe el nodo de la caché primaria.
En la interfaz de usuario de reescritura de URL, busque la regla. En este tutorial, el nombre de la regla debe ser ARR_myParentCacheNodes_loadbalance.
Seleccione la regla y, en el panel Acciones, haga clic en Editar.
Haga clic en Agregar condiciones para agregar dos reglas.
La primera regla usará la asignación de reescritura OriginServers que se creó en el Paso 6. La siguiente regla coincidirá con el encabezado de host como clave para que coincida con las entradas de OriginServers:
La segunda regla establecerá el valor predeterminado # cuando el encabezado de host no coincida con las entradas de OriginServers. Tal como se indicó anteriormente, # no es un carácter válido y no se puede usar como nombre de host. La siguiente regla se usa más adelante para asegurarse de que solo los clientes (representados por nombres de host) en OriginServers reciben servicio de ARR:
Seleccione Seguimiento de grupos de capturas entre condiciones.
Para establecer los valores de HTTP_HOST a fin de que coincidan con las condiciones anteriores, haga clic en Variables de servidor.
Escriba los siguientes valores para restablecer HTTP_HOST:
Haga clic en Aceptar para guardar los cambios.
En el panel Acciones, haga clic en Aplicar para guardar los cambios.
Para comprobar que se han escrito las reglas correctas, abra el archivo applicationHost.config mediante el Bloc de notas. El archivo de configuración se encuentra en
%windir%\system32\inetsrv\config\
.Busque la regla de reescritura de direcciones URL para la granja de servidores, myParentCacheNodes. Debería tener este aspecto:
<rewrite> <globalRules> <rule name="ARR_myParentCacheNodes_loadbalance" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions trackAllCaptures="true"> <add input="{OrigServers:{HTTP_HOST}}" pattern="*" /> <add input="{C:1}" negate="true" pattern="#" /> </conditions> <serverVariables> <set name="HTTP_HOST" value="{C:1}" replace="true" /> </serverVariables> <action type="Rewrite" url="http://myParentCacheNodes/{R:0}" /> </rule> </globalRules> </rewrite>
Se recomienda encarecidamente. Para bloquear las solicitudes que no coinciden con los nombres de host definidos en la asignación de reescritura anterior, cree una regla de reescritura de dirección URL predeterminada que envíe una respuesta 400 a estas solicitudes.
Inicie el Administrador de IIS.
Seleccione y expanda la raíz del servidor. Este es el nodo de la caché secundaria (perimetral).
Haga doble clic en Reescritura de URL.
En el panel Acciones, haga clic en Agregar reglas.
En el cuadro de diálogo Agregar reglas, seleccione Regla en blanco.
Escriba los valores siguientes y guarde la regla:
Nombre: Not my customer.
Con: Caracteres comodín.
Patrón *:
Tipo de acción: Respuesta personalizada.
Código de estado: 400.
Código de subestado: 0.El orden de las reglas es importante. Las reglas de reescritura de direcciones URL se procesan de arriba abajo. En este ejemplo, si el nombre de host de entrada coincide con uno de los nombres de host especificados en la asignación de reescritura anterior, se ejecuta la primera regla, ARR_myParentCacheNodes_Loadbalance. Si el nombre de host de entrada no coincide con ninguno de los nombres de host definidos en la asignación de reescritura anterior, se ejecuta la segunda regla, Not my client.
Se ha completado la configuración del nodo de la caché secundaria o perimetral.
Para simplificar la configuración de nodos adicionales de la caché secundaria, se puede usar una configuración compartida para que solo haya lugar a fin de administrar la configuración del nodo de la caché secundaria. De lo contrario, los cambios de configuración anteriores se deben realizar individualmente en todos los nodos de la caché secundaria del entorno de CDN/ECN. Para obtener más información sobre la configuración compartida, vea el artículo Configuración compartida.
Configuración del nodo de la caché primaria
Hay dos maneras de configurar ARR como nodo de la caché primaria:
- Configurar ARR como proxy de reenvío.
- Configurar ARR como proxy "inverso" con la asignación de reescritura.
Incluso con la segunda opción anterior, la asignación de reescritura simplemente reescribe el nombre de host de entrada con el mismo valor, lo que lo convierte en un proxy de reenvío. La asignación de reescritura se usa para configurar explícitamente la lista de nombres de host que aceptará la caché primaria, similar a la configuración del nodo de la caché secundaria anterior. En esta segunda parte del tutorial, el nodo de la caché primaria se configurará con la primera opción como proxy de reenvío sencillo.
Paso 1: Configurar la caché de disco
Configure y habilite la caché de disco siguiendo el artículo Configuración y habilitación de la caché de disco en el Enrutamiento de solicitud de aplicaciones.
Paso 2: Configurar ARR como proxy de reenvío
Habilite ARR como proxy. Inicie el Administrador de IIS.
Esta configuración no implica ninguna granja de servidores. Todas las configuraciones se realizan en el nivel de servidor.
Haga doble clic en Caché del Enrutamiento de solicitud de aplicaciones.
En el panel Acciones, haga clic en Configuración del proxy del servidor.
Active la casilla Habilitar proxy y, después, haga clic en Aplicar. Acaba de habilitar ARR como proxy en el nivel de servidor.
Para convertir ARR en un proxy de reenvío, haga clic en el nodo de servidor en el panel de navegación.
Haga doble clic en Reescritura de URL.
En el panel Acciones, haga clic en Agregar reglas....
En el cuadro de diálogo Agregar reglas, seleccione Regla en blanco.
Escriba los valores siguientes y guarde la regla:
Nombre: Forward proxy.
Con: Caracteres comodín.
Patrón *:
Condiciones:
Entrada: {HTTP_HOST}.
Tipo: Coincide con el patrón.
Patrón *:
Tipo de acción: Reescritura.
URL de reescritura: http://{C:1}/{R:0}.La configuración del nodo de la caché primaria está completa.
Para simplificar la configuración de nodos adicionales de la caché primaria, se puede usar una configuración compartida para que solo haya lugar a fin de administrar la configuración del nodo de la caché primaria. De lo contrario, los cambios de configuración anteriores se deben realizar individualmente en todos los nodos de la caché primaria del entorno de CDN/ECN. Para obtener más información sobre la configuración compartida, vea el artículo siguiente.
Resumen
Ahora ha configurado correctamente los nodos de la caché secundaria y los de la caché primaria en una jerarquía de caché de 2 niveles CDN/ECN mediante reglas avanzadas de reescritura de direcciones URL. Para comprobar la función, puede seguir el Paso 4 y el Paso 5 del artículo Configuración y habilitación de la caché de disco en el Enrutamiento de solicitud de aplicaciones. Si hay errores, habilite las reglas de seguimiento de solicitudes con errores siguiendo los pasos descritos en el artículo Uso de reglas de seguimiento de solicitudes con errores para solucionar problemas del Enrutamiento de solicitud de aplicaciones.
Para consultar otros tutoriales de la versión 2 de ARR, vea los documentos del artículo Introducción al Enrutamiento de solicitud de aplicaciones versión 2.