É possível manter a fila enquanto reinicia o HAProxy

2

Estou usando o HAProxy para balancear a carga dos servidores de aplicativos. Cada servidor de aplicativos tem um limite máximo de conexões, quando esse limite é excedido, a fila é excedida. Quando isso acontecer, estarei adicionando outro servidor de aplicativos ao HAProxy e usando um "recarregamento normal" para reter as solicitações recebidas até que o serviço seja iniciado novamente. Minha pergunta é, quando for reiniciada, o que acontecerá com a fila existente - ela será mantida? Se não, como posso retê-lo? Obviamente, não quero que as solicitações HTTP sejam descartadas ao recarregar.

    
por Zach Russell 05.01.2016 / 21:44

1 resposta

3

A partir dos documentos oficiais: link

HAProxy supports a graceful and a hard stop. The hard stop is simple, when the SIGTERM signal is sent to the haproxy process, it immediately quits and all established connections are closed. The graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process. It consists in only unbinding from listening ports, but continue to process existing connections until they close. Once the last connection is closed, the process leaves.

The hard stop method is used for the "stop" or "restart" actions of the service management script. The graceful stop is used for the "reload" action which tries to seamlessly reload a new configuration in a new process.

Both of these signals may be sent by the new haproxy process itself during a reload or restart, so that they are sent at the latest possible moment and only if absolutely required. This is what is performed by the "-st" (hard) and "-sf" (graceful) options respectively.

Então, em particular:

It [the graceful stop] consists in only unbinding from listening ports, but continue to process existing connections until they close.

Ênfase: mas continuar a processar as conexões existentes

Você pode ver a queda da fila de back-end para 0, porque essas são as estatísticas da fila de back-end recém-formada do novo processo. O antigo, que foi preenchido ao máximo, não é mais mostrado como pertencia ao processo anterior. Mas está sendo processado, de acordo com este link, que também inclui um cenário de teste para verificar você mesmo:

link

    
por 06.01.2016 / 11:03

Tags