Citrix Application Delivery Management 13.0

Configurer la commutation de contenu de couche 7

Citrix Application Delivery Management (ADM) orchestre avec OpenStack pour configurer les fonctionnalités de commutation de couche 7 (L7) ou de commutation basée sur le contenu sur des instances Citrix ADC. La commutation de contenu diffère du simple équilibrage de charge en ce sens que des types spécifiques de requêtes peuvent être dirigés vers des serveurs spécifiques. Lorsque les configurations L7 sont créées dans OpenStack avec une instance Citrix ADC en tant que fournisseur, Citrix ADM affecte une instance Citrix ADC et déploie des configurations de commutation de contenu et de répondeur correspondant aux configurations L7. Les instances de Citrix ADC peuvent ensuite distribuer et équilibrer la charge des demandes utilisateur en fonction des caractéristiques de couche applicative des demandes.

La fonction d’équilibrage de charge de la couche 7 (L7) d’OpenStack combine l’équilibrage de charge et la commutation de contenu pour optimiser la diffusion de types spécifiques de contenu. Cela améliore les performances de l’équilibreur de charge en exécutant uniquement les stratégies applicables au contenu. L’équilibrage de charge de couche 7 facilite également l’efficacité de l’infrastructure applicative. La possibilité de séparer le contenu en fonction du type, de l’URI ou des données permet une meilleure allocation des ressources physiques dans l’infrastructure applicative. Par exemple, un utilisateur final naviguant vers http://example-sports.com/about-us doit être servi par un pool de serveurs hébergeant du contenu sur l’entreprise et les services, tandis qu’un utilisateur naviguant vers http://example-sports.com/shopping-cart-football doit être servi par un pool différent de serveurs qui permet aux utilisateurs de faire des achats en ligne.

Dans la commutation L7, un équilibreur de charge est implémenté en tant que serveur virtuel de commutation de contenu qui accepte les requêtes HTTP des utilisateurs et les distribue aux serveurs d’applications. La commutation L7 ou la commutation de contenu vous permet d’avoir une entrée unique pour accéder à une variété de services back-end (par exemple, pas seulement les applications Web, les portails de services Web, les courriels Web, mais aussi la gestion mobile, le contenu dans différentes langues, etc.). Autrement dit, vous pouvez fournir une adresse IP publique pour tous les services que vous offrez à vos utilisateurs.

Contrairement à l’équilibrage de charge de niveau inférieur, la commutation de couche 7 ne nécessite pas que tous les serveurs du pool aient le même contenu. Une configuration d’équilibrage de charge utilisant la commutation L7 s’attend à ce que l’application ou les serveurs back-end de différents pools aient un contenu différent. Les commutateurs L7 peuvent diriger les requêtes sur la base de l’URI, de l’hôte, des en-têtes HTTP ou tout autre élément du message de l’application. Les serveurs d’applications doivent essentiellement servir des types de contenu spécifiques. Par exemple, un serveur peut servir uniquement des images, un autre peut exécuter des langages de script côté serveur, tels que PHP et ASP, et un autre peut servir du contenu statique tel que HTML, CSS et JavaScript.

Règles L7

Les attributs suivants sont définis dans une règle pour évaluer le trafic et sont comparés aux valeurs définies dans la règle :

  • hostname : Le nom d’hôte dans la requête HTTP est comparé au paramètre value dans la règle. Par exemple, « www.example-sports.com ».

  • path : La partie chemin de l’URI HTTP est comparée au paramètre value de la règle. Par exemple, « www.example-sports.com/shopping-cart/football_pump.html »

  • file_type : la dernière partie de l’URI est comparée au paramètre value de la règle. Par exemple, txt, html, jpg, png, xls, et d’autres.

  • header : l’en-tête défini dans le paramètre clé est comparé au paramètre value de la règle.

  • cookie : le cookie nommé par le paramètre clé est comparé au paramètre value de la règle. La valeur du champ de requête cookie contient une paire d’informations nom et valeur stockée pour cette URL ; la syntaxe générale est la suivante - Cookie : name=value. Par exemple, une règle qui recherche un cookie nommé « stocke » avec la valeur commençant par « football- » ressemblera à : type = Cookie, compare_type=startsWith, key = stocke value = football-.

Types de comparaison

Lors de l’évaluation du trafic, la stratégie L7 compare les expressions suivantes aux attributs définis dans la règle.

  • regex : correspondance d’expression régulière de type Perl

  • starts_with : Chaîne commence par

  • ends_with : La chaîne se termine par

  • contient : La chaîne contient

  • equal_to : Chaîne égale à

Remarque

Les attributs hostname, path, header et cookie prennent en charge tous les types de comparaison, mais l’attribut file_type prend uniquement en charge regex et equal_to.

Politiques L7

Une stratégie L7 traite le trafic HTTP entrant et renvoie une valeur « true » lorsque toutes les règles définies dans la stratégie sont appariées.

Dans toute stratégie L7, toutes les règles sont logiquement jointes à un opérateur AND. Une requête doit correspondre à toutes les règles afin que la stratégie renvoie une valeur « true ». L’action entreprise par l’équilibreur de charge est basée sur la valeur renvoyée par la stratégie. Vous pouvez créer une deuxième stratégie avec la même action pour réaliser une opération OU logique entre les règles.

Par exemple, vous pouvez créer une stratégie dans laquelle la requête HTTP entrante peut contenir les mots « EXAMPLE-SPORTS », « SPORTS-FOOTBALL » ou « EXAMPLE-FOOTBALL », afin que l’équilibreur de charge prenne les mesures appropriées pour transférer ces demandes au pool de serveurs de l’Example-Sports entreprise de commerce électronique pour servir le contenu demandé. Vous pouvez créer une autre stratégie qui prend la même action, mais qui correspond à « exemple sport », « exemple sports-football » ou « exemple football. «  Lorsqu’un utilisateur envoie une requête HTTP avec l’un de ces six mots-clés, l’équilibreur de charge transmet la requête au serveur Example-Sports.

Selon les règles définies dans la stratégie, une stratégie L7 peut effectuer l’une des actions suivantes :

  • Rediriger vers le pool - Transférer la demande vers le pool de serveurs d’applications identifié par les règles associées à la stratégie L7. Autrement dit, vous pouvez créer une règle d’application pour diriger les requêtes vers un pool d’équilibrage de charge spécifique en fonction du nom de domaine. Par exemple, vous pouvez créer une règle qui dirige certaines requêtes vers example-football.com vers pool_1, et d’autres requêtes vers example-sports-online_purchase.com vers pool_2.

  • Rediriger vers URL - Envoie au client une réponse HTTP de redirection dans laquelle l’en-tête de réponse d’emplacement contient le nouvel emplacement. Le navigateur mettra à jour la barre d’adresse avec le nouvel emplacement et émettra une nouvelle demande. Les cas d’utilisation sont nombreux. Par exemple, si une adresse de site Web a changé, vous pouvez rediriger les demandes vers la nouvelle adresse au lieu de les abandonner. Ou, pendant la maintenance du site Web, vous pouvez rediriger les utilisateurs vers un site en lecture seule.

  • Rejeter - Rejette la demande et n’effectue aucune autre action. Par exemple, vous pouvez renvoyer une réponse 401 non autorisée pour refuser l’accès aux utilisateurs pour les pages Web restreintes.

Une configuration de commutation de contenu se compose d’un serveur virtuel de commutation de contenu, d’une configuration d’équilibrage de charge consistant en serveurs et services virtuels d’équilibrage de charge, et de stratégies de commutation de contenu. Après avoir créé votre serveur virtuel de commutation de contenu et les stratégies, vous liez chaque stratégie au serveur virtuel de commutation de contenu. Lorsque vous liez la stratégie au serveur virtuel de commutation de contenu, vous spécifiez le serveur virtuel d’équilibrage de charge cible. Lorsqu’une demande atteint le serveur virtuel de commutation de contenu, le serveur virtuel applique les stratégies de commutation de contenu associées à cette demande. La priorité de la stratégie définit l’ordre dans lequel les stratégies liées au serveur virtuel de commutation de contenu sont évaluées.

Tout pool ayant l’ID du processus d’écoute peut être affecté en tant que pool par défaut de serveurs virtuels vers lesquels le trafic est détourné. Le pool est lié de manière lâche à un écouteur et devient associé à un écouteur uniquement par l’implémentation d’une stratégie L7. Un pool peut également être créé directement sous un équilibreur de charge sans nécessairement être lié à un écouteur. Dans ce cas, le pool est créé dans un état « pending_create ». Étant donné que les stratégies L7 sont étroitement liées aux écouteurs, une stratégie L7 contenant l’ID de pool doit être créée et implémentée pour que le pool devienne « actif » et commence à recevoir des demandes de trafic.

Un pool peut être servi par plusieurs stratégies L7, mais reste dans l’état « actif » si au moins une stratégie y est attachée. Lorsque la dernière stratégie est supprimée, le pool retourne dans l’état « pending_create » jusqu’à ce qu’une autre stratégie soit créée et associée à elle. Si le pool lui-même est supprimé, toutes les requêtes HTTP qu’il aurait reçues autrement sont redirigées vers le pool par défaut.

Mappage entre les stratégies OpenStack L7 et les entités Citrix ADC

     
OpenStack Entité Citrix ADC Description
Stratégie L7 avec action REDIRECT_TO_POOL Stratégie de commutation de contenu > Action de commutation de contenu Citrix ADM crée une stratégie de commutation de contenu liée au serveur virtuel de commutation de contenu et associée à une action de commutation de contenu spécifiant le pool cible de serveurs d’applications pour la récupération de contenu et la présentation à l’utilisateur.
Stratégie L7 avec action REDIRECT_TO_URL Stratégie du répondeur > Action du répondeur Citrix ADM crée une stratégie de répondeur liée au serveur virtuel de commutation de contenu et associée à une action de répondeur qui spécifie l’URL cible à présenter aux utilisateurs.
Politique L7 avec action REJECT Stratégie de répondeur > Supprimer la demande Citrix ADM crée une stratégie de répondeur liée au serveur virtuel de commutation de contenu et associée à une action de répondeur qui supprime la demande.

Si l’action d’une stratégie L7 qui évalue « true » redirige le trafic vers un pool qui est à l’état « create_pending », Citrix ADM implémente le pool spécifié avec un serveur virtuel d’équilibrage de charge. Citrix ADM crée une stratégie de commutation de contenu à partir de la stratégie L7 et utilise l’action de commutation de contenu correspondante pour rediriger les demandes vers le serveur virtuel d’équilibrage de charge associé à ce pool. Si une seconde stratégie L7 redirige vers le même pool, Citrix ADM crée une stratégie de commutation de contenu et une action de commutation de contenu pour rediriger le trafic vers le serveur virtuel d’équilibrage de charge existant associé au pool.

Positionnement des politiques

L’évaluation des stratégies L7 dans OpenStack est déterminée par leurs priorités. Dans OpenStack, par défaut, les stratégies se voient attribuer des priorités dans l’ordre dans lequel elles sont créées. La stratégie créée en premier est numérotée « 1 », et les stratégies créées par la suite sont numérotées consécutivement. Mais vous pouvez modifier les priorités des politiques et leur attribuer des priorités différentes. Les politiques sont toujours évaluées dans l’ordre de leurs priorités. La première stratégie qui correspond à une demande spécifique est toujours exécutée en premier.

Lors de la création de stratégies, notez les points suivants :

  • Si vous attribuez à une nouvelle stratégie la même priorité qu’une stratégie existante, la nouvelle stratégie prend cette priorité. La priorité de la politique existante est réduite. Si nécessaire, les priorités des autres politiques sont aussi abaissées afin de conserver l’ordre dans lequel elles sont évaluées.

  • Si vous créez une nouvelle stratégie sans spécifier de position, la nouvelle stratégie sera simplement ajoutée à la liste.

  • Si vous créez une nouvelle stratégie et lui attribuez un poste supérieur au nombre de stratégies déjà dans la liste, la nouvelle stratégie sera ajoutée à la liste, c’est-à-dire que la nouvelle stratégie prend toujours la priorité disponible suivante. Par exemple, s’il existe trois politiques A, B et C avec les priorités 1,2 et 3, et si vous créez une stratégie et attribuez une priorité de 8, la priorité de la nouvelle stratégie devient 4.

  • Si vous ajoutez une stratégie à la liste ou supprimez une stratégie de la liste, les valeurs de position de stratégie sont réordonnées à partir de 1 sans ignorer les nombres. Par exemple, si la stratégie A, B, C et D a des valeurs de position de 1, 2, 3 et 4 et si vous supprimez la stratégie B de la liste, la stratégie C prend désormais la deuxième position et la stratégie D prend la troisième position.

Dans Citrix ADM, il existe toujours une stratégie par défaut associée à un serveur csvserver avec une priorité de 1. Cette stratégie par défaut spécifie le nombre de connexions TCP qu’un serveur lbvserver doit traiter à un moment donné. Par conséquent, lorsque les stratégies de répondeur et les stratégies de commutation de contenu correspondantes sont créées dans Citrix ADC, elles reçoivent toujours une priorité 1 supérieure à la priorité de la stratégie L7 correspondante. Par exemple, lorsqu’une stratégie L7 avec une priorité de 1 est évaluée et qu’une stratégie de commutation de contenu est créée avec une priorité de 2. De même, lorsqu’une stratégie L7 avec une priorité de 2 est évaluée et qu’une stratégie de réponse est créée avec une priorité de 3.

Dans OpenStack, les stratégies « rejet » et/ou « redirect_to_url » sont d’abord évaluées, puis la stratégie « redirect_to_pool est évaluée. Dans une instance de Citrix ADC, les stratégies de répondeur sont toujours évaluées en premier pour supprimer la demande ou présenter à l’utilisateur une adresse Web redirigée, et les stratégies de commutation de contenu sont évaluées en dernier. Cet ordre d’évaluation ne provoque généralement aucun conflit si les politiques de changement de contenu et de réponse s’excluent mutuellement. Autrement dit, deux stratégies L7 ne devraient pas avoir d’expressions identiques. Les expressions dérivées doivent être ajoutées dans les stratégies de changement de réponse et de contenu afin d’éviter de tels conflits. Par exemple, écrivez une expression pour rejeter toutes les demandes sur “sports-football.com” et une autre expression pour autoriser les requêtes à “example-sports-football.com.” Créez les stratégies L7 de sorte que toutes les stratégies de réponse pour rejeter la demande soient organisées en haut de la liste d’évaluation, suivies des stratégies de réponse pour le web direct, suivies des stratégies de changement de contenu.

Dans Citrix ADM, il existe toujours une stratégie par défaut associée à un serveur csvserver avec une priorité de 1. Cette stratégie par défaut spécifie le nombre de connexions TCP qu’un serveur lbvserver doit traiter à un moment donné. Par conséquent, lorsque les stratégies de répondeur et les stratégies de commutation de contenu correspondantes sont créées dans Citrix ADC, elles reçoivent toujours une priorité 1 supérieure à la priorité de la stratégie L7 correspondante. Par exemple, lorsqu’une stratégie L7 avec une priorité de 1 est évaluée et qu’une stratégie de commutation de contenu est créée avec une priorité de 2. De même, lorsqu’une stratégie L7 avec une priorité de 2 est évaluée et qu’une stratégie de réponse est créée avec une priorité de 3.

Dans OpenStack, les stratégies « rejet » et/ou « redirect_to_url » sont d’abord évaluées, puis la stratégie « redirect_to_pool est évaluée. Dans Citrix ADC, les stratégies de réponse sont toujours évaluées en premier pour supprimer la demande ou présenter à l’utilisateur une adresse Web redirigée, et les stratégies de commutation de contenu sont évaluées en dernier. Cet ordre d’évaluation ne provoque généralement aucun conflit si les politiques de changement de contenu et de réponse s’excluent mutuellement. Autrement dit, deux stratégies L7 ne devraient pas avoir d’expressions similaires. Des expressions dérivées similaires doivent être ajoutées dans les stratégies de changement de réponse et de contenu afin d’éviter de tels conflits. Par exemple, écrivez une expression pour rejeter toutes les demandes sur “sports-football.com” et une autre expression pour autoriser les requêtes à “example-sports-football.com.” Créez les stratégies L7 de sorte que toutes les stratégies de réponse pour rejeter la demande soient organisées en haut de la liste d’évaluation, suivies des stratégies de réponse pour le web direct, suivies des stratégies de changement de contenu.

Tâches de configuration

Les implémentations de stratégie et d’action L7 sont effectuées via les commandes LBaaS Neutron.

Définissez les variables d’environnement dans OpenStack et créez l’équilibreur de charge (par exemple, LB1). Une fois l’équilibreur de charge créé, créez le processus d’écoute et les pools (par exemple, L1, P1 et P2) et ajoutez des membres et des moniteurs aux pools. Par exemple, P1 est le pool par défaut pour L1, tandis que P2 est le pool lié à LB1 et gérant les serveurs d’applications.

Pour plus d’informations sur la configuration de LBaaS V2 à l’aide de la ligne de commande, reportez-vous à la section Configuration de LBaaS V2 à l’aide de la ligne de commande.

Les commandes suivantes créent les stratégies et définissent les actions spécifiques :

Créer une stratégie L7 pour supprimer les demandes

neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action<action-name>

Exemple :

neutron lbaas-l7policy-create –name policy11 –action REJECT –listener L1

La commande ci-dessus crée et lie policy11, une stratégie de répondeur, au serveur de commutation de contenu pour rejeter les demandes. Aucune règle n’ayant été créée pour cette stratégie, la stratégie est évaluée à « false » et la demande est rejetée.

Créer une stratégie L7 pour rediriger les demandes vers une URL particulière

neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action <action-name> --redirect-url <redirect-url>

Exemple :

neutron lbaas-l7policy-create –name policy12 –action REDIRECT_TO_URL –listener admin-list1 –redirect-url http://example-sports/about-us.html

La commande ci-dessus crée une action de répondeur pour rediriger les demandes vers une URL, crée une stratégie de répondeur avec action et lie cette stratégie au serveur virtuel de commutation de contenu.

neutron lbaas-l7rule-create --type HOST_NAME --compare-type CONTAINS --value <value-string> <L7 policy name>

neutron lbaas-l7rule-create --type PATH --compare-type CONTAINS --value <value-string> <L7 policy name>

Les deux règles ci-dessus peuvent être connectées à un opérateur AND pour dériver l’expression de la stratégie de répondeur.

Créer une stratégie L7 pour rediriger les demandes vers un pool

neutron lbaas-l7policy-create --name <L7 policy name> --listener <listener name> --action <action-name> --redirect-pool <redirect-pool>

Exemple :

neutron lbaas-l7policy-create –name policy13 –action REDIRECT_TO_POOL –listener admin-list1 –redirect-pool admin-pool2

S’il s’agit de la première stratégie L7, la commande ci-dessus implémente P2 avec LB1, crée l’action de redirection de commutation de contenu et redirige les requêtes vers LB1. Si P2 existe déjà, la commande crée l’action de redirection de commutation de contenu et redirige les requêtes vers LB1.

Configurer la commutation de contenu de couche 7