En basit konfigürasyon! Nginx + tomcat yük dengeleme oturumu bakımını tamamlamak için 3 adım

Oturum saklama nedir

Sohbet Etkileşimli bir sistemle iletişim kuran bir terminal kullanıcısının sürecini ifade eder Örneğin, işletim sistemine girme işlemi hesap şifresinden işletim sisteminden çıkmaya kadar olan süreç bir oturum sürecidir. Görüşmeler çoğunlukla ağ üzerinde kullanılır.TCP'nin üç yönlü el sıkışması bir oturum oluşturur ve TCP oturumu kapatmak için bağlantıyı kapatır.

Http protokolü durumsuz bir protokoldür, bu nedenle Oturum, toplantı, celse Oturum açma durumu, ortak bilgiler vb. Gibi kullanıcının durumunu kaydetme mekanizması.

Oturum, toplantı, celse Birden çok sayfa arasında gerçekleştirilebilen bir oturumun ilgili bilgilerini kaydetmek için kullanılır paylaşılan Bu veriler.

Örneğin: Taobao'yu açarsınız ve kişisel hesabınıza giriş yaparsınız.Çok sayıda mağazaya göz atsanız ve sayfa değiştirseniz bile, kullanıcı adı aynı kalır.Bu, Oturum'un işlevidir. Tarayıcıyı kapatana ve Oturum yok edilene kadar, önceki oturum açma kayıtları silinecektir.

Bugün sizinle paylaşın " Nginx + tomcat, yük dengeleme oturumu bekletmeyi gerçekleştirir "Bunun amacı şudur: Web sitesinin bir yük düğümü kapatırsa, istek yeni düğüme tahsis edilir Oturum aynı zamanda oturum tutmayı sağlamak için senkronize edilir ve böylece kullanıcıların Algı yok Göz atmanın.

Uygulama prensibi

  • HTTP oturum yönetimini uygulamak için Manager nesnesini kullanın
  • Oturum yöneticisi olarak DeltaManager
  • Kullanıcılar nginx, nginx yük bakiyelerine Tomcat kümesinin oturum yöneticisi olan tomcat'e erişir ve oturum çoğaltmasını sağlamak için tüm oturum değişikliklerini kümedeki her düğümle eşitler.

Deneysel yapılandırma

Nginx yapılandırması

Test ortamında, tek bir sunucu, biri 8080 bağlantı noktasına, diğeri 8090 bağlantı noktasına karşılık gelen iki tomcat açtı.

TomcatA TomcatB oluşturun, sırasıyla tomcat server.xml'yi yapılandırın

Aşağıdaki içeriği Motora kopyalayın

< Motor adı = "Catalina" defaultHost = "localhost" >

Bu modülü ekleyin:

< Küme className = "org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions = "8" > < Yönetici className = "org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown = "false" notifyListenersOnReplication = "true" / > < Kanal className = "org.apache.catalina.tribes.group.GroupChannel" > < Üyelik className = "org.apache.catalina.tribes.membership.McastService" adres = "228.0.0.4" bağlantı noktası = "45564" frekans = "500" dropTime = "3000" / > < Alıcı className = "org.apache.catalina.tribes.transport.nio.NioReceiver" adres = "192.168.224.145" bağlantı noktası = "4001" autoBind = "100" selectorTimeout = "5000" maxThreads = "6" / > < Gönderen className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" > < Taşıma className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender" / > < /Gönderen > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" / > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" / > < /Kanal > < Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter = "" / > < Valve className = "org.apache.catalina.ha.session.JvmRouteBinderValve" / > < Deployer className = "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir = "/ tmp / war-temp /" deployDir = "/ tmp / war-deploy /" watchDir = "/ tmp / war-listen /" watchEnabled = "false" / > < ClusterListener className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" / > < ClusterListener className = "org.apache.catalina.ha.session.ClusterSessionListener" / > < /Küme >

Uyarılar:

1. sınıf adı, tomcat kümesinin bilgi aktarımı için hangi sınıfı kullanacağını yapılandırır

  • kanal seçenekleri 2, 4, 8.10 olarak ayarlanabilir
  • 2- iletimi onaylayın 4- senkron iletim 8- asenkron iletim
  • 10- Asenkron modda, Onay ekleyerek güvenilirliği artırabilirsiniz.

2. Yönetici, kümenin oturum bilgilerinin nasıl yönetileceğine karar verir

  • className-Bilgi yönetimi için org.apache.catalina.ha.ClusterManager arabirimini uygulayan sınıfı belirtin.
  • expireSessionsOnShutdown - true olarak ayarlandığında, bir düğüm kapanır ve bu da küme altındaki tüm Oturumların geçersiz olmasına neden olur
  • notifyListenersOnReplication-Session replikasyonu ve kümedeki düğümler arasında silme işlemleri, oturum dinleyicilerinin bilgilendirilip bildirilmeyeceği

3. Kanal, Tomcat düğümleri arasındaki iletişim için bir araçtır.

  • Kanal 5 bileşen içerir: Üyelik, Alıcı, Gönderen, Taşıma, Durdurucu

4. Üyelik, kümedeki mevcut düğümlerin bir listesini tutar. Yeni düğümleri ve düşen düğümleri tespit etmek için kullanılır

  • adres Çok noktaya yayın adresi (rastgele bir çok noktaya yayın adresi tanımlayın), tomcat'i dağıtmak için Alibaba Cloud ECS'ye ihtiyacınız varsa, ECS çok noktaya yayını desteklemediğinden, oturum saklamayı sağlamak için oturumu depolamak için memcache veya redis kullanmanız önerilir
  • port-multicast port (iki tomcat multicast portu aynı olmalıdır)
  • frekans-sinyal gönderimi için zaman aralığı (birim: ms) (çok noktaya yayın adresine UDP paketleri gönderme). Varsayılan değer 500'dür
  • dropTime-Membership, dropTime (birim: ms) içinde bir düğümün sinyalini almaz, ardından düğümü kullanılabilir düğümler listesinden siler. Varsayılan değer 3000'dir

5. Alıcı: Alıcı

  • adres - mesajı alacak adres (varsayılan otomatiktir, ancak sanal makinede tomcat açıldığında bir hata bildirilir, yerel IP adresini yapılandırmanız önerilir)
  • port - mesajları almak için port (bir sunucuda birden fazla tomcat konfigüre edilmişse, portların ayırt edilmesi gerekir)
  • autoBind-Port değişim aralığı

Bağlantı noktası 4000 ve autoBind 100 ise, alıcı izleme için 4000-4099 arasında bir bağlantı noktası alacaktır.

  • selectorTimeout NioReceiver yoklama zaman aşımı süresi
  • maxThreads-iş parçacığı havuzundaki maksimum iş parçacığı sayısı

6. gönderen: Gönderen, mesajın gönderilmesinden sorumludur

< Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" / > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" / > < /Kanal >

7. Vana: filtre

8. Dağıtıcı: Küme altındaki tüm düğümlerin tutarlılığını senkronize edin

9. ClusterListener: Cluster bileşeni tarafından alınan mesajları izleyen Listener.DeltaManager kullanılırken, Cluster tarafından alınan bilgiler, ClusterSessionListener aracılığıyla DeltaManager'a iletilir.

Web.xml'yi yapılandırın

Web kapsayıcısına projenin dağıtılmış bir proje olduğunu söylemek için web.xml'de öznitelikler ekleyin

< dağıtılabilir/ > Web projesi WEB-INF dizinine etiketler ekleyin

Oturum saklama doğrulaması

webapps / ROOT / index.jsp Oturum kimliğini almak için bir test sayfası oluşturun

tomcatA < % @ page language = "java"% > < html > < baş > < Başlık > TomcatA < /Başlık > < / kafa > < vücut > < h1 > < yazı tipi rengi = "kırmızı" > TomcatA < /yazı tipi > < / h1 > < table align = "center" border = "1" > < tr > < td > Oturum kimliği < / td > < % session.setAttribute ("TomcatA", "TomcatA");% > < td > < % = session.getId ()% > < / td > < / tr > < tr > < td > Tarihinde oluşturuldu < / td > < td > < % = session.getCreationTime ()% > < / td > < / tr > < / tablo > < /vücut > < / html > tomcatB < % @ page language = "java"% > < html > < baş > < Başlık > TomcatB < /Başlık > < / kafa > < vücut > < h1 > < yazı tipi rengi = "kırmızı" > TomcatB < /yazı tipi > < / h1 > < table align = "center" border = "1" > < tr > < td > Oturum kimliği < / td > < % session.setAttribute ("TomcatB", "TomcatB");% > < td > < % = session.getId ()% > < / td > < / tr > < tr > < td > Tarihinde oluşturuldu < / td > < td > < % = session.getCreationTime ()% > < / td > < / tr > < / tablo > < /vücut > < / html >

Tarayıcı erişim doğrulaması

sonuç olarak:

Tomcat'te oturum tutmayı sağlamanın pek çok yolu vardır Burada yalnızca Manager nesnesinin uygulaması tanıtılmıştır.Avantajı, oturum saklama yapılandırmasını elde etmek için tomcat'in kendi küme oturumu çoğaltmasını kullanmanın uygun olmasıdır. Dezavantajı, Alibaba Cloud ECS gibi çok noktaya yayını desteklemiyorsa bu şekilde uygulanamamasıdır. . Oturum oturumlarını saklamak için memcache veya redis de kullanabilirsiniz, ancak bunun için tomcat sürümüne karşılık gelen memcache jar paketinin indirilmesi gerekir.

Moshang International'ın 3. Yıldönümü Töreni "Bin Bir Gece" Parlak Yıldızlar Seyirciyi Çevirdi
önceki
"O Yıllar" ın yetişkin versiyonu Hong Kong tarafından kısıtlanmış olarak listelendi ve izledikten sonra bacaklarım korktu
Sonraki
% 100 karlı bir döviz ticareti stratejisi gerçekten var mı?
Lütfen en yağlı şovu en büyük kartla yapın. Bu eğlence şovu çeşitli iblis şovu ve şovdan daha heyecan verici
7 Superstar'dan "On Yılın En İyi Eserleri": Jackie Chan'ın filmi üç kez izlemeye değer
"Yanxi Sarayı Stratejisi" Cariye Gao Gui, bir paket öğle yemeği almak için montaj hattından çıktı
Yırtıcı silahlar nasıl eklenir
Stephen Chowun "The King of Comedy" filminde yedi "utanç": Yüze en çok vuran Karen Mok
74 milyon dolarlık boş sipariş! 10.000 bitcoin kim sattı?
General kim? Bu kadının çok fazla haremi var
"Deng Chao'nun Eski Kız Arkadaşı" nihai karşı saldırıyı gerçekleştirecek, bu suç filmi onun yeteneğini test etmek için bir mihenk taşı.
Kesintisiz, ilk gün 100 milyonu kırarak, Marvel tarihindeki en iyi itibar doğar mı?
Mi Zijun'un Çin yemek kültürünü ziyareti izleyiciler tarafından övüldü
8 büyük ünlü ünlünün en çok hasılat yapan eserleri: Andy Lau ve Chow Yun-fat'ın fiyatı düştü, Jet Li en kötüsüydü
To Top