-
session server:將Tomcat的session信息保存在Memcached中,實現session server
-
前提:
- 兩個Tomcat節點,兩個Memcached節點,一個nginx節點;Tomcat需要使用到Memcached-session-manager這個Java類,即上面所說的調用了Memcached提供的API的模塊,以達到Memcached通信的目的
-
Add memcached-session-manager jars to tomcat:
- Memcached-session-manager項目下載地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration;下載如下jar文件至各Tomcat節點的$CATALINA_HOME/lib目錄中,其中的memcached-session-manager-${version}.jar的版本號和Tomcat的版本號是兩碼事,它的${version}要和memcached-session-manager-tc${6,7,8}-${version}.jar中的${version}一致,tc${6,7,8}對應Tomcat版本號
- Independent of the chosen serialization strategy you always need the memcached-session-manager-${version}.jar and either memcached-session-manager-tc6-${version}.jar for tomcat6, memcached-session-manager-tc7-${version}.jar for tomcat7 (attention: tomcat 7.0.23+), memcached-session-manager-tc8-${version}.jar for tomcat8 or memcached-session-manager-tc9-${version}.jar for tomcat9.
- If you're using memcached, you also need the spymemcached-${version}.jar. Tested up to v2.12.3.
- msm-javolution-serializer-${version}.jar序列化工具
- Please download the appropriate jars and put them in $CATALINA_HOME/lib/
-
前提:
-
分別在兩個Tomcat上的某host中的context容器中創建會話管理器,如下所示:
- <Context path=”/NAME1” docBase=”/usr/local/tomcat/webapps/NAME2” reloadable=”true”> 這里注意NAME1和NAME2不能相同,而且docBase還需要是絕對路徑
<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”
memcachedNodes=”n1:172.16.8.93:11211,n2172.16.8.94:11211” 實現Tomcat和后端的兩個memcached節點通信,當Tomcat將緩存存到一個節點后,自動將副本復制到另外一個節點
failoverNodes=”n1” 指明n1為備用節點
requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$” 忽略這些結尾的URL,不以緩存
transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscodeFactory” /> 指定序列化工具
</Context>
-
分別為兩個context提供測試頁面:
- # mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
- # vim /usr/local/tomcat/webapps/test/index.jsp,添加如下內容:
<%@ page language="java" %>
<html>
<head><title>TomcatA | TomcatB</title></head>
<body>
<h1><font color="{red | bule}">{TomcatA | TomcatB}.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
-
nginx中的配置:
- vim /etc/nginx/nginx.conf
http {
upstream tservers {
server 172.16.8.93:8080 weight=2;
server 172.16.8.94:8080 weight=3;
}
}
- vim /etc/nginx/conf.d/tomcat.conf
server {
listen 80;
location ~* \.(jsp|do)$ {
proxy_pass http://tservers;
}
}
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93920