ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Балансировка.



Здравствуйте уважаемые специалисты.

Хочу затронуть вопрос о балансировки нагрузки на бэкэнды.
В данный момент nginx использует не сполне адекватный роундробин для раскидки запросов по бэкэндам. У меня есть предложение исправить эту ситуацию, и сделать разброс интелектуальным.

Сейчас мне известно два метода балансировки нагрузки по бэкэндам - mod_backhand и лайфджорналовский perlbal.

Ничто из них по большому счёту не является решением проблемы, оба опираются на heartbit.

У меня есть предложение модифицировать ngx_http_upstream и добавить в него два модификатора весов бэкэндов. Один по времени ответа бэкэнда, и один по, специально передаваемому бэкэндом, заголовку, вроде Load-Average: Как я вижу в ngx_http_upstream - можно вовремя получить эти величины и модифицировать временные веса бэкэндов (может один из них сервер из запасника, или там система пересобирается). Модифицировать временные веса, и использовать цисковский раундробин по имеющимся бэкэндам. при получении 500-что-нибудь отдельно зарезхать бэкэнд, тоже самое с таймаутами.

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

Стандартный алгоритм - цисковский раундробин при котором вес сервера равен время ответа минус константа , всё в минус первой.

--
Ivan B. Serezhkin




 




Copyright © Lexa Software, 1996-2009.