Configuration HAPROXY Lod Balancing

Résolu/Fermé
0_d - 16 nov. 2010 à 17:46
evilcairn Messages postés 414 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 25 juillet 2017 - 21 nov. 2010 à 23:02
Bonjour,
(j'aime bien CCM il dit bonjour a ma place lorsque je veux poster ^^ )

Bref, Étant stagiaire en informatique afin de validé mon bac+2 en info, mon entreprise d'accueil m'a proposé un "projet" qui consiste a monter un serveur HaProxy pour lod balancer plusieur serveur Web.
Bon je vous passe l'etape installation etc etc, apres m'etre pris la tete sur le fichier conf, voici ce que j'ai obtenu de "fonctionnel"
global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #debug
        #quiet
        user haproxy
        group haproxy

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


listen SRVHAPROX 172.16.1.5:80
       mode http
       stats enable
       stats auth user:password
       balance roundrobin
       option httpclose
       option forwardfor
       server SRVWEB1 172.16.4.194:80 cookie A check
       server SRVWEB2 172.16.4.196:80 cookie B check

Après avoir galéré avec quelque erreur par ci par la j'ai aussi vu que l'ont pouvais faire un fichier conf avec du frontend/backend a la place de listen, je vous montre le modèle au cas ou ... le début reste le même, mais la fin change légèrement.
frontend public
	bind 			        172.16.1.5:80
	default_backend 	web

backend web
        ("options a mettre ici.......")
	server SRVWEB1 172.16.4.196:80 cookie A check
	server SRVWEB2 172.16.4.194:80 cookie B check

Donc maintenant ma prochain étape est de réussir a lod balanced plusieurs serveur web diffèrent =)
en me promenant sur le web j'ai entendu parler ( en anglais donc un peu laborieux ) d'ACL a mettre dans le Frontend afin de laisser le choix entre plusieurs backend, bref une démo vaut plus que des mots...
Le débuts reste encore et toujours le même
frontend public
	bind 			172.16.1.5:80
	acl eco 		url_sub JAJA
	use_backend 		ecoweb if eco
	default_backend 	web

backend ecoweb
	server SRVWEB1 172.16.4.196:80 cookie A check
	server SRVWEB2 172.16.4.194:80 cookie B check

backend web
	server SRVWEB3 172.16.1.6:80 cookie A check
	server SRVWEB4 172.16.1.7:80 cookie B check


Donc la en gros j'integre une ACL nommée eco qui dit que si, dans l'url il y a le mot JAJA, nous iront utiliser le backend appelé ecoweb, sinon le default backend nommé web...

Malheureusement, dans le premier comme dans le deuxième cas, j'obtiens toujours les pages web de SRVWEB3/4.
Si quelqu'un a des infos sur ce qu'il manquerais a mon conf pour regler le probleme, merci de me le signaler...
En esperant avoir été assez claire et que vous pourrez m'aider.

5 réponses

il te manque l'option httpclose ou http-server-close dans ton frontend pour que haproxy analyse toutes les requêtes de la même session en keep-alive. Ajoute ça (tu l'as déjà dans le listen) et ça va marcher.
1
evilcairn Messages postés 414 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 25 juillet 2017 110
17 nov. 2010 à 06:16
Est ce que tu peux tester ça dans ton haproxy.cfg:



frontend public *:80
bind 172.16.1.5:80
option forwardfor
acl acl_eco url_sub JAJA
use_backend web_eco if acl_eco
default_backend web_normal

puis

section backend :

backend web_eco
mode http
balance roundrobin
server SRVWEB1 172.16.4.196:80 cookie A check
server SRVWEB2 172.16.4.194:80 cookie B check

backend web_normal
mode http
balance roundrobin
server SRVWEB3 172.16.1.6:80 cookie A check
server SRVWEB4 172.16.1.7:80 cookie B check


Je pense que tu peux laisser ton fichier de log en tail -f (mais faut le renseigner dans ta conf ) ou en verbose pour voir exactement qui fait quoi.

Sinon tu dois avoir une bonne charge d'utilisateurs pour faire de l'équilibrage :)
0
Merci de la réponse, je sens que ca avance =)
Malheureusement j'ai maintenant une autre erreur.

504 Gateway Time-out
The server didn't respond in time.

après quelque recherche sur le net j'obtiens ce nouveau fichier conf, sachant que j'ai obtenu des problème tant que je n'avais pas mis de default backend, le default est donc la pour faire jolie, et j'y ai juste renseigner l'adresse du serveur haproxy histoire d'y mettre quelque chose, j'espere que ca ne pause pas de probleme.

global  
        log 127.0.0.1   local0  
        log 127.0.0.1   local1 notice  
        #log loghost    local0 info  
        maxconn 4096  
        #debug  
        #quiet  
        user haproxy  
        group haproxy  

defaults  
        log     global  
  mode   http  
        option  httplog  
        option  dontlognull  
        retries 3  
        option  redispatch  
        maxconn 2000  
        contimeout      5000  
        clitimeout      50000  
        srvtimeout      50000  
    
frontend public  
 bind    172.16.1.5:80  
 option   httpclose  
 acl ecoacl   url_sub econeuf  
 acl webacl  url_sub web  
 use_backend   econeuf if ecoacl  
 use_backend  webapache if webacl  
 default_backend haproxy  

backend econeuf  
 balance roundrobin  
 server ECONEUF1 172.16.4.196:80 cookie A check  
 server ECONEUF2 172.16.4.194:80 cookie B check  

backend webapache  
 balance roundrobin  
 server SRVWEB1 172.16.1.6:80 cookie A check  
 server SRVWEB2 172.16.1.7:80 cookie B check  


backend haproxy  
 balance roundrobin 
 server HAPROXYA 172.16.1.5:80




Vous pouvez egalement me contacter sur mon adresse de messagerie en cas de besoin =)

Merci a tous
0
evilcairn Messages postés 414 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 25 juillet 2017 110
17 nov. 2010 à 22:26
J'avais oublié le début ... pff le boulet .

Faut pas oublier de configurer ton cookie aussi (si c'est pas déjà fait)

cookie SERVERID insert nocache indirect

La commande http_close étant inutile il me semble avec les cookies mais à vérifier.

A noter que pour tracer active les traces/stats ( un check en command ) et à la fin :


stats enable
stats uri /lb?stats
stats realm Haproxy\ Statistics
stats auth tonuser:tonpass


Ca te donnera déjà des petites infos sur les sites en HA et ça t'aidera un peu à voir.


Petite note de sécu/habitude je te conseille de changer les ports des sites webs cibles pour plusieurs raisons ( filtrage, expertise d'observation réseau ...)

bon courage

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je vous remercie de votre aide pour les détails technique ^^

Mais malheureusement ce que je cherchais a faire n'étais pas le script parfait, mais dans un premier temps un script fonctionnel ^^ et ensuite voir a l'optimiser !

J'ai réussi d'ailleurs hier après avoir essayer de multiple combinaison


Pour info ce qui clochait était au niveau des ACL ( surement non reconnu dans ma version de Ha proxy ) bref, la syntaxe est correct d'après le manuel d'HA mais elle ne fonctionne pas, j'ai donc opter pour un autre type d'acl, le hdr_reg et la tout fonctionne parfaitement ^^

Je vais donc m'en aller mettre tout cas en application. je "ferme" ce topic en mettant que j'ai eu la réponse a mon problème, et j'en ouvrirais un autre en cas de nécessité et d'info lors de l'optimisation de mon script.

Merci a tous de votre aide =)


ps : j'ai donc pour l'instant un script sur une base fonctionnel qui est

global
        user haproxy
        group haproxy

defaults
        retries 3
        
frontend public :80
	mode			http
	acl eco_acl		hdr_reg econeuf
	acl web_acl		hdr_reg web
	use_backend		econeuf if eco_acl
	use_backend		web if web_acl

backend econeuf
	mode 			http
	server 		ECONEUF1 172.16.4.196:80
	server 		ECONEUF2 172.16.4.194:80
	balance 		roundrobin

backend web
	mode 			http
	server 		SRVWEB1 172.16.1.6:80
	server 		SRVWEB2 172.16.1.7:80
	balance 		roundrobin


Je vais donc me mettre a y ajouter diverse option et paramètre pour qu'il fonctionne mieux mais il fallait pour ca trouver le moyen de le faire fonctionner d'abord ^^
0
evilcairn Messages postés 414 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 25 juillet 2017 110
21 nov. 2010 à 23:02
Juste un petit conseil de sécu/opti change le port web de tes serveurs comme je le disais plus haut .
Sinon bon courage la voie de la configuration est longue mais bonne :=)
0