nginx+redis+tomcat实现session共享的服务集群

        nginx反向代理tomcat集群能够解决高并发访问的问题,然后把session统一放到redis里面,可以解决session跨项目共享的的问题,顺便还解决了经典的单点登录问题。

实验环境: centos6.5  32位系统   nginx1.10.3  tomcat7.x   redis-3.2.8,jdk1.7

所需jar包:commons-pool-1.6.jar ,  tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar  ,  jedis2.9

拓扑图如下:

nginx+redis+tomcat实现session共享的服务集群_第1张图片

这里用到的是nginx负载均衡的轮询策略。

将以下jar包放到tomcat的lib目录

commons-pool-1.6.jar ,  tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar  ,  jedis2.9

在tomcat的conf目录的context.xml文件中添加如下配置


   

在68.1和68.129的tomcat服务器上均做如上配置。

nginx的配置如下:

   #...
   upstream wx.com {       #配置服务集群     
      server 192.168.68.1:8080  weight=1;    #weight越大,处理请求的概率就越高
      server 192.168.68.129:8080  weight=1;
    }

    server {
        listen       80;      
        server_name  192.168.68.128;
        
      location /NginxProj {  #配置反向代理站点
           #指定反向代理的服务集群,注意wx.com是集群名称,要和upstream中的wx.com一致
           proxy_pass http://wx.com;     
           proxy_redirect off;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
   }
#....

jsp测试页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.net.InetAddress"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>







  
    
    nginx演示
	
	
	    

<% 
    String serverIp=InetAddress.getLocalHost().getHostAddress();
	String serverInfo=application.getServerInfo();
	Properties props=System.getProperties(); //获得系统属性集    
	String osName = props.getProperty("os.name"); //操作系统名称    
	String osArch = props.getProperty("os.arch"); //操作系统构架    
	String osVersion = props.getProperty("os.version"); //操作系统版本 
%>

sessionId:<%=session.getId() %>

服务器ip:<%=serverIp %>

tomcat服务器信息:<%=serverInfo %>

服务器操作系统名称 :<%=osName %>

服务器操作系统构架 :<%=osArch %>

服务器操作系统版本 :<%=osVersion %>

运行结果如图:

nginx+redis+tomcat实现session共享的服务集群_第2张图片

再次刷新,服务器变了,sessionid没变,如下:

nginx+redis+tomcat实现session共享的服务集群_第3张图片

查看redis服务器上的session:

nginx+redis+tomcat实现session共享的服务集群_第4张图片

ok,实验成功了!

=====================================

如果觉得帮到了你,可以小小打赏一下,您的支持是作者源源不断的动力

nginx+redis+tomcat实现session共享的服务集群_第5张图片

 

你可能感兴趣的:(nginx)