Обнаружено, что наш балансировщик нагрузки Apache не переключался на горячее резервирование, когда приложение основного сервера отвечало с ошибкой 500.
Вот как у нас была настройка прокси
<Proxy balancer://hotspare>
BalancerMember ajp://node1:8463 loadfactor=100 retry=30
BalancerMember ajp://node2:8463 status=+H retry=0
BalancerMember ajp://node3:8463 status=+H retry=0
ProxySet lbmethod=bytraffic
</Proxy>
Это произошло только при выключении node1. Кто-нибудь может объяснить такое поведение?
Если вы хотите, чтобы он выполнял переключение в случае, если внутренний сервер возвращает код ошибки HTTP (например, 500), вы должны работать с "failonstatus
"вариант.
Ссылку можно найти здесь: https://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
failonstatus - один или список кодов состояния HTTP, разделенных запятыми. Если установлено, это приведет к тому, что работник перейдет в состояние ошибки, когда серверная часть вернет любой код состояния в списке. Восстановление работника происходит так же, как и другие ошибки рабочего. Доступно с Apache HTTP Server 2.2.17 и новее.
В противном случае переключение будет происходить только в том случае, если серверная часть вообще не отвечает (как вы уже упоминали).