簡介
看書剛好看到集群session共享,總覺得只看不做,不能確定這到底是怎么運行的.所以就做了這個測試.有關Memcached-Session-Manager,Memcached,以及集群session共享等相關知識,請自行補充.本次就簡單記錄下測試過程.
有關其他的方式以及其他的情況,本文不做說明,有需要的話,會再寫其他情況和方式下的文章.
環境說明
- 本機OSX 10.11,tomca7.0.57,memcached-1.4.24
- 虛擬機Ubuntu16.04,tomca7.0.57,memcached-1.4.24
- 使用non-sticky sessions(非粘性session)
- 序列化:使用默認,java進行序列化,由memcached-session-manager.jar這個jar包來提供方法.
- 有關粘性和非粘性的區別以及序列化等不做解釋.
具體步驟
安裝jdk,memcached,tomcat
不做詳細說明
放jar包
將如下相關jar包分別放置到兩臺機器的tomcat $CATALINA_HOME/lib/
目錄中.
- memcached-session-manager-${version}.jar
- memcached-session-manager-tc7-${version}.jar
- spymemcached-2.11.1.jar
修改tomcat配置文件
兩臺機器分別修改tomcat $CATALINA_HOME/conf/context.xml
文件,添加如下代碼到Context節點下:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.110.197:11211,n2:192.168.110.198:11211"
sticky="false"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
部署Web項目到tomcat
新建測試用的web項目,并部署到兩臺tomcat中.測試代碼簡單如下:
<body>
Session ID:<%=session.getId()%> <br>
IP:<%=request.getServerName()%> <br>
Port:<%=request.getServerPort()%>
</body>
啟動兩臺機器的memcached
memcached -m 32 -p 11211 -d
啟動兩臺機器的tomcat
查看tomcat信息tail -f catalina.out
未報錯,看到類似如下信息就啟動成功
信息: --------
- finished initialization:
- sticky: false
- operation timeout: 1000
- node ids: [n1, n2]
- failover node ids: []
- storage key prefix: null
--------
訪問測試頁面
分別訪問兩臺機器的測試頁面:
- 同一個瀏覽器
- 兩個瀏覽器
- 結束掉一個機器的memcached進程在訪問等等
同一個瀏覽器不同標簽頁訪問192.168.110.197和192.168.110.198 得到的sessionid都是一樣的:
Session ID:39D5E175513B4496C136F5E1554478CD-n1
IP:192.168.110.197
Port:8080
Session ID:39D5E175513B4496C136F5E1554478CD-n1
IP:192.168.110.198
Port:8080
關閉ip為197的memcached進程之后,刷新頁面:
Session ID:39D5E175513B4496C136F5E1554478CD-n2
IP:192.168.110.197
Port:8080
Session ID:39D5E175513B4496C136F5E1554478CD-n2
IP:192.168.110.198
Port:8080
測試成功.
參考
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#introduction