Маршрутизация запросов

Budulianin nginx-forum на nginx.us
Вт Июл 28 18:42:48 UTC 2015


Всем привет.

Есть задача: каждого определённого пользователя всегда отправлять на
определённую ноду.
Пытаюсь решить её с помощью балансировки, через директиву upstream + hash.

Задаю каждому пользователю уникальный id, передаю его в запросе
и потом nginx делает из него hash и в соответствии с ним отправляет запрос
на определённую ноду.
Но не все запросы равномерно распределяются по нодам.
Например: у меня 5 нод, отправляю 4 запроса с одним id, они приходят на 1
ноду,
отправляю следующие 4 запроса c новым id, они приходят на 2 ноду,
отправляю следующие 4 запроса c новым id, они приходят на 3 ноду,
повторяю те же действия с новыми id, но на ноду 4 и 5 ничего не приходит,
запросы распределяются между 1, 2 и 3.

Подскажите пожалуйста:
Как происходит выбор ноды, когда upstream + hash?

Как решают подобные задачи? Может вообще по другому?
Если nginx вычислил hash от id и отправил на ноду n, то он всегда будет
отправлять с тем же id на ноду n?(если список нод не менялся)

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,260591,260591#msg-260591



Подробная информация о списке рассылки nginx-ru