HAProxy - пересилання на інший веб-сервер на основі URI


14

У мене є ферма HTTP із такою конфігурацією:

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

Я хотів би додати певну опцію, яка б пересилала всі запити для певного URI (тобто / спеціального) на 3-й веб-сервер. Як мені це зробити?

Відповіді:


23

Ось повідомлення в блозі, яке я писав про балансування навантаження на основі заголовків хоста:

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

Якщо ви хочете збігатися з URI або каталогом, я б запропонував використовувати path_beg замість hdr_end, який використовується у прикладі, наведеному на цій сторінці. Нижче наведено приклад того, як ви можете це зробити зі своєю конфігурацією:

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

Сподіваюся, що це допомагає!


Гей, я бачив вашу відповідь тільки зараз. Я фактично вже вирішив це за допомогою цього самого рішення. Дякую за вашу відповідь!
Saggi Malachi

Це посилання вже не живе. Однак його все ще можна побачити тут: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
jaggedsoft

1
@NextLocal Спасибі - я оновив посилання. Я дозволив закінчити термін дії попереднього домену, але це було псевдонімом оновленого посилання вище.
Метт Бекман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.