Tomcat集群下如何實現單點登入?

2022-09-11 06:54:08 字數 1647 閱讀 9538

假設應用環境如上圖,這裡有三個tomcat,裡面部署的內容都是一樣的,現在有這麼乙個問題,假設使用者第一次在第一台伺服器登陸後,下次通過負載均衡到了tomcat2上面,是不是還要再登入一次,假如下次再到tomcat3呢?如果不止這三颱呢?這對使用者來說每次登入顯然是不現實的,而且三颱tomcat的會話也是不共用的。現在要做的就是這三個tomcat要共同擁有乙份session列表,

我們首先可以這樣想,讓每台的tomcat進行session同步,但這樣呢是不是太浪費伺服器資源和效能了

nginx帶有負載均衡功能,可以讓nginx根據ip進行hash,負載固定使用者到某乙個tomcat伺服器,但這樣萬一某一台tomcat掛了呢,還有可能就是萬一客戶端使用了靜態**且**得使用者還比較多,這樣又會導致資源分配不均衡

當使用者在某一台伺服器進行登入邏輯時,我們返回乙個自定義的cookie,new cookie("cookie",session.getid()),然後我們再把這個session.getid()作為鍵,使用者資訊可以作為value存入redis中,當下次訪問到其他伺服器需要驗證使用者狀態時可以根據前端傳過來的cookie到redis裡面進行查詢,查詢到的說明已經登入過,查詢不到進行登入。

**實現

//讀取客戶端cookie

}思路三的使用方式我們時自己借助於cookie在客戶端寫入值,同時我們沒有使用session.setattribute("key","value")這個方法,而通過springsession呢?原理上也差不多,但我們不用自己寫cookie操作這一部分,同時也要借助於redis這個nosql這個資料庫,在原來的**中我們還是通過session.setattribute("key","value")進行會話操作,這種方式最好的一面就是對**的侵入性比較低。接下來是具體配置:

1、引入jar包

org.springframework.session

spring-session-data-redis

1.2.0.release

2、配置web.xml檔案
springsessionrepositoryfilter

org.springframework.web.filter.delegatingfilterproxy

*.do

如何有效監控單點 集群tomcat

tomcat作為使用非常廣泛的web容器,確實給我們帶來了很多幫助,就像任何軟體系統一樣,一旦正式投入生產環境,那監控手段就不可或缺。如何有效的監控tomcat的運 況,尤其是在複雜it環境下就更顯得迫切了,如tomcat集群部署 1 單點tomcat的監控 到底乙個tomcat服務我們應該監控哪些...

Tomcat集群環境下使用redis實現單點登入

一 問題分析 在tomcat集群環境下,session是不能在tomcat之間共享的,所以會導致如下問題,如圖所示 通乙個瀏覽器傳送多次請求,請求可能會被nginx 到不同的tomcat上,因為session不能共享,可能會導致登入成功後,發起其他的請求,返回給使用者的依舊是讓其進行登入操作,所以需...

Apache實現Tomcat集群

一,配置介紹 1,linux 2,tomcat6.0 tomcat1,tomcat2 3,httpd apache 版本 2.2.15 需要命令安裝 4,mod jk 1.2.30 httpd 2.2.3.so 版本與上面的httpd要保持一致 2.2.x 二,各個配置說明 2在apache hom...