1. 程式人生 > >實現基於tomcat集群會話保持

實現基於tomcat集群會話保持

ice dispatch code receiver tribes 技術分享 () sts con

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 [email protected]:~
[email protected]'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集群會話保持