
Я переношу часть инфраструктуры с нескольких серверов, на которых размещены определенные сайты, на архитектуру с балансировкой нагрузки, используяHAProxy1.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, но я сомневаюсь, что она поможет мне в устранении неполадок.
Где я ошибся?
решение1
Вы забыли строку "balance roundrobin" (или эквивалент), так как вам нужен алгоритм балансировки в бэкенде. Кроме того, вы делаете переключение контента, поэтому, пожалуйста, добавьте "option httpclose" в ваш фронтенд или раздел defaults, иначе вторые запросы keep-alive соединений не будут сопоставлены.