Назад | Перейти на главную страницу

Балансировщик нагрузки Apache не переключился на горячее резервирование

Обнаружено, что наш балансировщик нагрузки 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 и новее.

В противном случае переключение будет происходить только в том случае, если серверная часть вообще не отвечает (как вы уже упоминали).