nginx+tomcat做负载均衡时Session共享验证过程

nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存、web server负载均衡等功能,由于其轻量级、高性能、高可靠等特点在互联网项目中有着非常普遍的应用,相关概念网上有丰富的介绍。分布式web server集群部署后需要实现session共享,针对 tomcat 服务器的实现方案多种多样,比如 tomcat cluster session 广播、nginx IP hash策略、nginx sticky module等方案,本文主要介绍了使用 redis 服务器进行 session 统一存储管理的共享方案。

  相关应用结构参照下图:

  

1、准备环境(以windows 64位系统环境为例)

nginx 下载:http://nginx.org/en/download.html

redis  下载:https://github.com/ServiceStack/redis-windows

redisson-all 下载:https://github.com/redisson/redisson/tree/master/redisson-tomcat

redisson-tomcat 下载:https://github.com/redisson/redisson/tree/master/redisson-tomcat

tomcat 自备

2、开干

a、为了在一台机器上做测试,可以复制两个tomcat,并在同一台机器上启动两个tomcat。将下载的redisson-all与redisson-tomcat分别放到tomcat的lib文件下



b、将两个tomcat都配置到环境变量


c、修改catalina.bat 将文件中所有默认出现的CATALINA_HOME,分别对应的换成CATALINA_HOME1,CATALINA_HOME2

d、在tomcat顶级目录下新建redisson.conf.里面配置成 singleServerConfig: address: "redis://127.0.0.1:6379"



e、两个tomcat的context.xml文件中都加入

 <Manager className="org.redisson.tomcat.RedissonSessionManager"
          configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/>


f、将两个tomcat设置成不同的端口(我的是8080和8081),在webapps下面新建www文件夹,并在www文件夹下新建index.jsp文件,文件的内容分别

<%@ pagelanguage="java" %>
<html>
    <head><title>Tomcat-1</title></head>
    <body>
        <%
        out.println("This is Tomcat-1");
        %>
        <br>                
        sessionID:<%=session.getId()%>
        <br>
        SessionIP:<%=request.getServerName()%>
        <br>
        SessionPort:<%=request.getServerPort()%>
    </body>

</html>

<%@ pagelanguage="java" %>
<html>
    <head><title>Tomcat-2</title></head>
    <body>
        <%
        out.println("This is Tomcat-2");
        %>
        <br>                
        sessionID:<%=session.getId()%>
        <br>
        SessionIP:<%=request.getServerName()%>
        <br>
        SessionPort:<%=request.getServerPort()%>
    </body>
</html>

通过以上步骤tomcat的相关部署完结,下面是nginx负载均衡设置

nginx的负载均衡配置,网上很多,大家可以搜索一下,这里仅附上我的配置,供参考

   upstream bimatrix_server {
        server 127.0.0.1:8080;  
        server 127.0.0.1:8081;  


    }


  location ~ /www
  {
    proxy_set_header Connection '';
    proxy_http_version 1.1;
    chunked_transfer_encoding off;
    proxy_buffering off;
    proxy_pass    http://bimatrix_server;
    client_max_body_size 8M;
    client_body_buffer_size 128k;


  }



3、启动

将redis,nginx,两个tomcat都启动




4、见证奇迹,访问http://localhost/www/





结果告诉我们,同一个浏览器访问nginx同一地址,被分配到了不同tomcat,但是seesion是一样的。验证成功


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leesmn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值