Nginx+tomcat session cluster会话保持实验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+tomcat session cluster会话保持实验相关的知识,希望对你有一定的参考价值。

nginx+tomcat session cluster会话保持实验



实验要求:

1nginx+tomcat 负载均衡

2、会话保持

 

实验拓扑

技术分享

         ip网络规划

         Nginxnode2:172.16.76.20

         tomcatAnode3:172.16.76.30

         tomcatBnode4:172.16.76.40

 

基础配置

         node2:

                   [[email protected]~]# yum install nginx –y

         node3:    

[[email protected]~]# yum install tomcat –y
[[email protected]~]# cd /var/lib/tomcat/webapps/
[[email protected] webapps]# mkdir -pv test/{claess,lib,WEB-INF
[[email protected] 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>
[[email protected] ~]# systemctl restart tomcat


技术分享

         node4:           

[[email protected]~]# yum install tomcat –y
[[email protected]~]# cd /var/lib/tomcat/webapps/
[[email protected] webapps]# mkdir -pv test/{claess,lib,WEB-INF
[[email protected] 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>
[[email protected] ~]# systemctl restart tomcat

                   

技术分享

      

Nginx配置      

   node2

[[email protected]~]# 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 {
        }
}
[[email protected] ~]# systemctl restart nginx


 

tomcat配置

         tomcatA:

        1、配置tomcat session cluster

[[email protected] ~]# 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/>元素

         [[email protected]~]# cd /var/lib/tomcat/webapps/test/WEB-INF/

[[email protected] WEB-INF]# ls

web.xml

[[email protected] WEB-INF]# cp /etc/tomcat/web.xml  .

[[email protected] WEB-INF]# vim web.xml

技术分享


 

 

node4

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

         [[email protected]~]# cd /etc/tomcat/

[[email protected]]# scp 172.16.76.30:/etc/tomcat/server.xml .

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

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

         [[email protected]~]# cd /var/lib/tomcat/webapps/test/WEB-INF/

  [[email protected] WEB-INF]# ls

 web.xml

[[email protected] WEB-INF]# cp /etc/tomcat/web.xml  .

[[email protected] WEB-INF]# vim web.xm

技术分享

 

 

重启所有服务

         [[email protected]~]# systemctl restart nginx

         [[email protected]~]# systemctl restart tomcat

         [[email protected]~]# systemctl restart tomcat

  

测试

         技术分享

至此实验完成;访问172.16.76.20/test/实现nginx负载均衡同时保持会话;


本文出自 “秋季” 博客,请务必保留此出处http://lxlxlx.blog.51cto.com/3363989/1897149

以上是关于Nginx+tomcat session cluster会话保持实验的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7 nginx+tomcat+redis session处理方案之session复制

Nginx+tomcat+memcached缓存共享session

Nginx+Tomcat+Memcache实现负载均衡及Session共享

使用Redis存储Nginx+Tomcat负载均衡集群的Session

nginx+Tomcat反向代理实现session会话保持

Tomcat+Redis+Nginx实现session共享(Windows版)