Load Balancer

De Travail-Ivan 2
Version datée du 7 novembre 2024 à 23:10 par Ivan (discussion | contributions) (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... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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 de Load Balancers

Load Balancer Matériel

Les load balancers peuvent se présenter sous forme d'équipements physiques dédiés.

Load Balancer Logiciel

Plusieurs solutions logicielles sont disponibles :

  • HAProxy : La référence en logiciel libre
  • Nginx : Spécialisé dans la partie HTTP
  • Traefik : Utilisé dans l'univers des conteneurs

HAProxy

Présentation

HAProxy (http://www.haproxy.org/) est devenu une référence parmi les load balancers.

Fonctionnalités principales

  • Load balancing Layer 4 (TCP) et Layer 7 (HTTP)
  • Réécriture d'URL
  • Limitation de débit
  • Terminaison SSL/TLS
  • Compression Gzip
  • Vérification de santé
  • Support HTTP/2
  • Support API

Installation et Configuration

  • Paquet : haproxy
  • Fichier de configuration : /etc/haproxy/haproxy.cfg

Exemple de configuration HAProxy

# Configuration du frontend
frontend apache_front
    bind *:80
    default_backend apache_backend_servers
    option forwardfor

# Configuration du backend
backend apache_backend_servers
    balance roundrobin
    server backend01 192.168.10.11:80 check
    server backend02 192.168.10.12:80 check

Interface de statistiques

listen stats
    bind 192.168.0.4:8181
    stats enable
    stats hide-version
    stats refresh 30s
    stats show-node
    stats auth admin:admin@123
    stats uri /stats

Nginx comme Load Balancer

Configuration

Fichier de configuration : /etc/nginx/nginx.conf

Exemple de configuration Nginx

http {
    upstream backend1 {
        server 192.168.0.1;
        server 192.168.0.2;
        server 192.168.0.3;
    }
    
    server {
        listen 80;
        location / {
            proxy_pass http://backend1;
        }
    }
}

Bonnes pratiques

Gestion des en-têtes HTTP

Pour garantir une traçabilité correcte des clients dans les logs :

Configuration HAProxy

Ajouter : option forwardfor

Configuration Apache

Configuration du module RemoteIP :

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.108.0.0/14

Éviter le SPOF

  • Mettre en place une redondance du Load Balancer (Actif/Passif)
  • Utiliser une IP Virtuelle (IPVS) pour la bascule automatique