haproxy espera até que o dns resolva o backend

2

Eu tenho dois contêineres docker na mesma rede - web e proxy executando haproxy com backend

backend web
    server web web:80 check

Também init-addr está definido como last,libc,none , por isso não falhará se não for possível resolver web no início.

Se eu iniciar proxy primeiro, haproxy relatórios could not resolve address 'web', disabling server .

Então eu inicio web . Ele se torna acessível pelo nome de proxy , respondendo no ping e no telnet. Mas haproxy ainda trata web no final.

Espero que haproxy tente novamente o back-end web no intervalo padrão (a cada 2 segundos, conforme a documentação) e, como resiltado, tente resolver o DNS novamente em cada verificação.

Como posso configurar haproxy para esperar até que o dns resolva o nome do servidor de back-end e, em seguida, suba automaticamente esse back-end?

    
por Alexey 18.06.2017 / 03:20

1 resposta

1

Sua configuração atual torna o HAProxy capaz de resolver nomes de host somente na inicialização, conforme mencionado aqui . Como não é possível resolver web no início, o servidor em questão será desativado.
Para tornar o HAProxy do DNS resolvido após a inicialização, você precisa adicionar uma seção de resolvedores
. Exemplo:

resolvers mydns
   nameserver dns1 10.0.0.1:53
   nameserver dns2 10.0.0.2:53

backend web
   server web web:80 check init-addr last,libc,none resolvers mydns

Então, sempre que web se tornar resolvível, você terá algo assim nos logs:
Server web/web ('web') is UP/READY (resolves again).

    
por 19.07.2017 / 16:17

Tags