5

Bir Elastik Yük Dengeleyici (ELB) arkasında EC2 sunucuları ile AWS Elastik Beanstalk kullanıyorum.AWS Yük Dengeleyici ile Django kullanıcı oturumları yapışkanlık kapalı

ELB etkinken "yapışkan oturumlarım var", çünkü django kullanıcı oturumlarının doğru şekilde çalışmasını sağlamanın tek yolu bu. Ancak, en yoğun trafik zamanlarında, bu sorunlara neden olur, çünkü ELB her gelen talebi eşit olarak dağıtmaz. Bu genellikle bir mini DDOS gibi 1 sunucuyu aşırı yükler.

Yapmak istediğim, kullanıcı kimlik doğrulama bilgilerinin Redis önbelleğimde saklandığı sunucu tarafı kullanıcı oturumları kullanmaktır. Yapışkan oturumları kapattığınızda

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

Sonra ben istekleri bazı talepler doğrulanır ve diğerleri değildir farklı sunuculara gidiş sona çünkü giriş yapamıyorum: Ben gibi sayısız şeyler SESSION_ENGINE ayarı çalıştı ettik. Olmayanlar, beni giriş sayfasına yönlendir.

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

yanlış yapıyorum: Burada

Ben bazı diğer ilgili ayarları nedir? Çok teşekkürler.

cevap

0

Tüm web sunucularınızın gerçekte aynı paylaşılan redis örneğine bağlandığından emin misiniz? Örneğin: ağda AWS ElastiCache gibi (ve yerel sunucularında bir şey için varsayılan değil)?

sonra değil default eğer SESSION_CACHE_ALIAS ile belki, CACHES yapılandırılmış Redis önbelleğe ayarlanmış kullanır önbellek emin olun SESSION_ENGINE = 'django.contrib.sessions.backends.cache' kullanın.

İlgili konular