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

Andrew Kopeyko kaa at ramtel.ru
Wed Apr 6 13:59:25 MSD 2005


On Wed, 6 Apr 2005, Igor Sysoev wrote:

> 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, то для этого

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

я не знаю open-source проектов с такой функцоинальностью.


-- 
Best regards,
Andrew Kopeyko <kaa at ramtel.ru>
CTO

   Rambler Telecom	http://www.ramtel.ru/
   phone :		+7 095 745-3619





More information about the nginx-ru mailing list