Por que estou recebendo erros na minha configuração de switching de conteúdo HAProxy?

2

Estou migrando algumas infraestruturas de vários servidores que hospedam sites específicos para uma arquitetura de balanceamento de carga usando HAProxy 1.3.15.7 no OpenBSD 4.6 macppc. Naturalmente, estou começando a configurar a troca de conteúdo para a configuração atual (sites específicos em servidores específicos) e meu /etc/haproxy/haproxy.cfg é o seguinte:

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

O objetivo é que todos os domínios sejam exibidos por server1 , exceto os domínios sub1.domain.tld & sub2.domain.tld , que deve ser distribuído por server2 . No entanto, quando tento iniciar o HAProxy, recebo os seguintes erros:

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

Eu olhei os exemplos listados em a documentação do HAProxy 1.3 e link , mas não vejo onde eu fui errado. Nenhum dos exemplos parece exigir option transparent nem um modo de equilíbrio. Além disso, a documentação para a opção dispatch é curiosamente omitida da documentação do 1.3, mas duvido que seja útil na minha solução de problemas.

Onde eu errei?

    
por morgant 19.01.2010 / 22:43

1 resposta

2

Você esqueceu a linha "balance roundrobin" (ou equivalente), já que você precisa ter um algoritmo de balanceamento em um backend. Além disso, você está fazendo a troca de conteúdo, por isso, adicione "option httpclose" em sua interface ou na seção de padrões, caso contrário, as segundas solicitações de conexões keep-alive não serão correspondidas.

    
por 20.01.2010 / 21:58