我正在将一些基础架构从托管特定站点的多个服务器迁移到在 OpenBSD 4.6 macppc 上使用HAProxy 1.3.15.7 的负载平衡架构。自然,我从为当前设置(特定服务器上的特定站点)配置内容切换开始,我的 /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 文档中奇怪地省略了该选项的文档,但我怀疑它对我的故障排除有帮助。
我哪里出错了?
您忘记了“平衡循环”(或等效)这一行,因为您需要在后端有一个平衡算法。另外,你正在做内容切换,所以请在你的前端或默认部分添加“选项 httpclose”,否则第二次保持连接请求将无法匹配。