Как настроить обратный прокси/балансировщик нагрузки для пользовательской маршрутизации

Предположим, у меня есть 3 веб-сервера за обратным прокси/балансировщиком нагрузки. В настоящее время я использую Apache 2, но не против переключения.

Эти веб-серверы не равны. У них разные наборы локальных данных, что означает, что разные типы запросов будут более эффективно обрабатываться на конкретном веб-сервере.

Я хочу подключить некоторую пользовательскую логику маршрутизации к моему балансировщику нагрузки, чтобы при запуске нового сеанса выбрать для него веб-сервер, а затем привязать этот сеанс к этому узлу, пока он не сломается (липкий сеанс).

Например: в веб-приложение заходит новый пользователь, балансировщик нагрузки каким-то образом запускает мой пользовательский код, этот код находит информацию об этом пользователе и делает вывод, что этот пользователь должен обрабатываться на узле1. Балансировщик проксирует этого пользователя на node1 и прикрепляет его к нему. Когда приходит другой пользователь, настраиваемая логика маршрутизации предлагает node3, на который балансировщик нагрузки затем проксирует этого пользователя.

Можно ли сделать с Apache 2? Если нет, то какой прокси/балансировщик нагрузки даст мне такую ​​возможность?

Спасибо.


person artemb    schedule 13.10.2010    source источник
comment
Вам лучше помогут в Server Fault. :)   -  person bzlm    schedule 13.10.2010
comment
@artemb, ты добился того, чего хотел?   -  person Georgii Ivankin    schedule 13.12.2012


Ответы (1)


Apache mode_proxy_balancer имеет липкость, если вы хотите остаться на apache.

В противном случае взгляните на Haproxy. Первая строка реферата гласит: «маршрутизировать HTTP-запросы в зависимости от статически назначенных файлов cookie;» Вам просто нужно установить файл cookie, чтобы знать, к какому серверу вы хотите привязать пользователя.

person hellvinz    schedule 13.10.2010
comment
Вопрос был о пользовательской маршрутизации (маршрутизация первого запроса к определенному узлу), а не о привязке (направление последующих запросов к тому же узлу, что и первый). - person Georgii Ivankin; 13.12.2012