Como fazer o HAProxy aguardar uma verificação de integridade bem-sucedida antes de remover o servidor do modo de manutenção

2

Estou usando a comunicação de soquete HAProxy para colocar meu back-end no modo de manutenção antes de desativar o servidor web para manutenção por meio deste comando:

echo "disable server cluster-01/app-01-4" | sudo socat stdio /tmp/haproxy.sock

O problema é que quando eu marquei o backend disponível novamente via o comando socket enable, o HAProxy não espera por nenhuma verificação de saúde bem-sucedida antes de enviar solicitações para o backend. Então, acabamos perdendo algumas das solicitações antes que o HAProxy perceba que o servidor ainda está inoperante e o retira da linha.

Existe uma maneira de dizer ao HAProxy para esperar até que o backend esteja íntegro antes de ativá-lo? Ou eu tenho que tornar meus scripts de inicialização inteligentes o suficiente para monitorar o próprio servidor antes de dizer ao HaProxy para ativar o backend novamente? Isso obviamente seria menos que ideal.

Atualmente estou fazendo isso: echo "enable server cluster-01/app-01-4" | sudo socat stdio /tmp/haproxy.sock

Existe algo parecido com isso que eu possa usar? echo "enable server cluster-01/app-01-4 WAIT_FOR_SUCCESSFUL_HEALTH_CHECK" | sudo socat stdio /tmp/haproxy.sock

Edit: Estou usando o HAProxy versão 1.5x

    
por WickedElephant 03.03.2016 / 22:10

3 respostas

1

Usando set server proxy-name/server-name health down antes de colocar o servidor em serviço novamente, com enable server ... aparece para fazer o que você precisa.

O servidor acabaria sendo retirado de serviço por verificações de integridade subseqüentes, mas isso não ajudaria se o servidor estivesse saudável quando você o retirasse, mas não seria saudável quando você o trouxesse de volta, já que o HAProxy parece assumir que o servidor estará no mesmo estado de funcionamento quando ativado quando estava desativado.

    
por 05.03.2016 / 04:06
0

Você pode mover para o haproxy 1.6.3 e usar o novo agente-cheque funcionalidade . Isso também permite drenar os hosts à medida que você os tira da rotação.

    
por 04.03.2016 / 03:09
0

No Loadbalancer.org, fazemos isso de maneira um pouco complicada: -).

Antes de reiniciarmos o HAProxy, verificamos todos os estados atuais e verificamos se há servidores que estão DOWN ou MAINT.

Em seguida, bloqueamos os pacotes SYN (lida com o tráfego perdido no problema de recarregamento) Então nós reiniciámos o HAProxy

Em seguida, definimos manualmente todos os estados para DOWN ou MAINT (com base no que eles tinham 0,01 segundos atrás ...)

Então, reativamos os pacotes SYN ...

Fornecendo o resultado necessário de reinicializações contínuas sem tempo de inatividade ou pacotes perdidos.

Se você não pode ser incomodado com todos os acima, em seguida, basta definir tudo para o estado abaixo após uma recarga .. fazer isso rápido e cruzar os dedos: -).

v1.6 tem algum novo código de reinicialização de estado completo, mas ainda não o pesquisei.

    
por 04.03.2016 / 12:26