Балансировка нагрузки Nginx с помощью сессий

Балансировка нагрузки Nginx с помощью сессий

Я видел, что настройка балансировки нагрузки с помощью nginx — этодовольно легкои я хотел бы попробовать. Единственное, что меня беспокоит, это сессии: как я могу воспользоваться nginx для маршрутизации всех последующих вызовов от клиента на тот же сервер, чтобы добиться закрепления сессии?

Спасибо

решение1

используйте директиву ip_hash

решение2

В качестве альтернативы вы можете посмотретьМодуль Nginx Sticky

При работе с несколькими внутренними серверами иногда полезно, чтобы один клиент (браузер) всегда обслуживался одним и тем же внутренним сервером (например, для сохранения сеанса).

Использование сохранения по IP (с модулем ip_hash upstream) может быть не очень хорошей идеей, поскольку могут возникнуть ситуации, когда множество разных браузеров будут использовать один и тот же IP-адрес (через прокси-серверы), и система балансировки нагрузки будет несправедливой.

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

Если липкий модуль не может быть применен, он переключается обратно на классический Round Robin Upstream или возвращает «Bad Gateway» (в зависимости от флага no_fallback).

Модуль Sticky не может применяться, если браузер не поддерживает файлы cookie.

решение3

ip_hash — это правило балансировки нагрузки nginx для сеанса. Однако сервер nginx должен получить реальный IP. Если вы используете squid в качестве фронт-сервера, то сервер nginx получит IP squid. Далее nginx должен указать реальный сервер. Если после сервера nginx есть другие серверы балансировки нагрузки, сеанс не будет отправлен на тот же реальный сервер.

Связанный контент