StackOverflow / ServerFault'da kaç tane web sunucusu var?
Cevap 'birden fazla' ise, DNS yoklaması yapılırken Session Stickiness'e ulaşır mı?
StackOverflow / ServerFault'da kaç tane web sunucusu var?
Cevap 'birden fazla' ise, DNS yoklaması yapılırken Session Stickiness'e ulaşır mı?
Yanıtlar:
Büyük web siteleri birden fazla makinede "yük dengeli" olabilir. Yüke duyarlı birçok kurulumda, kullanıcı oturum sırasında herhangi bir arka uç makinesinden birine basabilir. Bu nedenle, birçok makinenin kullanıcı oturumlarını paylaşmasına izin vermek için çeşitli yöntemler vardır.
Seçilen yöntem kullanılan yük dengeleme stiline ve ayrıca arka uç depolamanın kullanılabilirliğine / kapasitesine bağlı olacaktır:
Yalnızca çerezlerde depolanan oturum bilgileri : Oturum bilgileri (yalnızca bir oturum tanımlayıcısı değil) bir kullanıcının çerezinde saklanır. Örneğin, kullanıcının çerezi alışveriş sepetinin içeriğini içerebilir. Kullanıcıların oturum verilerini değiştirmesini önlemek için, çerezle birlikte bir HMAC sağlanabilir. Bu yöntem çoğu uygulama için muhtemelen en az uygundur:
Yük dengeleyici her zaman kullanıcıyı aynı makineye yönlendirir : Birçok yük dengeleyici, bir kullanıcının hangi arka uç makinesinden istek alacağını belirten kendi oturum çerezlerini ayarlayabilir ve gelecekte bu makineye yönlendirebilir. Kullanıcı her zaman aynı makineye yönlendirildiği için, birden fazla makine arasında oturum paylaşımı gerekli değildir. Bu, bazı durumlarda iyi olabilir:
Paylaşılan arka uç veritabanı veya anahtar / değer deposu : Oturum bilgileri, tüm web sunucularının sorgulama ve güncelleştirmeye erişimi olan bir arka uç veritabanında depolanır. Kullanıcının tarayıcısı, oturum bilgisine işaret eden bir tanımlayıcı (oturum kimliği gibi) içeren bir çerezi saklar. Bu muhtemelen üçünün en temiz yöntemi:
Genel olarak, dinamik web uygulamalarının çoğu, birkaç veritabanı sorgusu veya anahtar / değer deposu isteğinde bulunur; bu nedenle veritabanı veya anahtar / değer deposu, oturum verilerinin mantıksal depo yeridir.
Sorunuz birden fazla ön uç web sunucusunda oturumları nasıl koruyacağınızsa, yanıt genellikle merkezi bir veritabanı kullanmaktır. Yerel dosya sistemlerinde oturum dosyalarını izlemek için web sunucusu örneklerine güvenmek yerine, oturum kimliklerini ve verilerini merkezi bir DB'ye yazarsınız ve tüm web sunucuları bunun yerine verileri alır.
Nemcached kullanımı @David Pashley tarafından bahsedildiği gibi değil iyi bir çözüm gibi görünüyor
Tüm sunucular tarafından paylaşılan uzak bir memcached örneğinin olması ve kendi oturum işleyicisini sağlayan memcache PECL uzantısının kullanılması anlamına gelir.
Sadece php yapılandırmasında iki parametre değiştirmek gerekiyor!
İşte güzel bir ders http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/
IIRC, DotNetRocks # 440 da bir sunucu dönemi dediler. Hala böyle olup olmadığını bilmiyorum.
Düzenleme: Aslında Hanselminutes # 134 idi . Üzgünüm.
Bir çerez ayarlayabilirsiniz.
Uzak IP'nin bir karmasını hesaplayabilirsiniz (en basitinde, tek sayılı uzaktaki ana bilgisayarlar A sunucusuna, numaralandırılmış ana bilgisayarlar bile B sunucusuna gider).
Bir ssl tüneli kullanıyorsanız, kaynak sistemde kalan bazı değerler aracılığıyla da yapabilirsiniz.
Tipik olarak yukarıdaki mekanizmaların her biri bir "ters proxy" sunucusu veya bir çeşit yük dengeleyici gerektirir. Bu yük dengeleyici trafiği kabul eder ve daha sonra yukarıdaki kriterlerden birine dayanarak ilk olarak oturumu gerçekleştiren sunucuyu yönlendirir.
"DNS yoklama" derken neyi kastettiğinizden emin değilim.
a) Oturum bilgilerini kullanıcı çerezinde saklayabilirsiniz. Depolayan yok sunucu tarafında veri, ancak korur Oturum durumu vatansız sertleştirilmiş çerezleri Bakınız http://www.cl.cam.ac.uk/~sjm217/papers/protocols08cookies.pdf . b) Oturum arka uç depolamasını veritabanına veya memcached olarak değiştirebilirsiniz. Tek bir başarısızlık noktasını ortadan kaldırmak için, veritabanı çoğaltmasını veya birden çok memcached düğümü ayarlayabilirsiniz. Unutmayın, memcached, oturum sırasında kullanıcı durumunu kaybetmenin büyük bir hata olmadığı ve onu çok mutsuz etmediği kurulumlarda önerilmektedir. Koruma halinin hayati olduğu durumlarda, veritabanlarını kullanın. Hem PHP, Django hem de Rails geliştiricinin özel oturum arka ucu yazmasına izin verir.