tomcat+nginx+redis集群试验

redis的安装不说了


只说处理session的问题。


首先要下载三个包:tomcat-redis-session-manager.jar and jedis-2.0.0.jar,和commons-pool-1.6.jar,最开始用的包是commons-pool-2点多的,但是不是启动tomcat的时候报错,说找不到org.apache.commons.pool什么什么类,然后我把commons-pool-2点多的那个jar包解压后看到它的包名是org.apache.commons.pool2,所以才会发生上述的错误,因此我就换成了commons-pool-1.6.jar。然后启动成功。

然后在tomcat的conf/server.xml中的Host节点中配置如下:

 <Context path="" docBase="/usr/local/tomcat/webapps/web" debug="0" reloadable="true">
        <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
        <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
            host="localhost"
            port="6379"
            database="0"
            maxInactiveInterval="60"
         />
</Context>



本来是照着官网https://github.com/jcoleman/tomcat-redis-session-manager,这个上面配置的,但是报错,xml解析错误,把注释去掉就好了。


nginx安装之前的博客中有,下面说一下配置:


在http节点中,添加如下:

upstream myproject {
<span style="white-space:pre">	</span>#这个是配置后端的tomcat,我是在本地启动了两个tomcat,一个端口为8080,一个为8081
       server localhost:8080;
       server localhost:8081;

<span style="white-space:pre">	</span>#下面这三行可以注释掉,这是因为之前用nginx配置根据jvm进行负载均衡
     #  server localhost:8080 srun_id:jvm1;
     #  server localhost:8081 srun_id:jvm2;
     #  jvm_route $cookie_JSESSIONID|sessionid reverse;
    }


在location节点下配置:
 location / {
        #     root   html;
        #    index  index.html index.htm;
        add_header Cache-Control 'no-store';
         client_max_body_size 100m;
         proxy_set_header Host $http_host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #         proxy_cache Z;
         proxy_cache_valid 200 1m;
<span style="white-space:pre">	</span>#重要的是这里,这里的Myproject和上面的那段配置中的myproject名字一样就可以了,非常简单
         proxy_pass   http://myproject;
        }


两个tomcat,端口设为不一样的,然后每个tomcat里面部署一个项目,当然项目非常简单,tomcat1里面有一个index.jsp,一个test.jsp,tomcat2里面有一个index.jsp

tomcat1中的index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<html>
<body>

SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 111111锛.);
%>

<%=(String)session.getAttribute("user")%>
</body>
</html>

tomcat1中的test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<html>
<body>
<%
       session.setAttribute("user","12345");
%>

        test session;
</body>
</html>

tomcat2中的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<html>
<body>
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 222222锛.);
%>


<%=(String)session.getAttribute("user")%>
</body>
</html>

两个tomcat的server.xml都需要配置,两个tomcat都需要把那三个包放在tomcat目录的lib目录下面。完了之后就可以分别启动两个tomcat了。


然后进nginx的bin目录下,直接./nginx启动nginx


然后运行http://YourIP/,

会发现基本上是tomcat1-tomcat2-tomcat1-tomcat2,进每个server的频率基本一致。然后运行http://YourIP/test.jsp,页面出来之后再运行http://YourIP/,可以看到每个tomcat的index.jsp页面都打印出来了user的值。

至此,试验成功!


由于本人工作比较忙,每次写博客都写的很乱,主要是给自己看。如果大家有什么地方有疑问,或者我写的不对,可以通过评论提出来,我看到后会及时回复,和大家一起交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值