Nginx+tomcat session cluster會話保持實驗

Nginx+tomcat session cluster會話保持實驗html



實驗要求:java

1nginx+tomcat 負載均衡node

2、會話保持linux

 

實驗拓撲nginx

wKioL1igcOmCuRDnAAApNX0apdM176.jpg

         ip網絡規劃web

         Nginxnode2:172.16.76.20apache

         tomcatAnode3:172.16.76.30vim

         tomcatBnode4:172.16.76.40後端

 

基礎配置tomcat

         node2:

                   [root@node2~]# yum install nginx –y

         node3:    

[root@node3~]# yum install tomcat –y
[root@node3~]# cd /var/lib/tomcat/webapps/
[root@node3 webapps]# mkdir -pv test/{claess,lib,WEB-INF
[root@node3 webapps]#vim test/index.jsp
<%@ page language="java" %>
  <html>
     <head><title>TomcatA</title></head>
   <body>
    <h1><font color="red">TomcatA.linuxinfo.top</font></h1>
   <tablealign="centre" border="1">
  <tr>
    <td>SessionID</td>
    <% session.setAttribute("linuxinfo.top","linuxinfo.top");%>
   <td><%=session.getId() %></td>
    </tr>
     <tr>
       <td>Createdon</td>
       <td><%=session.getCreationTime() %></td>
      </tr>
     </table>
    </body>
</html>
[root@node3 ~]# systemctl restart tomcat


wKioL1igcZWCpW_tAABCZegxhxc001.jpg

         node4:           

[root@node4~]# yum install tomcat –y
[root@node4~]# cd /var/lib/tomcat/webapps/
[root@node4 webapps]# mkdir -pv test/{claess,lib,WEB-INF
[root@node4 webapps]#vim test/index.jsp
<%@ page language="java" %>
  <html>
     <head><title>TomcatB</title></head>
    <body>
<h1><font color="blue">TomcatA.linuxinfo.top</font></h1>
   <tablealign="centre" border="1">
     <tr>
    <td>SessionID</td>
    <% session.setAttribute("linuxinfo.top","linuxinfo.top");%>
         <td><%=session.getId() %></td>
         </tr>
         <tr>
         <td>Createdon</td>
         <td><%=session.getCreationTime() %></td>
         </tr>
      </table>
    </body>
</html>
[root@node4 ~]# systemctl restart tomcat

                   

wKiom1igcaewFQhAAABC-A4JPwM602.jpg

      

Nginx配置      

   node2

[root@node2~]# vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
 
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status$body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';
    upstream tomcatser {   #服務器組 配置負載均衡
              server 172.16.76.30:8080;
              server 172.16.76.40:8080;
     #       ip_hash
}
    access_log  /var/log/nginx/access.log  main;
 
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
 
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
 
  
    include/etc/nginx/conf.d/*.conf;
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        # Load configurationfiles for the default server block.
        include/etc/nginx/default.d/*.conf;
 
              #location 代理至後端服務器組;負載均衡
      location / {
                       proxy_pass http://tomcatser;
     location ~* (\.jsp|do)${   
              proxy_passhttp://tomcatser;
    }
        }
             error_page 404 /404.html;
            location =/40x.html {
        }
        error_page 500 502 503504 /50x.html;
            location =/50x.html {
        }
}
[root@node2 ~]# systemctl restart nginx


 

tomcat配置

         tomcatA:

        1、配置tomcat session cluster

[root@node3 ~]# vim /etc/tomcat/server.xml
配置啓用集羣,將下列配置放置於<engine>或<host>中;
         <Enginename="Catalina" defaultHost="localhost"jvmRoute="TomcatA">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
        channelSendOptions="8">
 <ManagerclassName="org.apache.catalina.ha.session.DeltaManager"
          expireSessionsOnShutdown="false"
          notifyListenersOnReplication="true"/>
 <ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">
   <MembershipclassName="org.apache.catalina.tribes.membership.McastService"
                address="228.0.76.4"#組播地址;可自行定義
                port="45564"
                frequency="500"
               dropTime="3000"/>
   <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
              address="172.16.76.30"  #服務器ip地址;可僅修改此一處
              port="4000"
              autoBind="100"
              selectorTimeout="5000"
              maxThreads="6"/>
 
<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">
 <TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
 </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
    <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
 </Channel>
 <ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"
        filter=""/>
 <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
 <DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"
           tempDir="/tmp/war-temp/"
           deployDir="/tmp/war-deploy/"
           watchDir="/tmp/war-listen/"
           watchEnabled="false"/>
 <ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
 <ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

                           

2 <Engine name="Catalina"defaultHost="localhost"> 中添加 jvmRoute="TomcatA"

         <Enginename="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> 

         #tomcatB主機 則將此修改成tomcatB

3、編輯WEB-INF/web.xml,添加<distributable/>元素

         [root@node3~]# cd /var/lib/tomcat/webapps/test/WEB-INF/

[root@node3 WEB-INF]# ls

web.xml

[root@node3 WEB-INF]# cp /etc/tomcat/web.xml  .

[root@node3 WEB-INF]# vim web.xml

wKioL1igck3zfaO5AAAftbIDuvE150.jpg


 

 

node4

1  node3 tomcat配置文件server.xml拷貝一份至本機;

         [root@node4~]# cd /etc/tomcat/

[root@node4tomcat]# scp 172.16.76.30:/etc/tomcat/server.xml .

2、注:修改 <Engine> jvmRoute=TomcatB

         3、編輯WEB-INF/web.xml,添加<distributable/>元素

         [root@node3~]# cd /var/lib/tomcat/webapps/test/WEB-INF/

  [root@node3 WEB-INF]# ls

 web.xml

[root@node3 WEB-INF]# cp /etc/tomcat/web.xml  .

[root@node3 WEB-INF]# vim web.xm

wKiom1igcmTzYpbcAAAftbIDuvE739.jpg

 

 

重啓全部服務

         [root@node2~]# systemctl restart nginx

         [root@node3~]# systemctl restart tomcat

         [root@node4~]# systemctl restart tomcat

  

測試

         wKiom1igcnbTmNmsAAOOrTy7e_8510.gif-wh_50

至此實驗完成;訪問172.16.76.20/test/實現nginx負載均衡同時保持會話;

相關文章
相關標籤/搜索