
Ich migriere die Infrastruktur von mehreren Servern, auf denen bestimmte Websites gehostet werden, auf eine Lastenausgleichsarchitektur mitHAProxy1.3.15.7 auf OpenBSD 4.6 macppc. Natürlich beginne ich mit der Konfiguration der Inhaltsumschaltung für das aktuelle Setup (bestimmte Sites auf bestimmten Servern) und meine /etc/haproxy/haproxy.cfg sieht wie folgt aus:
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
Das Ziel ist, dass alle Domänen von bedient werden, server1
außer den Domänen sub1.domain.tld
& sub2.domain.tld
, die stattdessen von bereitgestellt werden sollen server2
. Wenn ich jedoch versuche, HAProxy zu starten, erhalte ich die folgenden Fehler:
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
Ich habe mir die Beispiele angesehen indie HAProxy 1.3 DokumentationUndhttp://upstre.am/2008/01/09/using-haproxy-with-multiple-backends-aka-content-switching/, aber ich sehe nicht, was ich falsch gemacht habe. Keines der Beispiele scheint option transparent
einen Balance-Modus oder einen solchen zu erfordern. Außerdem dispatch
fehlt die Dokumentation für die Option seltsamerweise in der 1.3-Dokumentation, aber ich bezweifle, dass sie mir bei der Fehlersuche helfen würde.
Was habe ich falsch gemacht?
Antwort1
Sie haben die Zeile „balance roundrobin“ (oder gleichwertig) vergessen, da Sie einen Ausgleichsalgorithmus in einem Backend benötigen. Außerdem führen Sie Content Switching durch, fügen Sie also bitte „option httpclose“ in Ihrem Frontend- oder Standardbereich hinzu, da andernfalls zweite Anfragen von Keep-Alive-Verbindungen nicht abgeglichen werden.