Sono nuovo di HAProxy e ho una domanda sulla configurazione HAProxy che mi aiuta a prendere una decisione chiave nell'approccio corretto. Questo mi aiuterà enormemente a decidere l'architettura.HAProxy - Routing basato su URL con bilanciamento del carico
Ho 3 app. Diciamo app1
, app2
, app3
.
Ogni applicazione si differenzia per gli URL come segue:
www.example.com/app1/123 -> app1
www.example.com/app2/123 -> app2
www.example.com/app3/123 -> app3
sto progettando di avere 2 istanze di ogni app in 2 diverse regioni:
Region 1 - app1, app2, app3
Region 2 - app1, app2, app3
vedo 2 metodi per configurare questo ma non sono sicuro quale sia la migliore pratica qui:
Metodo 1: HAProxy1 deve prima distinguere le richieste utilizzando i modelli di URL. Le richieste da HAProxy1 verranno indirizzate a un altro server HAProxy configurando singole app (3 server HAProxy in questo caso) per il bilanciamento del carico.
Metodo 2: Avere un unico grande server di HAProxy che fa la sia come indicato nel metodo 1. Cioè, avere la configurazione di segregare le richieste a seconda del URL e quindi far passare ogni richiesta attraverso il filtro individuo come impostato le cose per ogni app per il bilanciamento del carico.
Non sono sicuro che il metodo 2 sia supportato in haproxy. Qualsiasi idea o suggerimento è molto apprezzata. Per favore, metti un po 'di luce
Non dimenticare di bilanciare anche i bilanciatori di carico. Se il proxy fallisce, le tue app non saranno disponibili. Controllare keepalived, può fare questo lavoro per voi con una configurazione abbastanza semplice –
Ho una situazione tipica, molti account si collegano al mio servizio di bilanciamento del carico. Come posso limitare il numero totale di richieste mensili e giornaliere che provengono da un particolare account. Se ho impostato 200 come soglia giornaliera per un account, dire banca ABC, voglio eliminare tutte le richieste oltre tale 200, idealmente dovrei anche inviare un messaggio "quota sopra" al richiedente. Dovrei farlo al load balancer o questo dovrebbe essere preso in considerazione all'istanza dell'applicazione? –
Sembra che i backend differiscano in base al primo componente del percorso, "path_beg" potrebbe essere un test migliore di "path_end" in questo caso –