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.