中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tomcat如何實現session共享

發布時間:2021-08-21 09:19:04 來源:億速云 閱讀:275 作者:小新 欄目:服務器

小編給大家分享一下Tomcat如何實現session共享,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、如何保持session會話

目前,為了使web能適應大規模的訪問,需要實現應用的集群部署。集群最有效的方案就是負載均衡,而實現負載均衡用戶每一個請求都有可能被分配到不固定的服務器上,這樣我們首先要解決session的統一來保證無論用戶的請求被轉發到哪個服務器上都能保證用戶的正常使用,即需要實現session的共享機制。

在集群系統下實現session統一的有如下幾種方案:

1、請求精確定位:session sticky,例如基于訪問ip的hash策略,即當前用戶的請求都集中定位到一臺服務器中,這樣單臺服務器保存了用戶的session登錄信息,如果宕機,則等同于單點部署,會丟失,會話不復制。

2、session復制共享:session replication,如tomcat自帶session共享,主要是指集群環境下,多臺應用服務器之間同步session,使session保持一致,對外透明。 如果其中一臺服務器發生故障,根據負載均衡的原理,調度器會遍歷尋找可用節點,分發請求,由于session已同步,故能保證用戶的session信息不會丟失,會話復制,。

此方案的不足之處:

必須在同一種中間件之間完成(如:tomcat-tomcat之間).

session復制帶來的性能損失會快速增加.特別是當session中保存了較大的對象,而且對象變化較快時, 性能下降更加顯著,會消耗系統性能。這種特性使得web應用的水平擴展受到了限制。

Session內容通過廣播同步給成員,會造成網絡流量瓶頸,即便是內網瓶頸。

在大并發下表現并不好

3、基于cache DB緩存的session共享

基于 memcache/redis緩存的 session 共享

即使用cacheDB存取session信息,應用服務器接受新請求將session信息保存在cache DB中,當應用服務器發生故障時,調度器會遍歷尋找可用節點,分發請求,當應用服務器發現session不在本機內存時,則去cacheDB中查找,如果找到則復制到本機,這樣實現session共享和高可用。

二、本配置基于tomcat7環境,通過tomcat集群自帶的session復制,session信息將會被自動復制到各個節點。

案例環境:

主機

操作系統

IP地址

主要軟件

Tomcat-1

Centos6.5 x86_64

192.168.10.20

jdk-7u65-linux-x64.gz

apache-tomcat-7.0.54.tar.gz

Tomcat-2

Centos6.5 x86_64

192.168.10.21

實驗拓撲:

Tomcat如何實現session共享

2、在tomcat-1和tomcat-2節點上安裝JDK

在安裝tomcat之前必須先安裝JDK,JDK的全稱是java  development kit,是sun公司免費提供的java語言的軟件開發工具包,其中包含java虛擬機(JVM),編寫好的java源程序經過編譯可形成java字節碼,只要安裝了JDK,就可以利用JVM解釋這些字節碼文件,從而保證了java的跨平臺性

安裝JDK,配置java環境:

將jdk-7u65-linux-x64.gz解壓

Tomcat如何實現session共享

將解壓的jdk1.7.0_65目錄移致動到/usr/local/下并重命名為java

Tomcat如何實現session共享

在/etc/profile文件中添加內容如下:

Tomcat如何實現session共享

通過source命令執行profile文件,使其生效。

Tomcat如何實現session共享

分別在在tomcat-1和tomcat-2節點運行java  -version命令查看java版本是否和之前安裝的一致。

Tomcat如何實現session共享

至此java環境已經配置完成

3、在tomcat-1和tomcat-2節點安裝配置tomcat

解壓apache-tomcat-7.0.54.tar.gz包

Tomcat如何實現session共享

將解壓生成的文件夾移動到/usr/local/下,并改名為tomcat7

Tomcat如何實現session共享

配置tomcat環境變量

/etc/profile文件內容如下:

Tomcat如何實現session共享

通過source命令執行profile文件,使其生效。

Tomcat如何實現session共享

啟動tomcat

Tomcat如何實現session共享

Tomcat默認運行在8080端口,運行netstat命令查看8080端口監聽的信息

Tomcat如何實現session共享

打開瀏覽器分別對tomcat-1和tomcat-2訪問測試

Tomcat如何實現session共享

如果想關閉tomcat則運行/usr/local/tomcat7/bin/shutdown.sh命令

好了,大家可以看到訪成功。說明我們的tomcat安裝完成,下面我們來配置一下

4、修改配置文件

# vim /usr/local/tomcat7/conf/server.xml

設置默認主機,并增加jvmRoute

Tomcat如何實現session共享

定義一個虛擬主機,并將網站文件路徑指向/web/webapp1,在host段增加context段

Tomcat如何實現session共享

增加文檔目錄與測試文件

Tomcat如何實現session共享

index.jsp內容如下:

Tomcat如何實現session共享

停止tomcat運行,檢查配置文件并啟動tomcat

Tomcat如何實現session共享

Tomcat如何實現session共享

Tomcat如何實現session共享

Tomcat-2節點與tomcat-1節點配置基本類似,只是jvmRoute不同,另外為了區分由哪個節點提供訪問,測試頁標題也不同。其他的配置都相同。過程略

再次測試訪問一下

Tomcat如何實現session共享

Tomcat如何實現session共享

可以看到session會話不同

好了,到這里我們準備工作就全部完成了,下面我們來配置tomcat的負載均衡,通過session復制實現會話保持。

5、配置會話共享集群,分別在tomcat-1和tomcat-2完成下面的操作。

配置server.xml文件

Tomcat如何實現session共享

在Server.xml中,找到被注釋<Cluster/>節點,在下面添加如下內容:

Tomcat如何實現session共享

Tomcat如何實現session共享

修改應用的web.xml文件,加入標簽  <distributable/> ,如下所示:

Tomcat如何實現session共享

添加標簽<distributable/>

Tomcat如何實現session共享

直接加在</web-app> 之前就可以了這個是加入tomcat的session 復制的,做tomcat集群必須需要這一步,否則用戶的session 就無法正常使用。

注意:以上內容可以參考clustering/session replicationhow-to,如下圖所示:

Tomcat如何實現session共享

注意:tomcat主機必須要指向正確的網關,否則tomcat會啟動失敗,報如下錯誤

Tomcat如何實現session共享

重啟tomcat服務并查看端口的監聽狀態。

Tomcat如何實現session共享

Tomcat如何實現session共享

Tomcat-2節點與tomcat-1配置類似,只是address要寫成tomcat-2的ip。

查看tomcat日志:/usr/local/tomcat7/logs/catalina.yyyy-mm-dd.log

Tomcat如何實現session共享

6、nginx服務器配置

用nginx實現tomcat的負載均衡

關閉防火墻

安裝相關軟件包:#yum –y  install pcre-devel zlib-devel

解壓并安裝nginx

Tomcat如何實現session共享

修改nginx.conf文件

Tomcat如何實現session共享

修改內容如下:

Tomcat如何實現session共享

啟動nginx服務

Tomcat如何實現session共享

7、下面開始測試

在客戶端使用瀏覽器訪問nginx的地址

Tomcat如何實現session共享

刷新頁面

Tomcat如何實現session共享

大家可以從圖中看到,不管你怎么刷新SessionID都不會變,說明我們的Tomcat的DeltaManager集群配置完成,實現了多臺主機之間會話共享

8、tomcat連接mysql數據庫

192.168.10.22作為mysql數據庫服務器

配置mysql

Tomcat如何實現session共享

插入些數據

Tomcat如何實現session共享

下載mysql-connector-java-5.1.22-bin.jar并復制到$CATALINA_HOME/lib目錄下

Tomcat如何實現session共享

context configuration

configure the JNDI datasource in tomcat by adding a declaration for your resource to your context

Tomcat如何實現session共享

Tomcat如何實現session共享

保存修改并退出

web.xml configuration

Tomcat如何實現session共享

Tomcat如何實現session共享

保存修改并退出,重啟tomcat服務

Tomcat如何實現session共享

Test code

Now create a simple test.jsp page,內容如下:

Tomcat如何實現session共享

Tomcat如何實現session共享

測試訪問

Tomcat如何實現session共享

看到上面的結果說明訪問成功

注:

以上配置可以參考tomcat docs

Tomcat如何實現session共享

Tomcat如何實現session共享

Tomcat如何實現session共享

以上是“Tomcat如何實現session共享”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尚志市| 阿拉善右旗| 东丽区| 咸丰县| 阿克陶县| 健康| 万全县| 山阳县| 彭山县| 潮安县| 佳木斯市| 富锦市| 屯留县| 合山市| 南阳市| 伊通| 老河口市| 武安市| 民县| 永宁县| 库伦旗| 河南省| 赤壁市| 镇坪县| 井陉县| 甘德县| 孝义市| 进贤县| 张家港市| 沭阳县| 顺平县| 北京市| 麻阳| 南木林县| 达孜县| 全南县| 延吉市| 兴城市| 阿合奇县| 甘孜县| 石柱|