Configuration HAPROXY Lod Balancing
Résolu
0_d
-
evilcairn Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
evilcairn Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
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"
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.
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
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.
(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.
A voir également:
- Configuration HAPROXY Lod Balancing
- Ethernet n'a pas de configuration ip valide - Guide
- Panneau de configuration - Guide
- Retablir configuration usine chromecast - Guide
- Connaitre configuration pc - Guide
- Configuration chromecast - Guide
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.
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 :)
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 :)
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.
Vous pouvez egalement me contacter sur mon adresse de messagerie en cas de besoin =)
Merci a tous
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
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
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
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
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 ^^
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 ^^