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

Почему я получаю ошибки в моей конфигурации переключения содержимого HAProxy?

Я переношу некоторую инфраструктуру с нескольких серверов, на которых размещены определенные сайты, на архитектуру балансировки нагрузки, используя HAProxy 1.3.15.7 в OpenBSD 4.6 macppc. Естественно, я начинаю с настройки переключения контента для текущей настройки (определенные сайты на определенных серверах), и мой /etc/haproxy/haproxy.cfg выглядит следующим образом:

global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 1024
    chroot /var/haproxy
    uid 604
    gid 604
    daemon
    #debug
    #quiet
    pidfile /var/run/haproxy.pid

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    option  redispatch
    retries 3
    maxconn 2000
    contimeout      5000
    clitimeout      50000
    srvtimeout      50000
    stats enable
    stats auth user:pass

frontend http_proxy *:80
    # check to see which domain the reguest is for
    acl host_tld.domain.sub1 hdr_end(host) sub1.domain.tld
    acl host_tld.domain.sub2 hdr_end(host) sub2.domain.tld
    # send to the correct server
    use_backend server2 if host_tld.domain.sub1 or host_tld.domain.sub2
    default_backend server1

backend server1
    server httpd_server1 192.168.1.3:80

backend server2
    server httpd_server2 192.168.1.4:80

Цель состоит в том, чтобы все домены обслуживались server1 кроме доменов sub1.domain.tld & sub2.domain.tld который должен быть подан server2 вместо. Однако, когда я пытаюсь запустить HAProxy, я получаю следующие ошибки:

parsing /etc/haproxy/haproxy.cfg : backend 'server2' has no dispatch address and is not in transparent or balance mode.
parsing /etc/haproxy/haproxy.cfg : backend 'server1' has no dispatch address and is not in transparent or balance mode.
Errors found in configuration file, aborting.
Error reading configuration file : /etc/haproxy/haproxy.cfg

Я просмотрел примеры, перечисленные в документация HAProxy 1.3 и http://upstre.am/2008/01/09/using-haproxy-with-multiple-backends-aka-content-switching/, но не поймите, где я ошибся. Ни один из примеров не требует ни option transparent ни режим баланса. Также документация для dispatch Любопытно, что эта опция отсутствует в документации 1.3, но я сомневаюсь, что она в любом случае поможет мне при устранении неполадок.

Где я ошибся?

Вы забыли строку «баланс раундробина» (или эквивалент), так как вам нужен алгоритм балансировки в бэкэнде. Кроме того, вы выполняете переключение контента, поэтому добавьте «option httpclose» в свой интерфейс или раздел настроек по умолчанию, иначе вторые запросы на поддержание активности подключений не будут согласованы.