A diferença que entendo agora é que /check.txt faz na verdade retornar uma resposta 200, mas todas as solicitações para o aplicativo retornam um 500. O HAProxy vê os 500s voltando das solicitações com proxy e assume o servidor fora do pool, mas inicia sua própria verificação, recebe um 200 e coloca o servidor de volta no pool.
A solução seria fazer um dos seguintes:
- Configure o Apache, em vez do aplicativo, para que cada solicitação retorne uma resposta 500, até mesmo o arquivo estático
/check.txt
. - Altere
/check.txt
em um aplicativo Ruby que contenha lógica suficiente para escolher entre uma resposta 200 e uma 500, quando apropriado. - Defina o
inter
value como algo ridículo como 3600 Isto deve dar-lhe uma hora para fazer o seu teste ou (se o servidor caiu por conta própria) descobrir o problema e trazê-lo de volta. - Defina o valor
inter
para algo menor como 60, mas defina o valorrise
para algo maior como 60. Isso também lhe daria uma hora antes de o servidor ser adicionado novamente ao pool. (Note, estes dois são listados por último porque provavelmente são idéias muito ruins.)