Я изо всех сил пытаюсь найти решение для конкретного требования к балансировке нагрузки. Похоже, что различные комбинации HAProxy, Nginx, Varnish и Apache mod_proxy_balancer могут делать некоторые, но не все, что нам нужно. Мой вопрос заключается в том, может ли кто-нибудь предложить подходящую конфигурацию, которая могла бы (возможно, включая программное обеспечение, которое мы, возможно, не рассматривали, но это должно быть FOSS).
К сожалению, ключевое требование - липкие сессии. У нас есть большое и сложное приложение Tomcat, которое несколько злоупотребляет сеансом HTTP, и в нем используются структуры, которые делают то же самое. Преобразование в проект без сохранения состояния или репликацию сеанса исследовались и не учитывались. Кроме того, липкость ДОЛЖНА быть основана на файле cookie, а не на IP-хэше, поскольку у нас есть большие всплески от корпоративных клиентов, когда многие тысячи пользователей могут одновременно заходить на сайт с одного и того же IP-адреса.
Второе по важности требование - это динамический бэкэнд. Это приложение работает в облаке (не в AWS), и серверы приложений время от времени появляются и исчезают на основе автоматического или ручного масштабирования.
В-третьих, нам нужно иметь возможность помечать серверы как «неактивные», чтобы они продолжали выполнять существующие сеансы, но не передавали новые. Когда все текущие сеансы заканчиваются, сервер можно выключить или обновить / перезапустить.
Есть некоторые дополнительные сложности / требования, но они соответствуют трем указанным выше, которые, по-видимому, представляют наибольшие трудности.
Исходя из исследований, я думаю, что следующие утверждения верны:
Был бы очень признателен за любые указатели или идеи.
С HAProxy вы можете добавить весь спектр возможных внутренних серверов, а затем включать и выключать их (жестко или программно) с помощью страниц администратора / вызовов сокетов.
Как это не соответствует вашим требованиям?