Fonctionnement de KeepAlived avec HAProxy

Résolu/Fermé
Giksz Messages postés 141 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 1 mai 2019 - Modifié par Giksz le 30/07/2014 à 16:21
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 juil. 2014 à 16:28
Bonjour à tous,

Je suis étudiant en Licence ASR et actuellement en stage. J'ai comme projet une architecture n-Tier à mettre en place, c'est à dire load balancer, serveur Web, serveur d'applications et serveur de base de données. Je travail en labo pas en production.

Je bloque sur l'utilisation du logiciel KeepAlived. Tout le reste fonctionne bien.
Pour résumer KeepAlived me permet d'obtenir une seule adresse IP virtuelle via le protocole VRRP reliée sur 2 load balancer HAProxy correctement configuré.
Pour information HAProxy permet réduire la charge entres les serveurs web.

Mon but est d'obtenir une seule adresse IP (IP virtuelle) pour la connexion au service web/application en passant par HAProxy. C'est à dire un client entre une adresse IP dans son navigateur pour accéder à un service web. Cette Adresse IP est virtuelle et fait le lien entre les deux load balancer (totalement transparent pour le client) puis les load balancer font leur rôle et renvoient la requête vers une serveur web...etc

Malheureusement la configuration de KeepAlived m'échappe et je n'arrive pas à le faire fonctionner.

Ma configuration :
- OS : CentOS 5.10
- 2 load balancer HAProxy + KeepAlived (LB1 10.0.0.140 ; LB2 10.0.0.141 ; IPVirtuelle 10.0.0.142 )
- 2 serveurs web apache2 (Web1 10.0.0.120 ; Web2 10.0.0.121)
- 2 serveurs d'applications Tomcat8 (App1 10.0.0.130 ; App2 10.0.0.131)
- 2 serveur MySQL (BDD1 10.0.0.150 ; BDD2 10.0.0.151)

Fichier de configuration :

LB1 (/etc/haproxy/haproxy.cfg) :

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 5000
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon

defaults
log global
mode http
option httplog
option dontlognull
option redispatch
retries 3
maxconn 4000
contimeout 8000
clitimeout 80000
srvtimeout 80000

listen LOADBAL 10.0.0.140:80
mode http
cookie LOADBAL insert
balance roundrobin
option httpclose
option forwardfor
option httpchk HEAD /healthcheck.txt HTTP/1.0
server web1 10.0.0.120:80 cookie web1 check
server web2 10.0.0.121:80 cookie web2 check
capture response header Location len 40

listen stats :4997
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
stats auth admin:mot_de_passe


LB2 (/etc/haproxy/haproxy.cfg):

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 5000
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon

defaults
log global
mode http
option httplog
option dontlognull
option redispatch
retries 3
maxconn 4000
contimeout 8000
clitimeout 80000
srvtimeout 80000

listen LOADBAL 10.0.0.141:80
mode http
cookie LOADBAL insert
balance roundrobin
option httpclose
option forwardfor
option httpchk HEAD /healthcheck.txt HTTP/1.0
server web1 10.0.0.120:80 cookie web1 check
server web2 10.0.0.121:80 cookie web2 check
capture response header Location len 40

listen stats :4997
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
stats auth admin:mot_de_passe


KeepAlived sur LB1 (/etc/keepalived/keepalived.conf):


vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}

vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.0.0.142
}
track_script {
chk_haproxy
}
}


KeepAlived sur LB2 (/etc/keepalived/keepalived.conf):


vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}

vrrp_instance VI_1 {
interface eth0
state BACKUP
virtual_router_id 51
priority 100
virtual_ipaddress {
10.0.0.142
}
track_script {
chk_haproxy
}
}


J'aimerai votre aide sur la configuration de KeepAlived, les options, déclarations manquantes...

Pour information le ping sur l'adresse virtuelle 10.0.0.142 fonctionne.
L'option net.ipv4.ip_forward = 1 à été ajoutée dans /etc/sysctl.conf
L'installation de ipvsadm a été faite.

Merci de votre aide
A voir également:

1 réponse

Giksz Messages postés 141 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 1 mai 2019 60
30 juil. 2014 à 16:18
Finalement j'ai résolu mon problème. C'est la configuration de HAproxy qui était en cause. En effet dans le fichier de configuration de HAproxy /etc/haproxy/haproxy.cfg j'indiquais dans l'option listen LOADBAL 10.0.0.141:80 l'adresse IP d'écoute du LB c'est à dire lui même, or en indiquant l'adresse IP virtuelle comme écoute c'est à dire 10.0.0.142 , tout fonctionne à merveille.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
30 juil. 2014 à 16:28
Merci du retour ;-)
0