Я использую AWS Elastic Beanstalk с серверами EC2 за Elastic Load Balancer (ELB).
У меня включены «липкие сеансы» на ELB, потому что это единственный способ заставить пользовательские сеансы django работать правильно. Однако во время пикового трафика это вызывает проблемы, поскольку ELB больше не распределяет каждый входящий запрос равномерно. Обычно это перегружает 1 сервер, как мини-DDOS.
Что я хотел бы сделать, так это использовать пользовательские сеансы на стороне сервера, где информация об аутентификации пользователя хранится в моем кеше Redis. Я пытался установить SESSION_ENGINE
для множества вещей, таких как:
SESSION_ENGINE = 'redis_sessions.session'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
Затем, когда я отключаю липкие сеансы, я не могу войти в систему, потому что запросы в конечном итоге отправляются на разные серверы, где одни запросы аутентифицируются, а другие нет. Те, которые не являются, перенаправляют меня обратно на страницу входа.
Вот некоторые другие соответствующие настройки, которые у меня есть:
INSTALLED_APPS = (
...,
'django.contrib.sessions',
...,
)
MIDDLEWARE_CLASSES = (
...,
'djangosecure.middleware.SecurityMiddleware',
...,
'django.contrib.sessions.middleware.SessionMiddleware',
...,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
...,
)
Что я делаю не так? Большое спасибо.