Tomcat集群及Session共享
Tomcat集群
由于單臺Tomcat的承載能力是有限的,當我們的業務系統用戶量比較大,請求壓力比較大時,單臺Tomcat是扛不住的,這個時候,就需要搭建Tomcat的集群,而目前比較流行的做法就是通過Nginx 來實現Tomcat集群的負載均衡
1、準備工作
1、準備Tomcat
在服務器上,安裝兩臺tomcat(這里記得要改tomcat服務器端口號)
2、安裝配置Nginx
在當前服務器上,安裝Nginx
安裝完Nginx后,配置Nginx,修改配置文件conf/nginx.conf
加入代碼:
2、Session共享
在tomcat集群中,如果應用需要用戶進行登錄,這個時候,由于tomcat做了負載均衡,則用戶登錄并訪問應用系統時,就會出現問題
解決方案一:ip_hash 策略
一個用戶發起的請求,只會請求到tomcat1上進行操作,另一個用戶發起的請求只在tomcat2上進行操作。那么這個時候,同一個用戶發起的請求,都會通過nginx的ip_hash策略,將請求轉發到其中一臺tomcat上
假設用戶發送請求的ip為192.180.0.100,因為此時的負載均衡策略是ip_hash策略,那么nginx就會對192.180.0.100這個ip地址進行hash算法,算出的hash值指向了tomcat1,tomcat1存儲了該用戶的登錄信息,再進行查詢操作,nginx算出的hash值還是指向了tomcat1。所以,該用戶的登錄和查詢都是在同一臺tomcat,這樣就不會出現登錄成功而查詢失敗的問題
解決方案二:Session復制
在tomcat中修改配置文件,修改文件名為conf/server.xml,添加代碼,這段代碼加在 <Engine> 或者 <Host> 里面
然后,在tomcat部署的應用中(放在webapps中),修改WEB-INF/web.xml,在web.xml中加入代碼:<distributable/>.即可
方案二是通過廣播的形式進行session復制,當tomcat服務器的數量有很多時,方案二會對session復制很多次,就會浪費很多的資源
解決方案三:SSO單點登錄
單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所以相互信任的應用系統,也是用來解決集群環境session共享的方案之一
客戶端發起一次請求,請求到達nginx,nginx會去后端請求應用服務器tomcat1(假設請求到了tomcat1),如果應用需要登錄,tomcat1會將這個請求重定向到認證服務,在認證服務中進行登錄,然后認證服務會將登錄的信息保存在redis數據庫當中。下一次,用戶再一次發起查詢請求,請求到達nginx,nginx請求到了tomcat2,這時候,tomcat2中是沒有用戶登錄的信息,它就會到認證系統中進行驗證,然后認證系統就會去redis中查詢有沒有用戶登錄的信息,如果有,就可以在tomcat2中進行查詢操作
總結
以上是生活随笔為你收集整理的Tomcat集群及Session共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3_树莓派机载计算机的硬件资源样例教程—
- 下一篇: 修改论文格式的方法总结