haproxy
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
haproxy [2023/03/02 20:25] – [Mise en place] admin | haproxy [2025/02/12 11:48] (Version actuelle) – [Sécurisation SSL] administrateur | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Pour assurer une performance supplémentaire, | Pour assurer une performance supplémentaire, | ||
+ | |||
+ | __**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**, | ||
+ | * le ** répartiteur**< | ||
+ | * le **répartiteur** peut <wrap em> | ||
===== Mise en place ===== | ===== Mise en place ===== | ||
Ligne 25: | Ligne 32: | ||
La configuration complète du fichier est décrite ici [[https:// | La configuration complète du fichier est décrite ici [[https:// | ||
- | Le fichier de configuration est **// / | + | Le fichier de configuration est **// / |
<code apache> | <code apache> | ||
frontend < | frontend < | ||
Ligne 34: | Ligne 41: | ||
balance < | balance < | ||
server < | server < | ||
- | server < | + | server < |
</ | </ | ||
- | * bind : définit la façon dont le serveur est joignable par les utilisateurs | + | * <wrap em>bind</ |
- | * defautlt_backend : renvoi vers la section suivante | + | * <wrap em>defautlt_backend</ |
- | * balance : mode de répartition entre les serveurs Web | + | * <wrap em>balance</ |
- | * server : décrit chaque serveur Web | + | * <wrap em>server</ |
- | __**Exemple**__ | + | <WRAP center round info 100%> |
+ | === Exemple | ||
<code apache> | <code apache> | ||
frontend proxypublic | frontend proxypublic | ||
Ligne 53: | Ligne 61: | ||
server web2 192.168.100.215: | server web2 192.168.100.215: | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Vérification de la configuration ==== | ||
+ | <code lscript> | ||
+ | * -c pour vérifier (check) le fichier | ||
+ | * -f pour spécifier le fichier de configuration | ||
===== Options avancées ===== | ===== Options avancées ===== | ||
Le fonctionnement de base, sur l' | Le fonctionnement de base, sur l' | ||
- | - en assurant un **// | + | - en assurant un **// |
- | - en vérifiant la disponibilité d'un serveur Web avant de lui adresser des demandes avec l' | + | - en vérifiant la disponibilité d'un serveur Web avant de lui adresser des demandes avec l' |
- | - 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</ |
==== Affectation d'un poids ==== | ==== Affectation d'un poids ==== | ||
+ | <WRAP center round info 100%> | ||
<code lscript> | <code lscript> | ||
server web1 10.22.100.212: | server web1 10.22.100.212: | ||
Ligne 66: | Ligne 82: | ||
</ | </ | ||
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 | ||
+ | </ | ||
+ | |||
==== Vérification de la disponibilité ==== | ==== Vérification de la disponibilité ==== | ||
+ | <WRAP center round info 100%> | ||
<code lscript> | <code lscript> | ||
server web2 10.22.100.212: | server web2 10.22.100.212: | ||
Chaque serveur sera vérifié avant de lui adresser une requête. | Chaque serveur sera vérifié avant de lui adresser une requête. | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Limitation du nombre d' | ||
+ | <WRAP center round info 100%> | ||
+ | <code lscript> | ||
+ | server web2 10.22.100.212: | ||
+ | Chaque serveur sera limité à 20 utilisateurs simultanément | ||
+ | </ | ||
+ | |||
==== 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</ |
- | * leastconn: le serveur sélectionné sera celui ayant précédemment reçu le moins de connexions ; | + | * <wrap em>leastconn</ |
- | * source : le serveur est sélectionné en fonction de l’IP source du client ; | + | * <wrap em>source</ |
- | * uri : le choix du serveur est fonction du début de l’URI demandée ; | + | * <wrap em>uri</ |
- | * url_param : le choix du serveur est fonction de paramètres présents dans l’URL demandée ; | + | * <wrap em>url_param</ |
- | * hdr : le choix du serveur est fonction d’un champ présent dans l’en-tête HTTP (Host, User-Agent, ...). | + | * <wrap em>hdr</ |
+ | |||
+ | ===== 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 < | ||
+ | mode tcp | ||
+ | bind < | ||
+ | default_backend < | ||
+ | |||
+ | backend < | ||
+ | balance < | ||
+ | mode tcp | ||
+ | server < | ||
+ | server < | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 100%> | ||
+ | === Exemple === | ||
+ | <code apache> | ||
+ | frontend proxypublic | ||
+ | mode tcp | ||
+ | bind 10.22.30.210: | ||
+ | default_backend fermeweb | ||
+ | |||
+ | backend fermeweb | ||
+ | mode tcp | ||
+ | balance roundrobin | ||
+ | server web1 192.168.100.212: | ||
+ | server web2 192.168.100.215: | ||
+ | </ | ||
+ | </ | ||
+ | |||
haproxy.1677788709.txt.gz · Dernière modification : de admin