Назад | Перейти на главную страницу

Специфический URI HAProxy

Итак, моя конфигурация 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)