Итак, моя конфигурация HAProxy похожа на эту.
listen webaustin 0.0.0.0:80
mode http
timeout connect 12000
timeout server 60000
timeout queue 120000
balance roundrobin
option httpchk GET /index.html
log global
option httplog
option dontlog-normal
server web1 10.10.10.101:80 maxconn 600 check fall 10
server web2 10.10.10.102:80 maxconn 600 check fall 10
server web3 10.10.10.103:80 maxconn 600 check fall 10
server web4 10.10.10.104:80 maxconn 600 check fall 10
Что очень хорошо работает для наших систем, четыре внутренних веб-сервера, один интерфейсный веб-сервер, время ожидания установлено в разумных пределах.
Моя проблема в том, что у меня есть один URL-адрес, для которого мне нужно гораздо больше времени ожидания. Это очень тяжелая задача, которая занимает много времени на сервере.
Есть ли способ изменить переменные тайм-аута для одного URL-адреса?
создать единый интерфейс для двух бэкэндов
frontend webserver
bind :80
option forwardfor
acl bk_slow url_dir /slow_uri/
use_backend slow-pool if bk_slow
default_backend default-pool
backend default-pool
balance ...
option httpchk ...
server ...
backend slow-pool
balance ...
option httpchk ...
server ...
timeout client 600s
timeout server 600s
Я думаю, что url_dir - лучший вариант для этого, но вы можете проверить path_sub / reg или url_sub / reg (http://code.google.com/p/haproxy-docs/wiki/MatchingLayer7)