实现基于tomcat集群会话保持
Posted 珂儿吖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现基于tomcat集群会话保持相关的知识,希望对你有一定的参考价值。
1、实验环境
我们需要准备两台虚拟机,把这两台虚拟机组成集群,实现会话保持。
2、配置server1
2.1 修改nginx配置文件
[root@server1 ~]# vim /etc/nginx/nginx.conf
upstream tomcat_cluser {
#ip_hash;
server 192.168.37.111:8080 weight=1;
server 192.168.27.122:8080 weight=2;
}
location / {
#index index.php index.html index.htm;
proxy_pass http://tomcat_cluser;
}
location ~* \\.(jsp|do)$ {
proxy_pass http://tomcat_cluser;
}
修改完成之后,重启我们的nginx服务。
2.2 修改tomcat配置文件
[root@server1 ~]# vim server.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="/"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
2.3 创建一个session页面
[root@server1 webapps]# mkdir test
[root@server1 webapps]# vim test/session.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="blue">TomcatA</h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
2.4 修改web.xml
[root@server1 webapps]# cd test/
[root@server1 test]# ls
session.jsp
[root@server1 test]# mkdir WEB-INF/
[root@server1 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
[root@server1 test]# cd WEB-INF/
[root@server1 WEB-INF]# ls
web.xml
[root@server1 WEB-INF]# vim web.xml
在web.xml下 在</web-app>
上方加入<distributable/>
设置一个标签
修改完成之后,重启我们的tomcat服务:
[root@server1 WEB-INF]# catalina.sh stop
[root@server1 WEB-INF]# catalina.sh start
接着,我们就去修改第二台机器。
三、配置server2
3.1 修改tomcat配置文件
本台机器和第一台机器的设置相似,直接把文件拷过来就可以了:
[root@server1 ~]# scp /usr/local/tomcat/conf/server.xml root@192.168.37.122:~
root@192.168.37.122\'s password:
server.xml 100% 8026 7.8KB/s 00:00
[root@server2 conf]# cp ~/server.xml .
cp: overwrite ‘./server.xml’? yes
3.2 创建一个session页面
[root@server2 webapps]# mkdir test
[root@server2 webapps]# vim test/session.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="blue">TomcatB</h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
3.3 修改web.xml
[root@server2 webapps]# cd test/
[root@server2 test]# ls
session.jsp
[root@server2 test]# mkdir WEB-INF/
[root@server2 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
[root@server2 test]# cd WEB-INF/
[root@server2 WEB-INF]# ls
web.xml
[root@server2 WEB-INF]# vim web.xml
在web.xml下 在</web-app>
上方加入<distributable/>
设置一个标签
修改完成之后,重启我们的tomcat服务:
[root@server2 WEB-INF]# catalina.sh stop
[root@server2 WEB-INF]# catalina.sh start
四、测试
我们直接去网页测试我们的会话保持实现没有:
可以看出,我们的会话保持已经实现。
实验完成。
以上是关于实现基于tomcat集群会话保持的主要内容,如果未能解决你的问题,请参考以下文章