Content Switch ou routage de niveau HTTP



Documents pareils
ALOHA LOAD BALANCER MISE EN ŒUVRE DU SSL FRONTEND

ALOHA LOAD BALANCER MICROSOFT TERMINAL SERVICES LOAD-BALANCING AVEC SESSION BROKER

Retour d expérience sur la mise en place d une solution de répartition de charge entièrement libre.

Configuration serveur pour le mode L4 DSR

Répartition des charges avec HaProxy CONTEXTE MFC JULIEN HUBERT

EXCELIANCE ZAC des Metz 3 Rue du petit robinson Jouy en Josas Tél: Fax: sales@exceliance.

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

Load Balancing MASSAOUDI MOHAMED CHAHINEZ HACHAICHI AMENI DHAWEFI ERIJ MAIJED EMNA BOUGHANMI

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

ALOHA Load Balancer 2.5. Guide de démarrage rapide. EXCELIANCE ALOHA 2.5 Guide de démarrage rapide 30/01/2008 1/17

FORMATION CN01a CITRIX NETSCALER

Note d Application. Bascule d ALOHA via injection de route en BGP

ALOHA Load Balancer Guide de démarrage

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

NIMBUS TRAINING. Administration de Citrix NetScaler 10. Déscription : Objectifs. Publics. Durée. Pré-requis. Programme de cette formation

Configurer Squid comme serveur proxy

L EVOLUTIVITE APPLICATIVE PAR LA REPARTITION DE CHARGE

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Figure 1a. Réseau intranet avec pare feu et NAT.


FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Tests de montée en charge & Haute disponibilité

TR2 : Technologies de l'internet. Chapitre VI. NAT statique et dynamique Overloading (PAT) Overlapping, port Forwarding Serveur Proxy, DMZ

Proxies,, Caches & CDNs

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

IKare Guide utilisateur

Administration de Citrix NetScaler 10.5 CNS-205-1I

EXCELIANCE ZAC des Metz 3 Rue du petit robinson Jouy en Josas Tél: Fax: sales@exceliance.

ALCATEL IP1020. Guide de Configuration pour l offre Centrex OpenIP

Mettre en place un accès sécurisé à travers Internet

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Administration de Citrix NetScaler 10 CNS-205-1I

Configurer l adressage des serveurs et des clients

Zoom sur Newtest LDAP intégration

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Serveurs de noms Protocoles HTTP et FTP

Manuel du client de bureau distant de KDE

Protection des protocoles

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Plan. Présentation du logiciel Sympa Architecture La gestion des hôtes virtuels Listes avec inclusion des abonnés Les modules d authentification

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

«clustering» et «load balancing» avec Zope et ZEO

Présentation de la solution Open Source «Vulture» Version 2.0

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

Mise en œuvre d une Gateway HTTP/HTTPS avec un serveur de Présentation en DMZ

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

Présentation du modèle OSI(Open Systems Interconnection)

Logiciel de connexion sécurisée. M2Me_Secure. NOTICE D'UTILISATION Document référence :

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

Cloud public d Ikoula Documentation de prise en main 2.0

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Service d'authentification LDAP et SSO avec CAS

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Joomla! Création et administration d'un site web - Version numérique

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

Manuel d'installation

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Progiciel pour la configuration et la visualisation de régulateurs

INTERCONNEXION ENT / BCDI / E - SIDOC

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Réseau - Sécurité - Métrologie - Data Center. Le leader du marché allemand des UTM débarque en France avec des arguments forts!

Réseaux. 1 Généralités. E. Jeandel

DESCRIPTION DU CONCOURS QUÉBÉCOIS INFORMATIQUE (GESTION DE RÉSEAUX)

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Introduction. aux architectures web. de Single Sign-On

Guide de démarrage

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Service de certificat

Groupe Eyrolles, 2004, ISBN :

Les Réseaux Privés Virtuels (VPN) Définition d'un VPN

Exécution de PCCOMPTA à distance sous Terminal Server 2003.

IPS-Firewalls NETASQ SPNEGO

2. DIFFÉRENTS TYPES DE RÉSEAUX

Développement des Systèmes d Information

Transport Layer Security (TLS) Guide de mise en œuvre. Version: 1.0

OPTENET DCAgent Manuel d'utilisateur

Devoir Surveillé de Sécurité des Réseaux

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Réglages du portail de P&WC

Table des matières Nouveau Plan d adressage... 3

SSH, le shell sécurisé

USERGATE PROXY & FIREWALL. Protection exhaustive de réseau corporate, optimisation de trafic Internet, administration flexible

Tests de montée en charge avec Tsung

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Services Réseaux - Couche Application. TODARO Cédric

14.1. Paiements et achats en ligne

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Transcription:

ALOHA Load-Balancer - Application Note Document version: v1.1 Last update: 19 juin 2014 EMEA Headquarters 3, rue du petit robinson ZAC des Metz 78350 Jouy-en-Josas France http://www.haproxy.com/

Objectif Le Content switching est la capacité à router des requêtes HTTP en se basant sur une information disponible dans le protocole lui-même (URL et en-tête). Ce document explique comment le faire dans HAProxy. Difficulté Versions concernées Aloha 4.2 and above Changelog Version Description 2014-06-03 1.1 1.0 Mise à jour du thème HAProxy Tech. Changements mineurs Prise en compte du firmware ALOHA 6.0 2013-11-08 Première version Synopsis Le content switching facilite l évolutivité des applications et rends les architectures webs plus flexibles. On peut utiliser cette technique pour améliorer la sécurité et la disponibilité des platformes webs ou lorsque certaines applications requièrent différents paramètres, bien qu étant hébergées sur le même serveur. Les paramètres peuvent être : virtual hosting : routage des requêtes basé on le nom du site web application hosting : routage des requêtes basé sur le chemin de contenu dans l URL catégoriser le trafic : statique / dynamique, par exemple allocation de ressources en fonction de la catégorie de l utilisateur (authentifié ou non, etc...) contrôle de vitalité timeouts mode de connexion statistiques compression gestion de file d attente Liste non exhaustive. Page 2 sur 10

Limitation Le Content Switching est partiellement compatible avec le mode tunnel d HAProxy. Merci de lire le mémo nommé HTTP Connection mode pour de plus amples informations sur les différents modes disponibles dans HAProxy. En mode tunnel, seule la première requête de la session peut être analysée et routée, toutes les autres seront considérées comme de la donnée brute et transférées sur la même connexion sans analyse. Si votre application requiert une authentification basée sur NTLM, alors vous devez utiliser le mode tunnel (ou le -keep-alive de l ALOHA 6.0 et supérieur). ALOHA 4.2 à 5.5 Par défaut, l ALOHA est configuré en mode server-close, qui est compatible avec les informations délivrées dans ce document. Si vous devez activer le mode tunnel dans cette version d ALOHA, alors vous ne pourrez router le trafic en cours qu en vous basant sur la première requête de chaque connexion. C est suffisant pour la plupart des usages. ALOHA 6.0 et supérieur Depuis l ALOHA 6.0, un nouveau mode de connexion a été introduit : http-keep-alive. Ce mode est compatible avec le NTLM puisqu il conserve la connexion ouverte avec le serveur, mais il permet aussi l analyse protocolaire de tout le contenu échangé. Ce qui signifie qu HAProxy est capable de router n importe quelle requête d une connexion existante vers un autre serveur. Le mode tunnel est encore disponible, appelé http-tunnel, et peut être utilisé dans de rares cas. Reverse-Proxy Habituellement, la fonctionnalité de Content Switching est associées aux Reverse-Proxies. Le mode interne de fonctionnement d HAProxy est précisément un Reverse-Proxy. Dans sa configuration, nous définissons des points d entrée, appelés frontend, et des points de sortie, appelés backend. L action de choisir vers quel backend router la requête HTTP est le Content Switching. Termes en anglais Cette documentation contient quelques termes en anglais, afin de faciliter au lecteur la recherche d information dans la documentation HAProxy qui est uniquement disponible en anglais. Ces termes, avec leur traduction, sont : sample : échantillon fetch : extraire pattern : motif match : correspondre Page 3 sur 10

Content Switching dans l ALOHA Fonctionnement du routage à l intérieur de HAProxy Dans l ALOHA Load-Balancer, l outil de traitement au niveau 7 est HAProxy. C est donc dans HAProxy que l on sera capable de configurer les règles de content switching. D un point de vue HTTP, HAProxy est divisé en deux composants principaux : 1. frontend : gère tout ce qui est côté client client 2. backend : gère tout ce qui est côté serveur Quand un client envoi une requête, elle est d abord traitée par le frontend. Puis, en fonction de sa configuration, HA- Proxy route la requête vers un backend. Le moment où HAProxy prend la décision de routage entre le frontend et le backend est l étape de "content switching". La décision de routage peut être prise en fonction des critères suivants : n importe quelle chaîne de caractère ou expression régulière dans les en-têtes HTTP n importe quelle chaîne de caractère ou expression régulière dans l URL n importe quelle valeur d un paramètre de la query string n importe quelle extension de fichier valeurs de cookie informations du protocole SSL états internes à HAProxy (capacité d une ferme, file d attentes, etc...) Liste non exhaustive. Profil d une règle de Content switching Dans HAProxy, les règles de Content switching sont divisées en 2 composants : 1. Une acl pour extraire un échantillon (sample fetch) qui permettra de prendre la décision de routage en fonctions de motifs (patterns) 2. Une règle de routage qui pointe vers un backend si les acl(s) associée(s) sont validées Ci-dessous, le prototype d une règle : acl <nom de l acl> <fetch> <pattern> use_backend <nom du backend> if / unless <nom de l acl> acl : Mot clé HAProxy désignant le début d une nouvelle règle de recherche <nom de l acl> : un mot (underscore _ et moins - acceptés) nommant l acl et qui peut être utilisé comme une étiquette (pointeur) plus tard dans la configuration <fetch> : échantillon à extraire <pattern> : valeurs comparées avec l échantillon use_backend : mot clé indiquant qu une décision de routage peut s appliquer si les acls sont validées <nom du backend> : le nom du backend où envoyer la requête if / unless : mot clé permettant de valider la décision de routage si le retour de l acl est positif / négatif <nom de l acl> : le nom de l acl pour laquelle on va vérifier le résultat Règles sur le content switching dans HAProxy Il est important de connaître les quelques règles suivantes lorsque l on utilise les acls et les use_backend dans HAProxy : Plusieurs patterns peuvent être fournies par ligne d acl, un OR logique est appliqué. Plusieurs acls peuvent partager le même nom : un OU logique est appliqué entre elles. Une acl retourne uniquement VRAI ou FAUX lorsque le <fetch> correspond à l une des <patterns>. Si une configuration nécessite plusieurs use_backend, le premier ayant une acl positive sera utilisé Il est possible de conditionner l exécution d un use_backend par plusieurs acls. Un AND logique est appliqué implicitement. Un OR logique peut explicitement être déclaré. Page 4 sur 10

Extraction d échantillon (fetch) Il existe plusieurs fetch dans HAProxy, et chaque nouvelle version d ALOHA Load-Balancer en introduit de nouveaux. Afin de savoir quels fetch sont disponibles dans votre ALOHA, ouvrez l onglet LB Layer7 de l interface puis cliquez sur le bouton aide du coin supérieur droit de la zone de saisie et utilisez le moteur de recherche avec la chaîne de caractère "Matching at Layer 7" ou "Fetching HTTP samples" (ALOHA 6.0 et supérieur). ALOHA 4.2 à 5.5 Les critères les plus communément utilisés sont : src : extraction de l adresse IP source (client) nbsrv : nombre de serveurs disponibles dans une ferme method : méthode de la requête HTTP hdr : analyse des en-têtes HTTP path : extraction du chemin d URL (query string exclue) url : extraction de l URL comme présentée dans la requête, incluant la méthode (GET/POST/- HEAD/etc...) et la version du protocole urlp : extraction de la première occurence d un paramètre de la query string ALOHA 6.0 Cette version de firmware a introduit les nouveaux fetch suivant : base : extraction de la concaténation du premier en-tête Host et du chemin de l URL (jusqu au point d interrogation) cook : extraction de la valeur d un cookie Liste non exhaustive Fetch améliorés Par défaut, un fetch s applique à l objet visé, en entier. Parfois, il est préférable d extraire un contenu à un endroit précis ou de différentes manières. Il est possible de suffixer les fetch avec l un des mots clés ci-dessous pour améliorer l extraction : _beg : préfixe _cnt : nombre d occurrence _dir : répertoire (les slashes sont implicites, pas besoin de les déclarer) _dom : nom de domaine _end : suffixe _len : longueur _reg : Expression régulière PCRE _sub : sous chaine Exemples de fetch hdr_sub : extrait une sous-chaîne dans les en-têtes HTTP hdr_reg : applique une expression régulière dans les en-têtes HTTP path_beg : extrait une chaine au début du chemin d URL path_end : extrait une chaine qui peut correspondre à l extension de fichier (plus précisément la fin du chemin de l URL) path_dir : recherche un répertoire dans le chemin de l URL Types de sample et de patterns Les données extraites peuvent être de différents types. Page 5 sur 10

Entiers Certains <fetch> retournent des entiers. Il est donc souhaitable de savoir si le sample est plus petit, plus grand ou égal à un pattern. Les mots clés ci-dessous permettent ces comparaisons : eq : vrai si l échantillon extrait (fetch) est égal au pattern ge : vrai si l échantillon extrait (fetch) est plus grand OU égal au pattern gt : vrai si l échantillon extrait (fetch) est plus grand au pattern le : vrai si l échantillon extrait (fetch) est plus petit OU égal au pattern lt : vrai si l échantillon extrait (fetch) est plus petit au pattern Par exemple : tester si le nombre de serveur disponible dans la ferme bk_web est inférieur à 2 : acl low_capacity nbsrv(bk_web) lt 2 L acl ci-dessus retourne vrai lorsque le nombre de serveurs disponibles dans la ferme est inférieur à 2 (donc 1 ou 0). Celà peut être utilisé pour router le trafic vers une ferme d excuse s il ne reste plus assez de capacité de traitement dans la ferme. Chaîne de caractère Quand le <fetch> extrait une chaîne de caractères, on veut pouvoir la comparer à d autres chaines. C est une recherche basique case-sensitive. Si la chaîne recherchée contient des espaces, alors ils doivent être précédés du caractère antislash ( \ ). Il est possible de rendre la recherche case-insensitive en ajoutant le paramètre "-i" avant la chaîne recherchée. Par exemple : vérifier si l en-tête HTTP "Host" contient la chaîne "www.domain.tld" : acl host_www.domain.tld hdr(host) www.domain.tld Expression régulière Les expression régulières peuvent être utilisée pour extraire n importe quel type de contenu. Ceci dit, pour rechercher une chaîne simple ou un nombre, il est plus efficace d utiliser l ACL appropriée. La comparaison est case-sensitive par défaut. Il est possible de la rendre case-insensitive en ajoutant le paramètre "-i" devant l expression régulière. Si une regexp contient un espace, alors il doit être précédé du caractère antislash ( \ ). Par exemple : vérifier si l en-tête HTTP Host ressemble à "*.domain.tld" : acl host_domain.tld hdr_reg(host).*domain\.tld$ Adresses IPv4 and IPv6 ALOHA 5.0 et précédent peuvent rechercher uniquement des adresses IPv4. ALOHA 5.5 et supérieur peuvent rechercher des IPv4 et IPv6. Les adresses IPs peuvent être comparées soit à une adresse de unique, soit dans un sous-réseau en notation CIDR. Le résultat de la recherche est positif si l adresse IP est trouvée ou si elle appartient à un sous-réseau. Par exemple : vérifier si l adresse IP du client appartient à un sous-réseau : acl users_subnet src 10.0.0.0/24 L acl retourne vrai si l IP du client appartient au sous réseau passé en argument. Page 6 sur 10

Exemple d utilisation du Content switching Séparation statique / dynamique Quand une application est hébergée sur un nom de host unique, la seule manière de séparer les flux statiques et dynamiques est d utiliser les information contenus dans le chemin d URL de la requête ou l extension du fichier. Schéma Le schéma ci-dessous illustre ce cas. L ALOHA Load-Balancer reçoit tout le trafic puis le renvois vers chacune des fermes. Veuillez noter qu un serveur unique peut être utilisé pour délivrer à la fois le contenu statique et dynamique. La segmentation du trafic permet de gérer chaque ferme individuellement avec différents paramètres chacune : health checks, régulation de trafic, persistance... Page 7 sur 10

Configuration Frontend Tout le trafic pour ce site-web arrice sur ce frontend. HAProxy prend la décision de routage en fonction des informations fournies par le protocole HTTP (niveau 7) : frontend ft_websites bind 0.0.0.0:80 log global option httplog # detect static content by file extension or URL path acl static path_end.gif.jpg.jpeg.png acl static path_end css js acl static path_beg /images/ /users/ acl static path_dir static use_backend bk_static if static # default route default_backend bk_dynamic Backend # static farm configuration backend bk_static balance roundrobin option forwardfor # dedicated health check for static content option httpchk HEAD /images/pixel.png default-server inter 3s rise 2 fall 3 slowstart 0 server srv1 192.168.10.11:80 weight 10 maxconn 1000 check server srv2 192.168.10.12:80 weight 10 maxconn 1000 check # dynamic farm configuration backend bk_dynamic balance roundrobin cookie SERVERID2 insert indirect nocache option forwardfor # dedicated health check for dynamic content option httpchk GET /check.php http-check expect string OK default-server inter 3s rise 2 fall 3 slowstart 0 server srv1 192.168.10.11:8080 cookie s1 weight 10 maxconn 100 check server srv2 192.168.10.12:8080 cookie s2 weight 10 maxconn 100 check Page 8 sur 10

Virtual Hosting L hébergement virtuel basé sur le nom de domaine du site web est une technique utilisée lorsque l on possède peu d adresse IP publique et que l on doit héberger un grand nombre d application. Dans ce genre de configuration, l ALOHA load-balancer est utilisé en mode reverse-proxy. Schéma Dans l exemple ci-dessous, il y a 2 noms de domaines pointant sur l adresse IP publique de l ALOHA. En fonction du nom de domaine, l ALOHA Load-Balancer décide de la ferme à utiliser. Configuration Frontend Le trafic pour tous les sites web arrivent sur ce frontend. HAProxy prend la décision de routage en fonction des informations fournie par le protocole HTTP (niveau 7) frontend ft_websites bind 0.0.0.0:80 log global option httplog # Capturing Host header in logs is important for # troubleshooting to know whether rules matches or not capture request header host len 64 # site1 routing rules based on Host header acl site1 hdr_end(host) site1.com site1.eu use_backend bk_site1 if site1 # site2 routing rules based on Host header acl site2 hdr_reg(host) site2\.(com ie)$ use_backend bk_site2 if site2 # default route default_backend bk_default Backend Chaque virtual host possède son propre backend avec sa propre configuration. # site1 backend configuration backend bk_site1 balance roundrobin Page 9 sur 10

cookie SERVERID1 insert indirect nocache option forwardfor # dedicated health check for site1 option httpchk HEAD /check.php HTTP/1.1\r\nHost:\ www.site1.com default-server inter 3s rise 2 fall 3 slowstart 0 server srv1 192.168.10.11:80 cookie s1 weight 10 maxconn 1000 check server srv2 192.168.10.12:80 cookie s2 weight 10 maxconn 1000 check # site2 backend configuration backend bk_site2 balance roundrobin cookie SERVERID2 insert indirect nocache option forwardfor # dedicated health check for site2 option httpchk HEAD /check.jsp HTTP/1.1\r\nHost:\ www.site2.com default-server inter 3s rise 2 fall 3 slowstart 0 server srv1 192.168.10.13:80 cookie s1 weight 10 maxconn 1000 check server srv2 192.168.10.14:80 cookie s2 weight 10 maxconn 1000 check Toutes les requêtes qui ne correspondent à aucun noms de domaines connus sont routées vers ce backend : backend bk_default balance roundrobin option forwardfor option httpchk HEAD / default-server inter 3s rise 2 fall 3 slowstart 0 server srv1 192.168.10.8:80 weight 10 maxconn 1000 check server srv2 192.168.10.9:80 weight 10 maxconn 1000 check Page 10 sur 10