« Load Balancer » : différence entre les versions
De Travail-Ivan 2
Page créée avec « = Load Balancer = == Introduction == Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA). Son rôle principal est de répartir la charge entre différents services actifs. === Niveaux de répartition === La répartition peut s'effectuer à différents niveaux du modèle OSI : * '''Niveau 4''' : Niveau TCP, répartition au niveau du port * '''Niveau 7''' : Répartition de charge applicative (principalement HTTP) == Types... » |
Aucun résumé des modifications |
||
| Ligne 2 : | Ligne 2 : | ||
== Introduction == | == Introduction == | ||
Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA) | Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA) qui permet de distribuer la charge entre plusieurs serveurs. | ||
=== | == Configuration HAProxy == | ||
== | === Structure de base du fichier de configuration === | ||
Le fichier de configuration HAProxy (<code>/etc/haproxy/haproxy.cfg</code>) est divisé en plusieurs sections : | |||
=== | ==== Frontend ==== | ||
<pre> | |||
frontend apache_front | |||
bind *:80 # Écoute sur toutes les interfaces sur le port 80 | |||
default_backend apache_backend_servers # Définit le backend par défaut | |||
option forwardfor # Active la transmission de l'IP client aux serveurs backend | |||
</pre> | |||
* | |||
'''Explications des commandes frontend :''' | |||
* ''' | * '''bind *:80''' : Définit l'interface et le port d'écoute. "*" signifie toutes les interfaces | ||
* ''' | * '''default_backend''' : Spécifie quel groupe de serveurs (backend) va recevoir le trafic | ||
* '''option forwardfor''' : Ajoute l'en-tête X-Forwarded-For pour préserver l'IP du client d'origine | |||
==== | ==== Backend ==== | ||
<pre> | <pre> | ||
backend apache_backend_servers | backend apache_backend_servers | ||
balance roundrobin | balance roundrobin # Algorithme de répartition de charge | ||
server backend01 192.168.10.11:80 check | server backend01 192.168.10.11:80 check # Définition du premier serveur | ||
server backend02 192.168.10.12:80 check | server backend02 192.168.10.12:80 check # Définition du deuxième serveur | ||
</pre> | </pre> | ||
'''Explications des commandes backend :''' | |||
* '''balance roundrobin''' : Distribue les requêtes de manière égale entre les serveurs | |||
* '''server [nom] [IP]:[port] check''' : | |||
** '''nom''' : Nom unique pour identifier le serveur | |||
** '''IP:port''' : Adresse IP et port du serveur backend | |||
** '''check''' : Active la vérification de santé du serveur | |||
==== Interface de statistiques ==== | ==== Interface de statistiques ==== | ||
<pre> | <pre> | ||
listen stats | listen stats | ||
bind 192.168.0.4:8181 | bind 192.168.0.4:8181 # Port d'écoute pour l'interface de stats | ||
stats enable | stats enable # Active les statistiques | ||
stats hide-version | stats hide-version # Masque la version de HAProxy | ||
stats refresh 30s | stats refresh 30s # Rafraîchit les stats toutes les 30 secondes | ||
stats show-node | stats show-node # Affiche le nom du nœud | ||
stats auth admin:admin@123 | stats auth admin:admin@123 # Définit les identifiants d'accès | ||
stats uri /stats | stats uri /stats # Définit l'URL d'accès aux stats | ||
</pre> | </pre> | ||
'''Explications des commandes stats :''' | |||
* '''bind''' : Définit l'adresse IP et le port pour accéder à l'interface de statistiques | |||
* '''stats enable''' : Active l'interface de statistiques | |||
* '''stats hide-version''' : Mesure de sécurité pour cacher la version de HAProxy | |||
* '''stats refresh''' : Définit l'intervalle de rafraîchissement automatique | |||
* '''stats auth''' : Configure l'authentification (format: utilisateur:mot_de_passe) | |||
* '''stats uri''' : Définit le chemin URL pour accéder aux statistiques | |||
== Configuration Nginx == | |||
=== | === Configuration du Load Balancer Nginx === | ||
<pre> | <pre> | ||
http { | http { | ||
upstream backend1 { | upstream backend1 { | ||
server 192.168.0.1; | server 192.168.0.1; # Premier serveur backend | ||
server 192.168.0.2; | server 192.168.0.2; # Deuxième serveur backend | ||
server 192.168.0.3; | server 192.168.0.3; # Troisième serveur backend | ||
} | } | ||
server { | server { | ||
listen 80; | listen 80; # Port d'écoute | ||
location / { | location / { | ||
proxy_pass http://backend1; | proxy_pass http://backend1; # Redirection vers le groupe de serveurs | ||
} | } | ||
} | } | ||
| Ligne 89 : | Ligne 77 : | ||
</pre> | </pre> | ||
'''Explications des commandes Nginx :''' | |||
* '''upstream''' : Définit un groupe de serveurs | |||
** '''server''' : Déclare chaque serveur backend du groupe | |||
* '''server { }''' : Bloc de configuration du serveur virtuel | |||
* '''listen''' : Définit le port d'écoute | |||
* '''location''' : Configure le traitement des URL | |||
* '''proxy_pass''' : Redirige les requêtes vers le groupe de serveurs upstream | |||
== Configuration des en-têtes HTTP == | |||
=== | === Apache avec module RemoteIP === | ||
<pre> | <pre> | ||
RemoteIPHeader X-Forwarded-For | RemoteIPHeader X-Forwarded-For | ||
| Ligne 104 : | Ligne 93 : | ||
</pre> | </pre> | ||
=== | '''Explications des commandes Apache :''' | ||
* | * '''RemoteIPHeader''' : Spécifie l'en-tête contenant l'IP client réelle | ||
* Utiliser une IP Virtuelle (IPVS) pour la bascule | * '''RemoteIPInternalProxy''' : Définit la plage d'adresses IP de confiance (load balancers) | ||
== Bonnes pratiques de configuration == | |||
=== Sécurité === | |||
* Toujours définir des timeouts appropriés | |||
* Limiter l'accès à l'interface de statistiques | |||
* Utiliser HTTPS pour le trafic sensible | |||
* Configurer des health checks pertinents | |||
=== Haute disponibilité === | |||
* Configurer la redondance du Load Balancer en mode Actif/Passif | |||
* Utiliser une IP Virtuelle (IPVS) pour la bascule transparente | |||
* Mettre en place une surveillance des ressources système | |||
=== Maintenance === | |||
* Documenter toutes les modifications de configuration | |||
* Tester les configurations avant mise en production avec <code>haproxy -c -f /etc/haproxy/haproxy.cfg</code> | |||
* Maintenir des sauvegardes des configurations fonctionnelles | |||
Dernière version du 7 novembre 2024 à 23:20
Load Balancer
Introduction
Un Load Balancer est un composant essentiel dans une architecture Haute Disponibilité (HA) qui permet de distribuer la charge entre plusieurs serveurs.
Configuration HAProxy
Structure de base du fichier de configuration
Le fichier de configuration HAProxy (/etc/haproxy/haproxy.cfg) est divisé en plusieurs sections :
Frontend
frontend apache_front
bind *:80 # Écoute sur toutes les interfaces sur le port 80
default_backend apache_backend_servers # Définit le backend par défaut
option forwardfor # Active la transmission de l'IP client aux serveurs backend
Explications des commandes frontend :
- bind *:80 : Définit l'interface et le port d'écoute. "*" signifie toutes les interfaces
- default_backend : Spécifie quel groupe de serveurs (backend) va recevoir le trafic
- option forwardfor : Ajoute l'en-tête X-Forwarded-For pour préserver l'IP du client d'origine
Backend
backend apache_backend_servers
balance roundrobin # Algorithme de répartition de charge
server backend01 192.168.10.11:80 check # Définition du premier serveur
server backend02 192.168.10.12:80 check # Définition du deuxième serveur
Explications des commandes backend :
- balance roundrobin : Distribue les requêtes de manière égale entre les serveurs
- server [nom] [IP]:[port] check :
- nom : Nom unique pour identifier le serveur
- IP:port : Adresse IP et port du serveur backend
- check : Active la vérification de santé du serveur
Interface de statistiques
listen stats
bind 192.168.0.4:8181 # Port d'écoute pour l'interface de stats
stats enable # Active les statistiques
stats hide-version # Masque la version de HAProxy
stats refresh 30s # Rafraîchit les stats toutes les 30 secondes
stats show-node # Affiche le nom du nœud
stats auth admin:admin@123 # Définit les identifiants d'accès
stats uri /stats # Définit l'URL d'accès aux stats
Explications des commandes stats :
- bind : Définit l'adresse IP et le port pour accéder à l'interface de statistiques
- stats enable : Active l'interface de statistiques
- stats hide-version : Mesure de sécurité pour cacher la version de HAProxy
- stats refresh : Définit l'intervalle de rafraîchissement automatique
- stats auth : Configure l'authentification (format: utilisateur:mot_de_passe)
- stats uri : Définit le chemin URL pour accéder aux statistiques
Configuration Nginx
Configuration du Load Balancer Nginx
http {
upstream backend1 {
server 192.168.0.1; # Premier serveur backend
server 192.168.0.2; # Deuxième serveur backend
server 192.168.0.3; # Troisième serveur backend
}
server {
listen 80; # Port d'écoute
location / {
proxy_pass http://backend1; # Redirection vers le groupe de serveurs
}
}
}
Explications des commandes Nginx :
- upstream : Définit un groupe de serveurs
- server : Déclare chaque serveur backend du groupe
- server { } : Bloc de configuration du serveur virtuel
- listen : Définit le port d'écoute
- location : Configure le traitement des URL
- proxy_pass : Redirige les requêtes vers le groupe de serveurs upstream
Configuration des en-têtes HTTP
Apache avec module RemoteIP
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.108.0.0/14
Explications des commandes Apache :
- RemoteIPHeader : Spécifie l'en-tête contenant l'IP client réelle
- RemoteIPInternalProxy : Définit la plage d'adresses IP de confiance (load balancers)
Bonnes pratiques de configuration
Sécurité
- Toujours définir des timeouts appropriés
- Limiter l'accès à l'interface de statistiques
- Utiliser HTTPS pour le trafic sensible
- Configurer des health checks pertinents
Haute disponibilité
- Configurer la redondance du Load Balancer en mode Actif/Passif
- Utiliser une IP Virtuelle (IPVS) pour la bascule transparente
- Mettre en place une surveillance des ressources système
Maintenance
- Documenter toutes les modifications de configuration
- Tester les configurations avant mise en production avec
haproxy -c -f /etc/haproxy/haproxy.cfg - Maintenir des sauvegardes des configurations fonctionnelles