咱们须要准备两台虚拟机,把这两台虚拟机组成集群,实现会话保持。
php
[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服务。html
[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>
[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>
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服务:java
[root@server1 WEB-INF]# catalina.sh stop [root@server1 WEB-INF]# catalina.sh start
接着,咱们就去修改第二台机器。nginx
本台机器和第一台机器的设置类似,直接把文件拷过来就能够了:web
[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
[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>
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服务:apache
[root@server2 WEB-INF]# catalina.sh stop [root@server2 WEB-INF]# catalina.sh start
咱们直接去网页测试咱们的会话保持实现没有:
能够看出,咱们的会话保持已经实现。
实验完成。vim