LINUX.ORG.RU

Присоединяюсь к вопросу, самому интересно. В прошлом проекте использовалась какая то железка, и она не умела ничего хитрее round robin + sticky session, а хотелось бы что то а) софтверное и б) умеющее нагрузку оценивать и сессии с ноды на ноду перекидывать.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

Да, вспомнил, когда то давно еще вроде вот эту штуку использовал http://www.apsis.ch/pound/

Но это было 5-6 лет назад и в каком она сейчас состоянии - х.з. Судя по википедии - еще живо и разрабатывается. Но что умеет х.з.

Nagwal ★★★★
()
Последнее исправление: Nagwal (всего исправлений: 1)
Ответ на: комментарий от Nagwal

ну у netflix есть ribbon, в принципе если наколхозить http проксю то он умеет кидать запросы на менее загруженную ноду, но блин странно это - рисовать прокси вручную.

Deleted
()
Ответ на: комментарий от TERRANZ

нюанс в том что для обоих этих вещей нужно

- автоматически получать список нод

- не кидать запрос на дохлые или загруженные ноды,

- при роутинге учитывать сессию (прилипающие сессии)

и еще куча нюансов

кроме того может потребоваться некоторая кастомизация

нджинкс что-то может но то со скриптами то еще с чудным извратом, а нагрузки пока не такие чтобы ради этого особо трахаться

Deleted
()
Ответ на: комментарий от cherry-pick

это что-то не то, там есть алгоритмы балансировщика (это у меня и так есть), и транспорты (это тоже), но ничего про то как это скрестить в сабж

upd.

Хотя нет, есть http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and... - но похоже что это слишком жирное решение

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

мне не нужен «быстрый прокси», мне нужна библиотека для java которая позволит его сделать, залезть к нему в недра и покрутить балансировку

Deleted
()
Ответ на: комментарий от Deleted

Что для nginx, что для haproxy можно навернуть плагин +/- heartbeat, который будет балансировать как тебе нужно.

На оф. форуме Netflix спросить же можно? Уверен, там тебе подскажут хотя бы как снимать статистику по нагрузке, а далее на odesk, с заказом плагина для nginx/haproxy.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

можно навернуть плагин +/- heartbeat, который будет балансировать как тебе нужно.

Проще и быстрее взять готовую либу для java и сложить 2 + 2

там тебе подскажут хотя бы как снимать статистику по нагрузке,

Зачем?

Deleted
()

Насколько я встречался с балансировками для Жаба нод, обычно используют 2 метода (как наиболее простые наверное)

Разбрасывать по IP либо по очереди.

Мне самому интересен вариант балансировки по нагрузке.

Мертвые ноды обычно отслеживаются самим балансировщиком по отклику и вычёркиваются из списка живых.

Изучал некоторое время назад, как в Жабе отслеживать нагрузку машины, то что у меня получалось - это некие попугаи, которые я не смог связать очевидным способом с реальной нагрузкой физической аппаратуры.

Serg_HIS
()
Ответ на: комментарий от Deleted

он что-то умет кроме как читать свои конфиги?
subwoofer

То есть ничего больше ты он него не добился? Степень рукожопости зашкаливает 8-О

anonymous
()
Ответ на: комментарий от Deleted

Проще и быстрее взять готовую либу для java и сложить 2 + 2

Ну - ну :) Сложишь - расскажи. И да - жаба - оно.

anonymous
()
Ответ на: комментарий от TERRANZ

Я по энжинксу не спец. Он реально перенаправляет на данные в кластере доступные по логину конкретного пользователя?

Serg_HIS
()
Ответ на: комментарий от Nagwal

сессии с ноды на ноду перекидывать

это могут только сами ноды друг на друга, если правильно настроить, ну и сервер позволяет если.

Serg_HIS
()
Ответ на: комментарий от Deleted

но похоже что это слишком жирное решение

Я боюсь, тут любое более-менее гибкое решение «жирным» будет. Если тебе легковесного хочется - велосипедь сам - я как-то год назад где-то велосипедил свой балансировщик на яве, за пару дней пилится простейшая реализация. Нагрузку на ноды(cpu/ram/io/сеть) можешь по SNMP узнавать - snmp-демоны и в онтопике и в оффтопике есть по дефолту.

cherry-pick
()
Ответ на: комментарий от cherry-pick

Самая дебильная реализация - Соответствие сессий нодам запиливаешь в Map<SessnionId, NodeID>, пилишь класс-«решатель» с методом routeRequest(HttpRequest), который опрашивает по SNMP ноды, вычисляет наименее загруженную, и роутит реквест соответственно. Опционально прикручиваешь таймер, который мертвые сессии удаляет.

Реализация топорная, но пишется за пару часов, дальше просто фичи новые добавляешь, если не быдлокодить, должно получиться.

cherry-pick
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.