Outils pour utilisateurs

Outils du site


haproxy

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
haproxy [2024/03/27 08:05] usr2224haproxy [2025/02/12 11:48] (Version actuelle) – [Sécurisation SSL] administrateur
Ligne 4: Ligne 4:
  
 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.  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 ===== ===== Mise en place =====
Ligne 25: Ligne 32:
 La configuration complète du fichier est décrite ici [[https://cbonte.github.io/haproxy-dconv/2.6/configuration.html]]. 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 trouvera +Le fichier de configuration est **// /etc/haproxy/haproxy.cfg //**. Dans ses options de base, on <wrap em>ajoutera</wrap>
 <code apache> <code apache>
 frontend <nomF_E> frontend <nomF_E>
Ligne 37: Ligne 44:
 </code> </code>
  
-  * bind : définit la façon dont le serveur est joignable par les utilisateurs +  * <wrap em>bind</wrap> : définit la façon dont le serveur est joignable par les utilisateurs 
-  * defautlt_backend : renvoi vers la section suivante +  * <wrap em>defautlt_backend</wrap> : renvoi vers la section suivante 
-  * balance : mode de répartition entre les serveurs Web +  * <wrap em>balance</wrap> : mode de répartition entre les serveurs Web 
-  * server : décrit chaque serveur Web+  * <wrap em>server</wrap> : décrit chaque serveur Web
  
 +<WRAP center round info 100%>
 === Exemple === === Exemple ===
 <code apache> <code apache>
Ligne 53: Ligne 61:
   server web2 192.168.100.215:80    server web2 192.168.100.215:80 
 </code> </code>
 +</WRAP>
 +
  
 ==== Vérification de la configuration ==== ==== Vérification de la configuration ====
Ligne 61: Ligne 71:
 ===== Options avancées ===== ===== Options avancées =====
 Le fonctionnement de base, sur l'algorithme roundrobin (ou tourniquet : chacun son tour) peut être optimisé de plusieurs manières **cumulables**.  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 //**weight**// +  - 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 **//check//** +  - 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 roundrobin+  - en utilisant un mode de répartition moins classique que le <wrap em>roundrobin</wrap>
  
 ==== Affectation d'un poids ==== ==== Affectation d'un poids ====
 +<WRAP center round info 100%>
 <code lscript> <code lscript>
 server web1 10.22.100.212:80 weight 100  server web1 10.22.100.212:80 weight 100 
Ligne 71: Ligne 82:
 </code> </code>
 Le premier serveur recevra 2 fois plus de requêtes que le second Le premier serveur recevra 2 fois plus de requêtes que le second
 +</WRAP>
 +
  
 ==== Vérification de la disponibilité ==== ==== Vérification de la disponibilité ====
 +<WRAP center round info 100%>
 <code lscript>server web1 10.22.100.212:80 check  <code lscript>server web1 10.22.100.212:80 check 
 server web2 10.22.100.212:80 check </code> server web2 10.22.100.212:80 check </code>
 Chaque serveur sera vérifié avant de lui adresser une requête. Chaque serveur sera vérifié avant de lui adresser une requête.
 +</WRAP>
 +
  
  
 ==== Limitation du nombre d'utilisateurs instantanée ==== ==== Limitation du nombre d'utilisateurs instantanée ====
 +<WRAP center round info 100%>
 <code lscript>server web1 10.22.100.212:80 maxconn 20 <code lscript>server web1 10.22.100.212:80 maxconn 20
 server web2 10.22.100.212:80 maxconn 20 </code> server web2 10.22.100.212:80 maxconn 20 </code>
 Chaque serveur sera limité à 20 utilisateurs simultanément Chaque serveur sera limité à 20 utilisateurs simultanément
 +</WRAP>
 +
  
 ==== Modes de répartition ==== ==== Modes de répartition ====
 les modes possibles : les modes possibles :
-  * roundrobin : tourniquet passant circulairement vers chacune des serveurs +  * <wrap em>roundrobin</wrap> : tourniquet passant circulairement vers chacune des serveurs 
-  * leastconn: le serveur sélectionné sera celui ayant précédemment reçu le moins de connexions ; +  * <wrap em>leastconn</wrap>: le serveur sélectionné sera celui ayant précédemment reçu le moins de connexions ; 
-  * source : le serveur est sélectionné en fonction de l’IP source du client ; +  * <wrap em>source</wrap> : le serveur est sélectionné en fonction de l’IP source du client ; 
-  * uri : le choix du serveur est fonction du début de l’URI demandée ; +  * <wrap em>uri</wrap> : le choix du serveur est fonction du début de l’URI demandée ; 
-  * url_param : le choix du serveur est fonction de paramètres présents dans l’URL demandée ; +  * <wrap em>url_param</wrap> : le choix du serveur est fonction de paramètres présents dans l’URL demandée ; 
-  * hdr : le choix du serveur est fonction d’un champ présent dans l’en-tête HTTP (Host, User-Agent, ...).+  * <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.1711526751.txt.gz · Dernière modification : de usr2224