Обзор липких сессий
Липкие сессии (ещё называют сродством сессии) привязывают сессию пользователя к конкретному инстансу EC2 в твоём load balancer'е. Как только пользователь подключится, все его последующие запросы направляются на один и тот же инстанс на протяжении всей сессии.
Как это работает
Когда ты включаешь липкие сессии на Elastic Load Balancer (ELB):
- load balancer создаёт cookie сессии в браузере клиента
- все запросы с этим cookie маршрутизируются на один и тот же бэкенд-инстанс
- сессия сохраняется до истечения cookie или его удаления
Основные варианты использования
- Сохранение состояния сессии в памяти без распределённого кэша
- Приложения, которые хранят данные пользователя локально на инстансах
- Снижение сложности для легаси-приложений, не рассчитанных на распределённые сессии
Важные моменты
- Риск единой точки отказа: если привязанный инстанс упадёт, пользователь потеряет свою сессию
- Неравномерное распределение нагрузки: активные пользователи могут перегрузить свой назначенный инстанс
- Проблемы масштабируемости: сложно масштабировать горизонтально, когда сессии привязаны к инстансу
- Потеря сессии: нет автоматического переключения на другой инстанс
Лучший подход вместо этого
Вместо использования липких сессий рассмотри:
- Amazon ElastiCache (Redis/Memcached) для распределённого хранилища сессий
- Amazon DynamoDB для сохранения данных сессии
- RDS для централизованного управления сессиями
Такие подходы обеспечивают лучшую отказоустойчивость и позволяют по-настоящему масштабировать горизонтально без потери сессий.