我正在跟进本教程(或多或少)尝试使用 haproxy 进行快速简便的 A/B 测试设置,但由于某些我无法识别的原因,haproxy 不喜欢我的配置文件。
配置文件:
global
log 127.0.0.1 local1 debug
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http
bind *:80
acl is_current-area_cookie req.cook(Current-Area) -m found
acl is_new-area_cookie req.cook(New-Area) -m found
## Other ACL's
use_backend current_area if is_current-area_cookie
use_backend new_area if is_new-area_cookie
use_backend weighted_area if !is_current-area_cookie !is_new-area_cookie
## Other Backend handling
backend current_area
server current_area 127.0.0.1:81
backend new_area
server new_area 127.0.0.1:82
backend weighted_area
server current_area 127.0.0.1:81 weight 70
server new_area 127.0.0.1:82 weight 30
错误如下:
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:27] : error detected while parsing ACL 'is_current-area_cookie'.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:28] : error detected while parsing ACL 'is_new-area_cookie'.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:31] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:32] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:34] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 063/165427 (31203) : Fatal errors found in configuration.
我已经阅读了 HAProxy 的所有文档,尤其是有关的内容req.cook()
,没有发现我的语法有任何错误......
答案1
事实证明,Ubuntu 的 repos 包含一个相当旧的(1.4)版本的 HAProxy,并且这个示例使用了在 1.5 中添加的一些指令。
升级到最新稳定版本(1.6)后,此配置有效。