5

私はElastic Load Balancer(ELB)の背後にあるEC2サーバーでAWS Elastic Beanstalkを使用しています。AWS Load Balancerスティッキーを使用したDjangoユーザーセッションは無効にされました

ELBで「スティッキーセッション」が有効になっているのは、それがdjangoユーザーセッションを正しく動作させるための唯一の方法だからです。しかし、トラフィックがピーク時には、ELBが各受信要求を均等に分配しないため、この問題が発生します。これは、通常、ミニDDOSのように1台のサーバーを過負荷にします。

私がしたいのは、ユーザー認証情報がRedisキャッシュに保存されているサーバー側のユーザーセッションを使用することです。私はスティッキーセッションをオフにするとの要求が一部の要求が認証および他はありませんされている別のサーバーに行く終わるので、その後、私は、ログインすることができません

SESSION_ENGINE = 'redis_sessions.session' 
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' 
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' 

:私のような、多くの物事にSESSION_ENGINEを設定しようとしました。そうでないものは、私をログインページに戻します。ここで

は、私が持っているいくつかの他の関連する設定されている:私は間違って

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', 
    ..., 
) 

何をしているのですか?どうもありがとう。

答えて

0

すべてのウェブサーバーが実際に同じ共有のredisインスタンスに接続していることを確認しますか?たとえば、AWS ElastiCacheのようなネットワーク上で(ローカルホスト上の何かにデフォルト設定されていない)

あなたがいないdefault場合はそれがSESSION_CACHE_ALIASで多分、あなたはCACHESで構成されたRedisのキャッシュに設定し使用したキャッシュを確認してくださいSESSION_ENGINE = 'django.contrib.sessions.backends.cache'を使用している場合。

関連する問題