Configuration d'un cluster LVS pour la répartition de charge en mode NAT

Vue d'ensemble des clusters en environnement d'entreprise

Un cluster est un groupe de serveurs qui fonctionnent comme une entité unique, offrant un point d'accès centralisé (adresse IP ou nom de domaine). Il permet d'augmenter les performances, la fiabilité et la disponibilité des applications web. LVS (Linux Virtual Server) est une solution open-source de répartition de charge intégrée au noyau Linux.

Architecturee des clusters de répartition de charge

Un cluster de répartition de charge typique comprend trois couches :

  • Équilibreur de charge (Director) : point d'entrée unique, il distribue les requêtes aux serveurs backend via une IP virtuelle (VIP).
  • Pool de serveurs : ensemble de serveurs réels (RIP) qui traitent les requêtes.
  • Stockage partagé : fournit un accès uniforme aux données pour tous les nœuds.

Modes de fonctionnement de LVS

LVS supporte trois modes :

  1. NAT (Network Address Translation) : l'équilibreur modifie les adresses IP source/destination. Les serveurs réels utilisent des IP privées et toutes les communications passent par le director. Simple à implémenter mais peut devenir un goulot d'étranglement.
  2. TUN (Tunneling IP) : les requêtes sont encapsulées et envoyées aux serveurs réels, qui répondent directement aux clients. Réduit la charge sur le director mais nécessite une connectivité IP publique pour les nœuds.
  3. DR (Direct Routing) : l'équilibreur modifie l'adresse MAC de destination. Les serveurs réels répondent directement aux clients. Haute performance mais nécessite que tous les nœuds soient sur le même réseau physique.

Algorithmes de répartition de charge

LVS propose plusieurs algorithmes :

  • Round Robin (rr) : distribution cyclique des requêtes.
  • Weighted Round Robin (wrr) : distribution pondérée selon les capacités des serveurs.
  • Least Connections (lc) : envoie les requêtes au serveur avec le moins de connexions actives.
  • Weighted Least Connections (wlc) : combine pondération et nombre de connexions.

Déploiement pratique en mode NAT

Environnement réseau

Exemple de configuraton :

  • Director : interface interne eth0 @IP 192.168.1.10, interface externe eth1 @IP 203.0.113.1
  • Serveurs web backend : 192.168.1.101, 192.168.1.102
  • Serveur de stockage NFS : 192.168.1.100
  • Client externe : 203.0.113.55

Configuration du stockage partagé (NFS)

# Sur le serveur NFS (192.168.1.100)
systemctl disable firewalld
setenforce 0
yum install nfs-utils rpcbind -y
mkdir -p /exports/web1 /exports/web2
chmod 777 /exports/web1 /exports/web2
echo "Contenu site A" > /exports/web1/index.html
echo "Contenu site B" > /exports/web2/index.html
echo "/exports/web1 192.168.1.0/24(rw,sync)" >> /etc/exports
echo "/exports/web2 192.168.1.0/24(rw,sync)" >> /etc/exports
systemctl enable --now rpcbind nfs-server
exportfs -rv

Configuration des serveurs backend

Sur chaque serveur (192.168.1.101, 192.168.1.102) :

# Désactiver le pare-feu et SELinux
systemctl disable firewalld
setenforce 0

# Installer Apache et NFS
yum install httpd nfs-utils -y
systemctl enable --now httpd
mount -t nfs 192.168.1.100:/exports/web1 /var/www/html  # Pour le premier serveur
# Ou : mount -t nfs 192.168.1.100:/exports/web2 /var/www/html  # Pour le second

# Configurer le montage automatique
echo "192.168.1.100:/exports/web1 /var/www/html nfs defaults,_netdev 0 0" >> /etc/fstab

Configuration du director LVS

# Activer le routage IP
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p

# Configurer SNAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 203.0.113.1

# Charger les modules LVS
modprobe ip_vs
for module in $(ls /lib/modules/$(uname -r)/kernel/net/netfilter/ipvs/); do
  modprobe ${module%.ko}
done

# Installer ipvsadm
yum install ipvsadm -y
systemctl enable ipvsadm

# Définir les règles de répartition
ipvsadm -A -t 203.0.113.1:80 -s wlc
ipvsadm -a -t 203.0.113.1:80 -r 192.168.1.101:80 -m -w 1
ipvsadm -a -t 203.0.113.1:80 -r 192.168.1.102:80 -m -w 1
ipvsadm-save > /etc/sysconfig/ipvsadm

Vérification

Depuis le client (203.0.113.55), accéder à http://203.0.113.1. Les requêtes seront alternées entre les serveurs backend selon l'algorithme configuré. Utiliser ipvsadm -ln pour vérifier les connexions actives.

Étiquettes: LVS load-balancing NAT ipvsadm Linux

Publié le 21 juillet à 05h33