ПРОЕКТЫ 


  АРХИВ 


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]

Re: Load Balancing на основе вх одящих IP



Подобная функциональность есть в циске, CSS1150X серия, аппаратный балансировщик нагрузки с жутко умным и настроиваемым алгоритмом балансировки. А вообще это нужно для всяких ява маших, беавеблоджиков и т.п., которые хранят сессии, некоторые переменные и т.д. в оперативке. Правда цена этой циски.. ну около $10 000 у минимальной модели.

Igor Sysoev пишет:

On Wed, 6 Apr 2005, Roman Golomidov wrote:

Хочу поинтересоваться в каком виде можно сделать обработку обращения
конкретным процессом или скриптом всякий раз когда происходит
обращение.

Допустим есть 3 одинаковых скрипта, но каждый обрабатывает
определенный объем всех запросов. Разделять их можно условно: один
скрипт только IE, другой FireFox.
Или еще лучше по IP.
A.B.C.D
D mod 3 == 0 -> первый скрипт
D mod 3 == 1 -> второй скрипт
D mod 3 == 2 -> третий скрипт

Самое важное, чтобы все повторные запросы приходили в тот же скрипт
который их обрабатывал до этого.

По большому счету, это что-то типа session, заведомо неточное, но
простое и главное без кук и временных файлов. Для моих задач 100%
точность не нужна, важна скорость и минимум нагрузочной работы любого
вида.

В голове 3 возможных варианта как это можно сделать.
1. через rewrite посылать на конкретный FastCGI скрипт. Отрицательным
в этом решении является достаточная хлипкость и некрасивость
конструкции: отдельный процесс на каждый скрипт, разные их названия
(иначе FastCgi будет думать необходимость его запуска).
2. на уровне системы сразу же отдавать кокретному серверу запрос и он
уже дальше думает чего с ним делать. Я уверен что есть такая
возможность или какое то решение. Но найти не смог - только убогие
варианты с куками или с временными файлами.
3. На уровне DNS - т.е. выдавать IP сервера из списка адресов в
зависимости от запроса. Рабочее но не мобильное решение.

Прошу подсказать как это сделать и можно ли вообще. Идеально было бы
чтобы прямо nginx мог решить эту проблему в каком то виде.
Первоначальную логику можно было бы написать модулем, и уже по
необходимости передавалось бы fastcgi.


Не совсем понятно, как можно вообще сделать балансировку, привязывая сервера
к клиенту. И какой смысл привязывать, если не нужна 100% точность ?

Куки, на самом деле, правильное решение. Или сессии в УРЛе.

Что касается привязки обработки к серверу на основании ip, то для этого
можно использовать ngx_http_geo_module, но пока с его помощью нельзя
делать rewrite.



--
тел./факс: +7 (812) 323-23-23 (Санкт-Петербург)
тел./факс: +7 (095) 737-09-77 (Москва)

С уважением, Нарманов Рустам.





 




Copyright © Lexa Software, 1996-2009.