Déploiement d’Application Request Routing dans CDN

par Won Yoo

Cette section de la documentation s’applique à Microsoft Application Request Routing version 2 pour IIS 7 et versions ultérieures.

But

Pour configurer correctement un nœud de cache enfant/de périmètre et un nœud de cache parent dans un déploiement de hiérarchie de cache à 2 niveaux dans un environnement de réseau de distribution de contenu/réseau de cache de périmètre (CDN/ECN). L’objectif de cette procédure pas à pas est de comprendre les règles de réécriture d’URL sur le nœud de cache enfant/de périmètre et sur le nœud de cache parent. Au final, cette procédure pas à pas passe par des instructions pas à pas pour définir la configuration suivante :

Diagram showing an overview of the connection between the origin server, parent nodes, child nodes, and S A N.

Voici quelques-uns des points forts de cette configuration :

  • La recherche d’origine est effectuée par le nœud de cache enfant/de périmètre.

    • La liste des clients (c’est-à-dire la liste des serveurs d’origine acceptables) est gérée explicitement à l’aide d’un mappage de réécriture dans la réécriture d’URL.
    • Les noms d’hôte introuvables dans le mappage de réécriture sont bloqués.
  • Le nœud de cache parent est, pour l’essentiel, configuré en tant que proxy de transfert.

  • SAN est configuré pour être partagé par les nœuds de cache enfants/de périmètre.

    • En fait, il existe 3 niveaux de cache :

      1. Nœud de cache enfant/de périmètre.
      2. SAN.
      3. Nœud de cache parent.

Prérequis

Cette procédure pas à pas suppose que vous êtes familiarisé avec les configurations de cache de disque et de gestion de la hiérarchie de cache dans ARR version 2. Si vous ne l’avez pas déjà fait, il est vivement recommandé de passer en revue les procédures pas à pas suivantes avant de continuer :

Si Application Request Routing version 2 n’a pas été installé, vous pouvez le télécharger à l’adresse suivante :

  • Microsoft Application Request Routing version 2 pour IIS 7 (x86) ici (https://download.microsoft.com/download/4/D/F/4DFDA851-515F-474E-BA7A-5802B3C95101/ARRv2_setup_x86.EXE).
  • Microsoft Application Request Routing version 2 pour IIS 7 (x64) ici (https://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE).

Suivez les étapes décrites dans l’article Installer Application Request Routing version 2 pour installer ARR version 2.

Configuration du nœud de cache enfant/de périmètre

Étape 1 : Configurer le cache de disque

Configurez et activez le cache de disque en suivant l’article Installer Application Request Routing version 2. Cet article explique également comment configurer un SAN à utiliser comme emplacement de lecteur de cache secondaire.

Étape 2 : Définir une batterie de serveurs pour les nœuds de cache parents

Définissez une batterie de serveurs et ajoutez des nœuds de cache parents en suivant l’article Gestion de la hiérarchie de cache à l’aide d’Application Request Routing.

Étape 3 : Créer des règles de réécriture d’URL supplémentaires pour le nœud de cache enfant/de périmètre

À ce stade, en utilisant myParentCacheNodes comme nom de la batterie de serveurs, la règle de réécriture d’URL suivante a été écrite dans le fichier applicationHost.config, situé à l’adresse %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 règle ci-dessus n’est pas suffisante pour un déploiement CDN/ECN, car les nœuds de cache sont hiérarchisés et le niveau suivant des nœuds de cache (c’est-à-dire les nœuds de cache parents) ne sait pas comment trouver les serveurs d’origine en cas d’absence de cache au niveau du cache parent.

Cette procédure pas à pas résout le problème en demandant au nœud de cache enfant de mapper le serveur d’origine avant que la demande ne soit routée vers le nœud de cache parent. Il existe deux façons très courantes de mapper les serveurs d’origine en fonction de l’URL que le nœud de cache enfant reçoit :

  1. Le client de l’environnement CDN/ECN est spécifié en tant que sous-domaine. Dans ce cas, il peut y avoir de nombreuses liaisons de nom d’hôte à la même adresse IP du nœud de cache enfant.
    Par exemple, http://customer1.mycnd.net/, http://customer2.mycdn.net/, etc.
  2. Le client de l’environnement CDN/ECN est spécifié comme premier chemin dans l’URL.
    Par exemple, http://static.mycdn.net/customer1/, http://static.mycdn.net/customer2/, etc.

Dans cette procédure pas à pas, le premier exemple est utilisé pour la démonstration. Des règles similaires peuvent également être écrites pour activer le deuxième scénario.

  1. Définissez les mappages de réécriture d’URL qui peuvent être utilisés pour rechercher le nom d’hôte du serveur d’origine. Lancez le Gestionnaire des services Internet.

  2. Sélectionnez et développez la racine du serveur. Il s’agit de votre nœud de cache enfant (de périmètre).

    Screenshot showing the child cache node expanded.

  3. Double-cliquez sur Réécriture d’URL.

  4. Dans le volet Actions, cliquez sur Afficher les mappages de réécriture.

    Screenshot of the Actions pane showing the View Rewrite Maps option.

  5. Dans le volet Actions, cliquez sur Ajouter un mappage de réécriture.

    Screenshot of the Actions pane showing the Add Rewrite Map option.

  6. Dans la boîte de dialogue Ajouter un mappage de réécriture, donnez le nom OriginServers au mappage de réécriture.

    Screenshot of the Add rewrite map dialog showing OriginServers in the input box.

  7. Dans le mappage de réécriture, vous identifierez explicitement le mappage entre le nom d’hôte que le nœud de cache enfant reçoit et les noms d’hôte d’origine correspondants. Dans le volet Actions, cliquez sur Ajouter une entrée de mappage....

    Screenshot of the Actions menu showing the Add Mapping Entry option.

  8. Dans la boîte de dialogue Ajouter une entrée de mappage, ajoutez le nom d’hôte que le nœud de cache enfant reçoit et le nom d’hôte d’origine. Dans l’exemple ci-dessous, le nœud de cache enfant ARR reçoit customer1.mycdn.net comme en-tête de nom d’hôte. Le serveur d’origine correspondant est images.customer1.com.

    Screenshot of the Add Mapping Entry dialog with the example information entered.

  9. Répétez l’étape 8 autant de fois que nécessaire pour inclure tous les clients auxquels votre CDN/ECN fournit des services. C’est ainsi que vous pouvez gérer la liste explicite de vos clients pour vous assurer que votre service est fourni uniquement à vos clients.

  10. Pour bloquer les clients qui ne figurent pas sur la liste de mappages de réécriture, définissez la valeur par défaut de ce mappage de réécriture sur #, qui est un caractère illégal qui ne peut pas être utilisé dans le cadre de l’en-tête de nom d’hôte, selon la norme RFC. Dans le volet Actions, cliquez sur Modifier les paramètres de mappage....

    Screenshot of the Actions menu.

  11. Dans la boîte de dialogue Modifier le mappage de réécriture, entrez # comme valeur par défaut pour ce mappage de réécriture.

    Screenshot of the Edit Rewrite Map dialog. The character # is in the Default value to use when key is not found in the map input box. OK is selected.

  12. Réécrivez l’en-tête de nom d’hôte avec les règles qui ont été configurées dans le mappage de réécriture OriginServers. En cas d’absence de cache et si la demande est routée vers le nœud de cache parent, la demande a le nom d’hôte qui correspond au serveur d’origine. C’est pourquoi, pour l’essentiel, le nœud de cache parent est configuré en tant que proxy de transfert. En cas d’absence de cache au niveau du nœud de cache parent, la demande est simplement routée vers le serveur d’origine en fonction de l’en-tête de nom d’hôte que le nœud de cache parent reçoit.

  13. Dans l’interface utilisateur de réécriture d’URL, recherchez la règle. Dans cette procédure pas à pas, le nom de la règle doit être ARR_myParentCacheNodes_loadbalance.

    Screenshot showing the example rule settings.

  14. Sélectionnez la règle et, dans le volet Actions, cliquez sur Modifier.

  15. Cliquez sur Ajouter des conditions pour ajouter deux règles.

  16. La première règle utilise le mappage de réécriture OriginServers que vous avez créé à l’étape 6. La règle suivante correspond à l’en-tête de l’hôte comme clé pour correspondre aux entrées dans OriginServers :

    Screenshot of the Add Condition dialog showing origin server data with Pattern is set to *.

  17. La deuxième règle définit la valeur par défaut comme # lorsque l’en-tête de l’hôte ne correspond pas aux entrées dans OriginServers. Comme indiqué ci-dessus, # n’est pas un caractère valide et ne peut pas être utilisé comme nom d’hôte. La règle suivante est utilisée ultérieurement pour s’assurer que seuls les clients (tels que représentés par les noms d’hôte) dans OriginServers sont pris en charge par ARR :

    Screenshot of the Add Condition dialog with Pattern set to the default.

  18. Sélectionnez Suivre les groupes de captures dans plusieurs conditions.

  19. Pour définir les valeurs HTTP_HOST pour qu’elles correspondent aux conditions ci-dessus, cliquez sur Variables de serveur.

  20. Entrez les valeurs suivantes pour réinitialiser HTTP_HOST :

    Screenshot of the Server Variables dialog.

  21. Cliquez sur OK pour enregistrer les modifications.

  22. Dans le volet Actions, cliquez sur Appliquer pour enregistrer les modifications.

  23. Pour vérifier que les règles correctes ont été écrites, ouvrez le fichier applicationHost.config à l’aide du Bloc-notes. Le fichier de configuration se trouve à l’emplacement %windir%\system32\inetsrv\config\.

  24. Recherchez la règle de réécriture d’URL pour la batterie de serveurs, myParentCacheNodes. Il doit se présenter comme suit :

    <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>
    
  25. Fortement recommandé. Pour bloquer les demandes qui ne correspondent pas aux noms d’hôte définis dans le mappage de réécriture ci-dessus, créez une règle de réécriture d’URL par défaut qui envoie une réponse 400 à ces demandes.

    Lancez le Gestionnaire des services Internet.

  26. Sélectionnez et développez la racine du serveur. Il s’agit de votre nœud de cache enfant (de périmètre).

    Screenshot showing a server expanded.

  27. Double-cliquez sur Réécriture d’URL.

  28. Dans le volet Actions, cliquez sur Ajouter des règles.

    Screenshot of the Actions menu showing the Add Rules option.

  29. Dans la boîte de dialogue Ajouter une ou plusieurs règles, sélectionnez Règle vide.

    Screenshot of the Add rules dialog with Blank rule selected.

  30. Entrez les valeurs suivantes, puis enregistrez la règle :
    Nom : Pas mon client
    Utilisant : Caractères génériques
    Modèle * :
    Type d’action : Réponse personnalisée
    Code d’état : 400
    Code de sous-état : 0

    Screenshot showing the rules variable dialog.

  31. L’ordre des règles est important. Les règles de réécriture d’URL sont traitées de haut en bas. Dans cet exemple, si le nom d’hôte entrant correspond à l’un des noms d’hôte spécifiés dans le mappage de réécriture ci-dessus, la première règle, ARR_myParentCacheNodes_Loadbalance, est exécutée. Si le nom d’hôte entrant ne correspond à aucun des noms d’hôte définis dans le mappage de réécriture ci-dessus, la deuxième règle, Pas mon client, est exécutée.

    Screenshot showing 2 rules.

  32. La configuration du nœud de cache enfant/de périmètre est terminée.

Pour simplifier la configuration des nœuds de cache enfants supplémentaires, une configuration partagée peut être utilisée afin qu’il n’y ait qu’un seul emplacement pour gérer la configuration du nœud de cache enfant. Sinon, les modifications de configuration ci-dessus doivent être effectuées individuellement sur tous les nœuds de cache enfants dans l’environnement CDN/ECN. Pour en savoir plus sur la configuration partagée, consultez l’article Configuration partagée.

Configuration du nœud de cache parent

Il existe deux façons de configurer ARR comme nœud de cache parent :

  1. Configurer ARR comme proxy de transfert.
  2. Configurer ARR comme proxy « inverse » avec le mappage de réécriture.

Même avec la deuxième option ci-dessus, les mappages de réécriture réécriront simplement le nom d’hôte entrant avec la même valeur, ce qui en fait un proxy de transfert. Le mappage de réécriture est utilisé pour configurer explicitement la liste des noms d’hôte que le cache parent acceptera, comme le nœud de cache enfant est configuré ci-dessus. Dans cette deuxième partie de la procédure pas à pas, le nœud de cache parent est configuré à l’aide de la première option comme proxy de transfert simple.

Étape 1 : Configurer le cache de disque

Configurez et activez le cache de disque en suivant l’article Configurer et activer le cache de disque dans Application Request Routing.

Étape 2 : Configurer ARR en tant que proxy de transfert

  1. Activez ARR en tant que proxy. Lancez le Gestionnaire des services Internet.

  2. Cette configuration n’implique aucune batterie de serveurs. Tous les paramètres sont définis au niveau du serveur.

    Screenshot showing the server with expanded selections. The server name is highlighted.

  3. Double-cliquez sur Cache Application Request Routing.

    Screenshot showing the connections and main panes. The main pane shows the server function icons.

  4. Dans le volet Actions, cliquez sur Paramètres du proxy de serveur.

    Screenshot of the Actions pane showing the Server Proxy Settings option.

  5. Cochez la case Activer le proxy, puis cliquez sur Appliquer. Vous venez d’activer ARR en tant que proxy au niveau du serveur.

  6. Pour transformer ARR en proxy de transfert, cliquez sur le nœud du serveur dans le volet de navigation.

    Screenshot showing navigation options.

  7. Double-cliquez sur Réécriture d’URL.

  8. Dans le volet Actions, cliquez sur Ajouter des règles....

    Screenshot of the Actions pane showing the Add Rules option.

  9. Dans la boîte de dialogue Ajouter une ou plusieurs règles, sélectionnez Règle vide.

    Screenshot showing the Add rules dialog. The Blank rule icon is highlighted.

  10. Entrez les valeurs suivantes, puis enregistrez la règle :
    Nom : Proxy de transfert
    Utilisant : Caractères génériques
    Modèle * :
    Conditions :
    Entrée : {HTTP_HOST}
    Type : Correspond au modèle
    Modèle * :
    Type d’action : Réécriture
    URL de réécriture : http://{C:1}/{R:0}

    Screenshot showing the dialog with the example values.

  11. La configuration du nœud de cache parent est terminée.

    Pour simplifier la configuration des nœuds de cache parents supplémentaires, une configuration partagée peut être utilisée afin qu’il n’y ait qu’un seul emplacement pour gérer la configuration du nœud de cache parent. Sinon, les modifications de configuration ci-dessus doivent être effectuées individuellement sur tous les nœuds de cache parents dans l’environnement CDN/ECN. Pour en savoir plus sur la configuration partagée, consultez l’article suivant.

Résumé

Vous avez maintenant correctement configuré les nœuds de cache enfants et les nœuds de cache parents dans un environnement CDN/ECN de hiérarchie de cache à 2 niveaux à l’aide de règles avancées de réécriture d’URL. Pour vérifier la fonctionnalité, vous pouvez suivre les étapes 4 et 5 de l’article Configurer et activer le cache de disque dans Application Request Routing. En cas d’erreurs, activez les règles de suivi des demandes ayant échoué en suivant les étapes décrites dans l’article Utilisation des règles de suivi des demandes ayant échoué pour résoudre les problèmes d’Application Request Routing.

Pour obtenir d’autres procédures pas à pas d’ARR version 2, consultez les documents de l’article Vue d’ensemble d’Application Request Routing version 2.