У меня есть балансировщик нагрузки, на котором запущен HAProxy с двумя внутренними серверами, на обоих запущен Nginx на Unicorn.
Если nginx выходит из строя на одном из этих ящиков, HAProxy снимает его с набора, и служба продолжает работать.
Если unicorn выходит из строя, nginx начинает обрабатывать 502 ошибки, и HAProxy с радостью перенаправляет их клиенту.
На мой взгляд, есть два возможных решения:
Ни то, ни другое я не могу понять, как это сделать
В Unicorn у вас должна быть страница "ping", которая отвечает "OK", если приложение запущено и работает нормально. Затем используйте эту страницу в качестве проверки работоспособности в haproxy с помощью http-check-expect.
Благодарим @ florin-asavoaie за то, что указали мне направление записи на этом. Вот полное описание:
У меня уже была страница json в / status, которая возвращала {"status": "up"}
Я добавил
option httpchk GET /status
http-check expect string up
На мой сервер в haproxy.cfg и перезапустил haproxy