基於tomcat集羣會話保持

基於tomcat集羣會話保持

環境:

        一臺nginx:ip 172.17.13.136

        一臺tomcat1:ip 172.17.13.134

        一臺tomcat2:ip 172.17.13.135

一、tomcat上操作:

1、下載jdk並安裝

lftp 172.17.0.1

cd pub/Sources/7.x86_64/jdk

mget jdk-8u144-linux-x64.rpm

rpm -ivh jdk-8u144-linux-x64.rpm

注意:安裝完成後,都要配置JAVA_HOME環境變量,指向java的安裝路徑;

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_144

export JRE_HOME=$JAVA_HOME/jre

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

chmod +x /etc/profile.d/java.sh

source /etc/profile.d/java.sh

查看版本:Java -version

blob.png 

2、下載tomcat並解壓:

(1)、從官網下載tomcat二進制安裝包(http://tomcat.apache.org/)

#wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat- 8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz

或者ftp上下載(lftp 172.17.0.1;cd /pub/Sources/7.x86_64/tomcat/;mget apache-tomcat-7.0.78.tar.gz )

(2)、解壓

tar xvf apache-tomcat-7.0.78.tar.gz -C /usr/local/

查看解壓後的目錄:

ll /usr/local/ | grep tomcat

3、爲方便管理,創建軟鏈接,或者直接mv改名。

ln -s /usr/local/apache-tomcat-7.0.78/ /usr/local/tomcat

4、PATH環境配置:

vim /etc/profile.d/tomcat.sh

    export CATALINA_BASE=/usr/local/tomcat

    export PATH=$CATALINA_BASE/bin:$PATH

賦予執行權限:

chmod +x /etc/profile.d/tomcat.sh

加載環境配置:

source /etc/profile.d/tomcat.sh

5、啓動tomcat

catalina.sh start

查看tomcat是否正常啓動(ss -ntl 查看端口8080)

blob.png 

6、測試是否正常:curl -I 127.0.0.1:8080

blob.png 

通過瀏覽器訪問:http://172.17.13.135:8080

                http://172.17.13.134:8080  

可訪問到tomcat頁面如下

blob.png 

 

實現會話保持:

1、vim server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  #jvmRoute表示唯一表示本機,所以不同主機的是不同的。這個參數非必須

<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.14.14.4" port="45564" frequency="500" dropTime="3000"/>  #多播地址應該是224~239,同一組裏的多播地址相同 

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="172.17.13.134" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>  #address爲本機能夠向外通信的地址 

<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、vim /usr/local/tomcat/conf/web.xml  給應用程序加<distributable/>標籤,使其能夠實現複製。在web-app字段加 <distributable/>。

將web.xml放在對應的項目目錄下:

mkdir /usr/local/tomcat/webapps/test/WEB-INF

cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/test/WEB-INF/

重啓服務:catalina.sh stop

catalina.sh start 

如果不能啓動,查看日誌logs/catalina.out信息如下(不能加入到組播) :blob.png

那麼添加到達組播的路由即可:route add -host 228.14.14.4 dev eth0

二、Nginx服務器上操作: 

1、vim /etc/nginx/nginx.conf

    upstream tomcat {            在http段配置

server 172.17.13.136:8080;

server 172.17.13.137:8080;

}

       

  index index.jsp index.html;         server段

 

    location /{

     proxy_pass http://tomcat;

     }

blob.png 

2、測試頁面:在tomcat1和tomcat2上編輯測試頁面,tomcat1內容爲A,tomcat2內容爲B

Vim /usr/local/tomcat/webapps/test/index.jsp

<%@ page language="java" %>

<html>

<head><title>TomcatB</title></head>

<body>

<h1><font color="blue">TomcatB </h1>

<table 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、訪問nginx服務器進行驗證:http://172.17.13.136/test/

可發現兩臺機器顯示的session ID相同

blob.png 

 blob.png 

三、tomcat結合memcached實現seesion共享:

在所有的tomcat節點上:兩臺主機既做tomcat也做memcached

下載五個jar包,將jar包放在/usr/local/tomcat/lib:

1、cd /usr/local/tomcat/lib;

lftp 172.17.0.1

>cd /pub/Sources/7.x86_64/msm

>mget javolution-5.4.3.1.jar

    memcached-session-manager-1.8.3.jar

    memcached-session-manager-tc7-1.8.3.jar

    msm-javolution-serializer-1.8.3.jar

    spymemcached-2.11.1.jar

>exit

2、在host段定義一個用於測試的context容器,並在其中創建一個會話管理器。

   vim server.xml     刪除之前的那一大段cluster配置,再在host中加入下面一段

    <Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">

     <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

      memcachedNodes="n1:172.16.100.9:11211,n2:172.16.100.10:11211"   #如果只有一個,可以只寫個ip,而且下一行failoverNodes不需要寫

     failoverNodes="n1"   表示備用的,當n2壞了纔會用n1.

     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

     transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

       />

     </Context>

重啓服務:

    catalina.sh stop

    catalina.sh start

3、下載memcached,啓動服務

   yum install memcached -y

   systemctl start memcached

4、測試頁面及測試效果同上


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章