я следую этот учебник (более или менее) в попытке использовать 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()
и не могу найти ничего плохого в моем синтаксисе ...
Оказывается, репозитории Ubuntu содержат довольно старую (1.4) версию HAProxy, и в этом примере используются некоторые директивы, которые были добавлены в 1.5.
После обновления до последней стабильной версии (1.6) эта конфигурация работает.