Afficher la pageAnciennes révisionsLiens de retourAjouter au livre.Exporter en PDFExportation ODTImport Word DocumentHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== HA Proxy ====== ===== Principes ===== Pour assurer la continuité de service d'un serveur Web, il faut disposer d'au moins deux serveurs. Ceux-ci peuvent fonctionner en mode <wrap em>actif/passif</wrap> avec l'outil [[ha|Heartbeat]] où un seul serveur est actif à un instant donné, et l'autre prend le relais en cas de panne du premier. Pour assurer une performance supplémentaire, on peut aussi choisir un fonctionnement en mode <wrap em>actif/actif</wrap> avec l'outil HA Proxy. Dans cette configuration, les deux (ou plus) serveurs fonctionnent en simultané : on doit donc mettre en place un <wrap em>répartiteur de charge</wrap> qui va renvoyer les demandes vers les différents serveurs selon différents critères : chacun son tour (<wrap em>round robin</wrap>, en fonction de la puissance des machines, etc. __**Principe**__ * Plusieurs serveurs possèdent un service et des données identiques (par exemple une application Web) pour constituer un **cluster** * un **répartiteur** (**HA Proxy**) est connu des utilisateurs (par son IP). Il redirige les demandes vers l'un des serveurs du **cluster**, les prochains échanges se passent ensuite directement entre le client et le serveur désigné * le ** répartiteur**<wrap em> distribue la charge</wrap> entre les différents serveurs (par exemple chacun son tour, ou plus souvent vers un serveur plus performant) * le **répartiteur** peut <wrap em>détecter la panne</wrap> d'un des serveurs pour éviter de lui envoyer des demandes qui n'aboutiront pas (il assure alors une <wrap em>tolérance de panne</wrap>) ===== Mise en place ===== Pour installer HA Proxy : <code lscript>apt update apt install haproxy</code> Pour vérifier la version installée : <code lscript>haproxy -v</code> <WRAP center round important 80%> Juste après l'installation, le démon ne démarre pas car le fichier de configuration par défaut ne contient pas toutes les directives nécessaires. Il est nécessaire de procéder à une configuration minimale. </WRAP> ===== Configuration de base ===== HA Proxy fonctionne sur deux parties : * la partie au contact des utilisateurs : **Front end** * la partie au contact des serveurs Web : **Back end** La configuration complète du fichier est décrite ici [[https://cbonte.github.io/haproxy-dconv/2.6/configuration.html]]. Le fichier de configuration est **// /etc/haproxy/haproxy.cfg //**. Dans ses options de base, on <wrap em>ajoutera</wrap>: <code apache> frontend <nomF_E> bind <IP_publiqueHaProxy>:<port> default_backend <nomB_E> backend <nomB_E> balance <modeRepartition> server <nomServ1> <ip_serv1>:<port_serv1> server <nomServ2> <ip_serv2>:<port_serv2> </code> * <wrap em>bind</wrap> : définit la façon dont le serveur est joignable par les utilisateurs * <wrap em>defautlt_backend</wrap> : renvoi vers la section suivante * <wrap em>balance</wrap> : mode de répartition entre les serveurs Web * <wrap em>server</wrap> : décrit chaque serveur Web <WRAP center round info 100%> === Exemple === <code apache> frontend proxypublic bind 10.22.30.210:80 default_backend fermeweb backend fermeweb balance roundrobin server web1 192.168.100.212:80 server web2 192.168.100.215:80 </code> </WRAP> ==== Vérification de la configuration ==== <code lscript>haproxy -c -f /etc/haproxy/haproxy.cfg</code> * -c pour vérifier (check) le fichier * -f pour spécifier le fichier de configuration ===== Options avancées ===== Le fonctionnement de base, sur l'algorithme roundrobin (ou tourniquet : chacun son tour) peut être optimisé de plusieurs manières **cumulables**. - en assurant un **//poids//** différent selon les capacités et la puissance des serveurs avec l'option //**<wrap em>weight</wrap>**// - en vérifiant la disponibilité d'un serveur Web avant de lui adresser des demandes avec l'option **//<wrap em>check</wrap>//** - en utilisant un mode de répartition moins classique que le <wrap em>roundrobin</wrap> ==== Affectation d'un poids ==== <WRAP center round info 100%> <code lscript> server web1 10.22.100.212:80 weight 100 server web2 10.22.100.212:80 weight 50 </code> Le premier serveur recevra 2 fois plus de requêtes que le second </WRAP> ==== Vérification de la disponibilité ==== <WRAP center round info 100%> <code lscript>server web1 10.22.100.212:80 check server web2 10.22.100.212:80 check </code> Chaque serveur sera vérifié avant de lui adresser une requête. </WRAP> ==== Limitation du nombre d'utilisateurs instantanée ==== <WRAP center round info 100%> <code lscript>server web1 10.22.100.212:80 maxconn 20 server web2 10.22.100.212:80 maxconn 20 </code> Chaque serveur sera limité à 20 utilisateurs simultanément </WRAP> ==== Modes de répartition ==== les modes possibles : * <wrap em>roundrobin</wrap> : tourniquet passant circulairement vers chacune des serveurs * <wrap em>leastconn</wrap>: le serveur sélectionné sera celui ayant précédemment reçu le moins de connexions ; * <wrap em>source</wrap> : le serveur est sélectionné en fonction de l’IP source du client ; * <wrap em>uri</wrap> : le choix du serveur est fonction du début de l’URI demandée ; * <wrap em>url_param</wrap> : le choix du serveur est fonction de paramètres présents dans l’URL demandée ; * <wrap em>hdr</wrap> : le choix du serveur est fonction d’un champ présent dans l’en-tête HTTP (Host, User-Agent, ...). ===== Sécurisation SSL ===== Le fichier de configuration est **// haproxy.cfg //**. Dans ses options on devra mettre les ports en 443 et ajouter mode tcp : <code apache> frontend <nomF_E> mode tcp bind <IP_publiqueHaProxy>:443 default_backend <nomB_E> backend <nomB_E> balance <modeRepartition> mode tcp server <nomServ1> <ip_serv1>:443 server <nomServ2> <ip_serv2>:443 </code> <WRAP center round info 100%> === Exemple === <code apache> frontend proxypublic mode tcp bind 10.22.30.210:443 default_backend fermeweb backend fermeweb mode tcp balance roundrobin server web1 192.168.100.212:443 server web2 192.168.100.215:443 </code> </WRAP> haproxy.txt Dernière modification : 2025/02/12 11:48de administrateur