HAProxy: inoltra a un altro server Web basato sull'URI


14

Ho una farm HTTP con la seguente configurazione:

listen webfarm 10.254.23.225:80
       mode http
       balance roundrobin
       cookie SERVERID insert
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP/1.0
       server webA 10.254.23.4:80 cookie A check
       server webB 10.248.23.128:80 cookie B check

Vorrei aggiungere alcune opzioni che inoltrerebbero tutte le richieste per un URI specifico (cioè / speciale) a un terzo server web. Come dovrei farlo?

Risposte:


23

Ecco un post sul blog che ho scritto sul bilanciamento del carico basato sulle intestazioni host:

http://www.mattbeckman.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/

Se desideri abbinare un URI o una directory, ti suggerisco di usare path_beg invece di hdr_end che viene utilizzato nell'esempio fornito in quella pagina. Di seguito è riportato un esempio di come è possibile farlo con la propria configurazione:

frontend http-in
    bind 10.254.23.225:80
    acl has_special_uri path_beg /special
    use_backend special_server if has_special_uri
    default_backend webfarm

backend webfarm
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webA 10.254.23.4:80 cookie webA check
    server webB 10.248.23.128:80 cookie webB check

backend special_server
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webC 10.0.0.1:80 cookie webC check

Spero possa aiutare!


Ehi, ho visto la tua risposta solo ora. In realtà l'ho già risolto utilizzando questa stessa soluzione. Grazie per la tua risposta!
— Saggi Malachi,

Questo link non è più attivo. Tuttavia, è ancora visibile qui: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
— jaggedsoft,

1
@NextLocal Grazie - ho aggiornato il link. Ho lasciato scadere il dominio precedente, ma era un alias del link aggiornato sopra.
— Matt Beckman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.