Выбор ответа Junior Масштабирование спрашивают часто обновлено
Сессии за балансировщиком
Вопрос
Приложение хранит сессии в памяти процесса. После добавления второго экземпляра за round-robin балансировщиком пользователей случайно разлогинивает. В чём причина и лучшее исправление?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Запрос попадает туда, где сессии нет: вынести сессии в Redis. Каждый экземпляр видит только свои сессии в памяти, а round robin отправляет запросы по очереди на разные узлы.
Варианты ответа
- Балансировщик теряет cookie, нужно сменить алгоритм на least connections
- Слишком короткий TTL сессии, его нужно увеличить до суток
- Запрос попадает туда, где сессии нет: вынести сессии в Redisправильный ответ
- Нужно включить HTTP/2, чтобы запросы шли по одному соединению
Разбор
Каждый экземпляр видит только свои сессии в памяти, а round robin отправляет запросы по очереди на разные узлы. Правильное решение: сделать сервис stateless, вынеся сессии в Redis или используя самодостаточные токены. Sticky sessions помогут частично, но при падении узла сессии всё равно пропадут. Least connections не решает проблему, TTL и HTTP/2 тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.