lundi 28 février 2011

Installer un loadbalancer Linux (LVS)



Linux Virtual Server (LVS) est une solution qui permet de garantir la répartition de charge ainsi que le fail over des services (applications).

Dans cet article j'explique l'installation et le paramétrage de ce produit.

L'offre LVS comporte les outils :
  • ipvsadm (constitue le noyau)
  • piranha (comporte le service pulse et l'outil de supervision nany) 
  • piranha-gui (l'interface web d'administration)

Installer les packages nécessaires sur le routeur LVS

Environnement de test

LVS (RHEL5.4)            : eth0: 192.168.26.201

Serveur Réel 1 (RHEL5.4) : eth0: 192.168.26.211
Serveur Réel 2 (RHEL5.4) : eth0: 192.168.26.212
VIP                      : 192.168.26.200P

Passerelle               : 192.168.26.1


Topologie du lab



Installer et activer les composants LVS au boot à l'aide des commandes :


yum install ipvsadm piranha
/sbin/chkconfig --level 35 piranha-gui on
/sbin/chkconfig --level 35 pulse on

/sbin/chkconfig --level 35 httpd on
  

Si vous souhaitez surveiller la charge des serveurs réel, je vous conseil d'installer l'outil rup comme suit.


Sur le serveur LVS Lancer la commande :
yum install rusers


Puis au niveau des serveurs réels, installer l'outil ruser-server et activer le au boot
yum install rusers-server
/etc/init.d/rstatd start
/sbin/chkconfig --level 35 rstatd on


Une fois l'installation terminée passons à la configuration. Mais une petite explication s'impose.


Le LVS peut être configuré selon 3 modes
  • NAT : nécessaire quand les serveurs virtuels sont sur un réseau différent de celui de la VIP du LVS
  • DR (direct routing) : utilisé lorsque les serveurs et la VIP du LVS sont sur le même réseau
  • TUN (tunneling) : En cas de situation complexes (ex : les serveurs réels sont sur des réseaux différents)
Pour faire simple ce poste traite le mode DIRECT.


Le LVS effectue le load-balancing en s'appuyant sur la technique de l'ip forwarding. Ce qui nécessite l'activation d'un paramètre linux spécifique.



Activer l'option d'ip forwarding sur toutes les machines (réels et LVS) en utilisant les commandes :

/sbin/sysctl -w net.ipv4.ip_forward=1
sysctl -p


Créer une interface virtuelle sur le LVS
ifconfig eth0:1 192.168.26.200 netmask 255.255.255.255 broadcast
192.168.26.1 up



Désactiver la résolution arp au niveau de l'interface lo (loopback) sur l'ensemble des serveurs réels
echo /etc/rc.local >> ip link set lo arp off
ip addr add brd dev lo


Configurer la vip LVS au niveau de l'ensemble des machines réel
echo /etc/rc.local >> ip addr add brd dev lo
ip addr add brd dev lo


La désactivation de l'arp sur l'interface lo n'étant pas suffisante, il faut faire ce qui suit pour contourner le problème arp (il faut avoir au minimum un kernel 2.4.26 mini ou 2.6.4 mini)

/sbin/sysctl -w net.ipv4.conf.lo.arp_ignore=1
/sbin/sysctl -w net.ipv4.conf.lo.arp_announce=2
/sbin/sysctl -w net.ipv4.conf.all.arp_ignore=1
/sbin/sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -p


L'utiliser l'outil de configuration Piranha nécessite un mot de passe, celui-ci peut être défini à l'aide de la commande :
/usr/sbin/piranha-passw


une fois le mot de passe créé, il ne vous reste plus que à démarrer l'application piranha-gui.

/usr/sbin/service httpd start

/usr/sbin/service piranha-gui start


Configuration du Routeur LVS via la console Piranha


Se connecter la console piranha via l'url http://192.168.26.201:3636 en utilisant le compte et le mot de passe d'administration (piranha/passwd).

Au niveau de l'onglet global settings, renseigner le nom/ip publique du serveur principal, puis cliquez sur le bouton ACCEPT





Ajouter le(s) service(s) virtuel(s) à load-balancer au niveau de l'onglet VIRTUAL SERVERS








Les informations GET et SEND ne sont nécessaires que pour les ports utilisent un protocole http.

Pour les autres types de protocoles il faut faire appel à des scripts (cf. document de configuration LVS redhat pour plus de détail sur les scripts).










vue d’ensemble après la configuration




Supervision de la charge des serveurs réels avec rup


Editer le fichier /etc/sysconfig/ha/lvs.cf

Activer le load_monitor pour chaque service virtuel :
load_monitor = rup
scheduler = lblc

Sur les serveurs réels, activer le daemon rstatd :
chkconfig rstatd on
service rstatd start


Pour finir redémarrer le service pulse sur le LVS
service pulse restart

2 commentaires:

  1. il n'y aurait pas une erreur sur les commandes sur l'interface lo et le fichier rc.local?

    RépondreSupprimer