====== Repartition de charge basique avec ldirector ====== ===== Configuration du serveur de repartition de charge ===== Le serveur de repartition de charge reçoit les requetes via une adresse dite virtuelle, et s'occuppe ensuite de rediriger les requetes vers la ferme de serveurs. Il existe differents types d'algorythme de repartition (scheduler), le plus courant etant le Round Robin (répartition tournante). Une variante plus interessante etant le Weighted Round Robin qui permet de prioritiser les serveurs de la ferme n'ayant peu de charge. ==== Configuration de ldirector ==== Exemple d'un fichier de configuration de ldirector, l'adresse IP pour atteindre le serveur web est 10.156.249.111. Le serveur ldirectord redirige ensuite les requetes vers 192.168.1.1 et 192.168.1.2 qui sont les 2 serveurs web sur un reseau distinct (le repartiteur ayant bien sur une interface sur ce reseau). Une page de test disposée à la racine des serveurs web permet à ldirector de s'assurer que le service http répond correctement. checktimeout = 3 checkinterval = 1 autoreload = yes #logfile = /var/log/ldirectord.log quiescent = yes virtual=10.156.249.111:80 real=192.168.1.1:80 real=192.168.1.2:80 service=http request="test_ha.html" receive="Test Page" scheduler=rr persistent=600 protocol=tcp checktype=negociate checkport=80 On peut ensuite démarrer le service ldirectord: service ldirectord start ==== Verification avec ipvsadm ==== Et on peut verifier l'etablissement des règles de repartition grace à la commande ipvsadm (à installer si besoin, package ipvsadm): ipvsadm -L -n Ce qui donnerait pour notre exemple: [root] # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.156.249.111:80 rr persistent 600 -> 192.168.1.2:80 Route 1 0 0 -> 192.168.1.1:80 Route 1 0 0 ===== Configuration des serveurs ===== ==== Configuration réseau ==== Dans le cas d'un LVS avec une réponse direct sans re-passer par le repartiteur, les serveurs de la ferme recoivent les requetes avec comme IP de destination l'adresse virtuelle configurée sur le repartiteur. Il faut donc ajouter cette adresse à l'interface loopback des serveurs pour qu'ils repondent aux requetes. Fichier /etc/sysconfig/network-scripts/ifcfg-vip DEVICE=lo:0 IPADDR=10.156.249.111 NETMASK=255.255.255.255 ONBOOT=yes ==== Configuration du noyau ==== Pour eviter que le noyau Linux réponde au requetes ARP demandant qui possede l'adresse virtuelle il faut parametrer les options suivantes du noyau dans le fichier /etc/sysctl.conf net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 net.ipv4.conf.eth1.arp_ignore = 1 net.ipv4.conf.eth1.arp_announce = 2 net.ipv4.conf.eth0.arp_announce = 2 * arp_ignore = 1 Répondre aux requêtes ARP sur ethX, uniquement si l’adresse demandée est celle configurée sur cette interface, donc ignore les requêtes avec IP destination correspondant à la VIP * arp_announce = 2 Envois des requêtes ARP sur ethX, uniquement avec l’adresse source IP primaire de l’interface eth1, mais jamais avec la VIP comme adresse IP source.