Je suis nouveau sur HAProxy et j'ai une question sur la configuration de HAProxy qui m'aide à prendre une décision clé en adoptant la bonne approche. Cela m'aidera grandement à décider de l'architecture.
J'ai 3 applications. Disons app1
, app2
, app3
.
Chaque application est différenciée par les URL comme suit:
www.example.com/app1/123 -> app1
www.example.com/app2/123 -> app2
www.example.com/app3/123 -> app3
Je prévois d'avoir 2 instances de chaque application dans 2 régions différentes:
Region 1 - app1, app2, app3
Region 2 - app1, app2, app3
Je vois 2 méthodes pour configurer cela, mais je ne sais pas quelle est la meilleure pratique ici:
Méthode 1: Demandez à HAProxy1 de différencier d'abord les requêtes en utilisant les modèles d'URL. Les demandes de HAProxy1 seront acheminées vers un autre serveur HAProxy configuré des applications individuelles (3 serveurs HAProxy dans ce cas) pour l'équilibrage de charge.
Méthode 2: Avoir un excellent serveur HAProxy qui fait les deux comme indiqué dans la méthode 1. C'est-à-dire, avoir une configuration pour séparer les demandes en fonction de l'URL, puis passer chaque demande à travers un filtre individuel comme des choses configurées pour chaque application pour l'équilibrage de charge.
Je ne sais pas si la méthode 2 est prise en charge dans haproxy. Toutes les idées ou suggestions sont grandement appréciées. Veuillez mettre un peu de lumière.
Vous pouvez séparer les demandes en fonction de l'URL et de l'équilibre de charge avec un seul serveur HAProxy. Votre configuration aura quelque chose comme ceci:
frontend http
acl app1 path_end -i /app1/123 #matches path ending with "/app/123"
acl app2 path_end -i /app2/123
acl app3 path_end -i /app3/123
use_backend srvs_app1 if app1
use_backend srvs_app2 if app2
use_backend srvs_app3 if app3
backend srvs_app1 #backend that lists your servers. Use a balancing algorithm as per your need.
balance roundrobin
server Host1 REGION1_Host_FOR_APP1:PORT
server Host2 REGION2_Host_FOR_APP1:PORT
backend srvs_app2
balance roundrobin
server Host1 REGION1_Host_FOR_APP2:PORT
server Host2 REGION2_Host_FOR_APP2:PORT
backend srvs_app3
balance roundrobin
server Host1 REGION1_Host_FOR_APP3:PORT
server Host2 REGION2_Host_FOR_APP3:PORT
Plus d'informations peuvent être trouvées sur le page d'accueil .