我正在使用AWS Elastic Beanstalk和Elastic Load Balancer(ELB)后面的EC2服务器。
我启用了ELB上的“粘性会话”,因为这是我能够正确处理django用户会话的唯一方法。然而,在高峰期,这会导致问题,因为ELB不再平均分配每个传入请求。这通常会导致1台服务器过载,就像小型DDOS攻击一样。
我想要做的是使用服务器端用户会话,其中用户身份验证信息存储在我的Redis缓存中。我尝试将
我做错了什么?非常感谢。
我启用了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',
...,
)
我做错了什么?非常感谢。