nginx tomcat session replication

nginx tomcat Session Replication

STEP 1. 配置 web.xml

在工程中的 web.xml 文件的 节点中新增节点 ,如果使用本文章中的测试 war 包则可忽略此步骤,该 war 包已经配置了此项




  Archetype Created Web Application
  

STEP 2. Tomcat 中集群配置

2.在每个tomcat 中的server.xml文件中节点中新增下面内容,并且修改新增内容中Receiver节点address属性为当前机器ip


      
      
                    
                      
              
                 
                              
                   
         
                                
      
       
           
           

STEP 3. 部署安装包,启动tomcat

将提供的 war 包或者自己的程序部署到 tomcat 的 webapps 下,每个 tomcat 都要部署,依次启动tomcat,注意不要一起启动,要挨个启动,等待上一个tomcat启动完毕再启动下一个,看到图下 log 则证明 session replication部署成功
nginx tomcat session replication_第1张图片
ps:
确保 session 中的属性都是都要实现 java.io.Serializable
tomcat 节点不超过 5 个

STEP 4. nginx中配置

配置 nginx 中 conf 文件,如下

upstream tomcat{
    ip_hash;
    server localhost:10010;#tomcat节点一
    server localhost:10000;#tomcat节点二
}
server {
  listen 88;
  server_name  10.88.44.199;
  location / {
    root html;
    index index.html index.htm;
    proxy_pass http://tomcat;
    proxy_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Real-PORT $remote_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    }
}

STEP 5. 测试

安装提供war 测试

如果使用提供 war 包,则进行如下测试:

  1. 前端访问访问网站http://10.88.44.199:88/session-replication-demo/setSession?id=1
  2. 看到 sessionid 为如下内容
    nginx tomcat session replication_第2张图片
  3. 发现后端路由到10000节点上,关闭10000节点
    nginx tomcat session replication_第3张图片
  4. 再次访问网站,发现已经路由到了10011节点上,而sessionid 没有改变,测试成功
    nginx tomcat session replication_第4张图片

自己项目测试

如果自己的项目则按如下原理进行测试:
1.访问 nginx 前端,查看sessionid ,记录下来
2.查看发送到哪个 tomcat 上,停止tomcat
3.再次访问网站,查看 sessionid 是否改变,如果没有改变则证明 session 复制成功

你可能感兴趣的:(nginx,tomcat,session)