it-swarm.com.de

HAProxy - URL basiertes Routing mit Load Balancing

Ich bin neu bei HAProxy und habe eine Frage zur HAProxy-Konfiguration, die mir hilft, eine wichtige Entscheidung für den richtigen Ansatz zu treffen. Dies wird mir sehr bei der Entscheidung für die Architektur helfen.

Ich habe 3 Apps. Sagen wir app1, app2, app3.

Jede App unterscheidet sich durch die folgenden URLs:

www.example.com/app1/123 -> app1
www.example.com/app2/123 -> app2
www.example.com/app3/123 -> app3

Ich plane, 2 Instanzen jeder App in 2 verschiedenen Regionen zu haben:

Region 1 - app1, app2, app3
Region 2 - app1, app2, app3

Ich sehe 2 Methoden, um dies zu konfigurieren, bin mir aber nicht sicher, welche hier die beste Vorgehensweise ist:

  • Methode 1: Lassen Sie HAProxy1 zuerst die Anforderungen anhand der URL-Muster unterscheiden. Anforderungen von HAProxy1 werden an einen anderen HAProxy-Server weitergeleitet, der einzelne Apps (in diesem Fall 3 HAProxy-Server) für den Lastenausgleich eingerichtet hat.

  • Methode 2: Haben Sie einen großartigen HAProxy-Server, der beides erledigt, wie in Methode 1 angegeben. Das heißt, Sie haben die Konfiguration, um die Anforderungen abhängig von der URL zu trennen und dann jede Anforderung wie eingerichtet durch einzelne Filter zu leiten für jede App zum Lastenausgleich.

Ich bin nicht sicher, ob Methode 2 in Haproxy unterstützt wird. Alle Ideen oder Vorschläge werden sehr geschätzt. Bitte machen Sie etwas Licht.

35
rohit369

Sie können Anforderungen basierend auf URL und Lastenausgleich auf einem einzelnen HAProxy-Server trennen. Ihre Konfiguration wird ungefähr so ​​aussehen:

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

Weitere Informationen finden Sie auf der Homepage .

55
Gooner