Seção Resolvers Haproxy + Amazon ELB

5

Atualmente, estou usando o Haproxy-1.6-dev2 na frente de um ELB da Amazon e estou com problemas de resolução de DNS. Estou trabalhando com a versão dev do haproxy por causa do novo recurso resolvers , mas não consegui fazer com que a Haproxy acionasse uma mudança na sua listagem de endereços IP internos para um servidor sem reiniciar o processo haproxy. A Amazon atualiza os IPs de seus ELBs e a Haproxy continua usando os endereços IP antigos sem atualizar. Um arquivo de configuração simplificado está abaixo.

global
    log 127.0.0.1   local0
    stats socket /var/run/haproxy.sock

defaults
    log global
    mode http
    option httpchk GET /
    option log-health-checks
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

resolvers dns
    nameserver public-0  xx.xx.xx.xx:53
    hold valid 1s

frontend http
    bind *:8000
    default_backend site-backend

backend site-backend
    balance leastconn
    server site sub.example.com:80 resolvers dns check inter 1000

Eu crio um registro temporário A no AWS Route53, e a verificação de integridade falha porque o registro A aponta para um local inválido.
Em seguida, atualizo o registro A para apontar para um local válido e a verificação de integridade continua a falhar. Um simples reinício de haproxy significa que as verificações de saúde começam a passar.

Eu também fiz ping no soquete de estatísticas para obter mais informações:

 nameserver public-0:
  sent: 153
  valid: 0
  update: 0
  cname: 0
  cname_error: 0
  any_err: 0
  nx: 0
  timeout: 0
  refused: 0
  other: 0
  invalid: 0
  too_big: 0
  outdated: 51

A documentação do haproxy não ofereceu muita ajuda sobre o que "desatualizado" pode significar.

    
por Madison May 09.07.2015 / 01:28

2 respostas

2

Parece ser um tempo limite padrão de 1 ms em vez de um tempo limite padrão de 1 s. A configuração timeout retry 1s deve resolver o problema para qualquer outra pessoa com esse problema no Haproxy-1.6-dev2. Eu imagino que isso será resolvido no lançamento oficial 1.6.

    
por 14.07.2015 / 17:57
1

Por favor, execute o HAProxy no modo de depuração (instrução 'debug' na seção global ou '-d' ao executar o haproxy deamon) e relate aqui a saída de stdout e stderr.

Nesse meio tempo, pegue um tcpdump do tráfego DNS da caixa e envie para o desenvolvedor que fez o trabalho DNS em HAProxy: [email protected].

Baptiste

    
por 11.07.2015 / 09:02