2 votes

Est-il possible d'utiliser HAProxy avec un emplacement de redirection roundrobin équilibré ?

J'essaie de mettre en place un HAProxy qui écoutera sur le port 80 et redirigera de manière circulaire tout le trafic vers deux serveurs, tout en assurant la santé. check .

Les serveurs ont des URL différentes, donc je ne peux pas utiliser la fonction server <name> <ip>:<port> check lignes que je veux que le navigateur du client lise https:///ssl1.blah.com o https://ssl2.blah.com

Voici mon haproxy.cfg :

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

listen webfarm *:80
       mode http
       stats enable
       stats auth admin:apassword
       balance roundrobin
       option forwardfor
       redirect location https://ssl1.blah.com/gohere
       redirect location https://ssl2.blah.com/gohere

Tout conseil serait très apprécié. C'est ma première aventure avec HAProxy ou tout autre logiciel NLB.

Merci

1voto

nerak99 Points 101

Je ne sais pas. pensez à vous pouvez équilibrer les redirections. Si le but de ce déploiement est de rediriger tout le trafic vers ces serveurs de http à https, vous voudrez écouter sur deux IP distinctes, et rediriger en conséquence. Cela signifie que l'utilisateur doit connaître les sous-domaines à l'avance.

Ce que vous essayez de faire ne me semble pas très bon. Un utilisateur va toucher votre URL frontale et être redirigé vers l'un des deux sous-domaines. S'il revient, il peut être redirigé vers l'autre sous-domaine. En tant qu'utilisateur, je trouverais cela extrêmement gênant.

L'objectif de l'équilibrage des charges est de masquer les détails de mise en œuvre du nombre et de la nature des serveurs dans le cluster, et de fournir un frontal uniforme.

Je suggérerais quelque chose du genre de ce qui suit :

Frontend: 10.80.11.1:80 # http://blah.com/
Backend 1: 10.80.11.5:443
Backend 2: 10.80.11.6:443

Dans chacun des backends, faites en sorte que leur page par défaut soit chargée à /gohere plutôt que d'essayer de demander à HA Proxy de réécrire l'URL. Maintenant, vous pouvez équilibrer la charge autant que vous voulez, en occultant les détails de l'utilisateur.

Si vous voulez VRAIMENT réaliser la réécriture des sous-domaines, vous pouvez tenter quelque chose comme ceci :

Frontend: 10.80.11.1:80 # http://blah.com
balance roundrobin
Backend: server 10.80.11.2:80
Backend: server 10.80.11.3:80

Frontend: 10.80.11.2:80 # http://ssl1.blah.com
redirect location https://ss1.blah.com

Frontend: 10.80.11.3:80 # http://ssl2.blah.com
redirect location https://ssl2.blah.com

Cependant, vous devrez installer HA Proxy sur les 3 hôtes (sauf si l'un des backends ci-dessus partage un hôte et possède plusieurs NIC).

Si vous utilisez Apache comme backend, vous pouvez réaliser des redirections https très très simplement et ne devez pas gérer cela avec HA Proxy.

0voto

MagicKat Points 5192

Je pense avoir compris ce que vous voulez, mais je ne suis pas sûr à 100%. Je pense que tu dois réécrire la strophe "listen" en deux strophes séparées "frontend" et "backend". De cette façon, tu devrais être en mesure d'ajouter une vérification aux backends mais toujours avoir ta redirection/URL-mangle en place.

Regardez certains des exemples de haproxy, "listen" est utilisé pour des ensembles de règles courts et complets, mais backend+frontend est utilisé pour des configurations plus compliquées.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X