日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat集群及Session共享

發布時間:2024/3/26 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat集群及Session共享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Tomcat集群

由于單臺Tomcat的承載能力是有限的,當我們的業務系統用戶量比較大,請求壓力比較大時,單臺Tomcat是扛不住的,這個時候,就需要搭建Tomcat的集群,而目前比較流行的做法就是通過Nginx 來實現Tomcat集群的負載均衡

1、準備工作

1、準備Tomcat
在服務器上,安裝兩臺tomcat(這里記得要改tomcat服務器端口號)
2、安裝配置Nginx
在當前服務器上,安裝Nginx
安裝完Nginx后,配置Nginx,修改配置文件conf/nginx.conf
加入代碼:

upstream serverpool {server localhost:8888;server localhost:9999; }server {listen 99;server_name localhost;# 后端搜索服務localhost / {proxy_pass http://serverpool/;} }

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> 里面

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster/>

然后,在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共享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。