Centre de Ressources Informatiques Université Paul Verlaine - Metz Ile du Saulcy BP 80794 57012 Metz Cedex 1
Accès rapide
Avoir un compte
Messagerie
Wifi 
23 : 10 [CriNET] OUVERT Intervention switch sale123
4:3 wheezy (page systèmes verouillée)
22 : 11 [CriNET] INFO Intervention tickets de support
21 : 11 [CriNET] FERME Maintenance proxy Metz
S'abonner au flux RSS
Problème
Impossible de charger http://factuel.univ-lorraine.fr/feed/rss-breves.xml
Rechargez cette page
Tickets CRINet
2014102300OUVERT
Intervention switch sale123
2013112200INFO
Intervention tickets de support
2013112100INFO
coupure réseau
2013102300FERME
Maintenance proxy Metz

HAProxy


Citation de la doc
:
HAProxy est un relais TCP/HTTP offrant des facilités d'intégration en environnement hautement disponible.
En effet, il est capable :
  • d'effectuer un aiguillage statique défini par des cookies ;
  • d'effectuer une répartition de charge avec création de cookies pour assurer la persistence de session ;
  • de fournir une visibilité externe de son état de santé ;
  • de s'arrêter en douceur sans perte brutale de service ;
  • de modifier/ajouter/supprimer des en-têtes dans la requête et la réponse ;
  • d'interdire des requêtes qui vérifient certaines conditions ;
  • d'utiliser des serveurs de secours lorsque les serveurs principaux sont hors d'usage.
  • de maintenir des clients sur le bon serveur serveur d'application en fonction de cookies applicatifs.
  • fournir des rapports d'état en HTML à des utilisateurs authentifiés, à travers des URI de l'application interceptées.


Il requiert peu de ressources, et son architecture événementielle mono-processus lui permet facilement de gérer plusieurs milliers
de connexions simultanées sur plusieurs relais sans effondrer le système.


Réf :
Site : http://haproxy.1wt.eu/
HOWTO : http://www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch

Pré-requis :

On va configurer ici 2 serveurs en HA + Failover HAProxy/Apache.
On dispose de 2 machines (sous Etch): noeud1 (192.168.0.1) et noeud2 (192.168.0.2)
hébergeant chacune un serveur Web Apache.
HAProxy sera installé sur les 2 machines mais ne répondera que sur la VIP
192.168.0.3 correspondant à l'IP publique du site à load-balancer.
VIP devrait être gérée par Heartbeat afin d'assurer le failover d'HAProxy.

1. Installation HAProxy


Les commandes suivantes sont à reproduire à l'identique sur chacun des 2 noeuds.
aptitude install haproxy


- Configuration, /etc/haproxy/haproxy.cfg (en roundrobin sur les 2 noeuds):
global
        log 127.0.0.1   local0 info
        maxconn 4096
        #debug
        #quiet
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen webfarm 192.168.0.3:80
       mode http
       stats enable
       stats auth stats:motdepassestat
       balance roundrobin
       cookie JSESSIONID prefix
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP/1.0
       server noeud1 192.168.0.1:80 cookie noeud1 check
       server noeud2 192.168.0.2:80 cookie noeud2 check


- Pour lancer haproxy meme si la machine n'a pas la VIP :
/etc/sysctl.conf :
net.ipv4.ip_nonlocal_bind=1

# sysctl -p


- Gestion des logs (syslog) :
/etc/default/syslogd :
SYSLOGD="-r -m 0"

/etc/syslog.conf :
local0.*            /var/log/haproxy.log


- Activation au lancement :
/etc/default/haproxy :
# Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1
# Add extra flags here.
#EXTRAOPTS="-de -m 16"

2. Configuration des serveurs Web

- Pour avoir les logs d'accés des clients, remplacer partout le LogFormat :
/etc/apache2/apache2.conf :
#LogFormat "%h %l %u %t \"%r\" ‰>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" ‰>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

- Et les CustomLog pour éviter les logs d'accès de HAProxy :
/etc/apache2/sites-available/default :
SetEnvIf Request_URI "^/check\.txt$" dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog


- Pour le monitoring, mettre dans le DocumentRoot (ici /var/www) :
touch /var/www/check.txt


Remarque: Veuillez à mettre apache en écoute uniquement sur l'IP de chaque noeud et non sur toutes (comme par défaut) sinon haproxy ne pourra évidemment pas se lancer.

3. Test de fonctionnement


Pour tester manuellement, on peut ajouter la VIP sur le noeud1 :
ip addr add 192.168.0.3 dev eth0


Et lancer haproxy sur les 2 noeuds :
/etc/init.d/haproxy start


Le site tournant sur la VIP devrait être dispo en répartition entre les 2 noeuds. Si un des 2 noeuds s'arrête le service tourne toujours grâce à celui encore actif.

Il ne reste plus qu'à configurer la gestion de la VIP via Heartbeat pour gérer le failover entre les 2 machines, cf image Heartbeat ou image Heartbeat2