Eu não tenho certeza sobre o quão perfeitamente isso lida com um recarregamento, mas a opção de linha de comando para o haproxy é -sf
:
-sf Send FINISH signal to the pids in pidlist after startup. The processes which receive this signal will wait for all sessions to finish before exiting. This option must be specified last, followed by any number of PIDs. Technically speaking, SIGTTOU and SIGUSR1 are sent.
Isto é o que o argumento reload faz nos meus scripts de inicialização do Ubuntu:
haproxy_reload()
{
$HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \
|| return 2
return 0
}