windows tomcat 集群配置入门 redis5.0.9 tomcat8.5 nginx1.18

一直以来做的都是内网oa系统,今天学习了一下分布式系统部署,记录一下实践过程及问题:

一、配置

tomcat8.5 下载地址:http://tomcat.apache.org/

redis 下载地址:https://github.com/tporadowski/redis/releases

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

另外需要下载jar包:https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/tag/4.0

我的测试目录:

1、配置多个tomcat

tomcat 8.5复制几遍,我这里复制了三个,修改tomcat的server.xml保证三个tomcat端口不一样:

例:

tomcat1:

tomcat2:

2、配置nginx

nginx 端口默认80,我这边修改为8060(nginx-1.18.0/conf/nginx.conf)

接下来配置集群:

在http下增加如下配置:

upstream tomcat_client {
    #ip_hash;#此为根据IP地址分配,同一个ip总会分配到同一个服务
    #weight权重,默认1,权重越大访问概率越大
    server localhost:8081 weight=5;
    server localhost:8082 weight=5;
    server localhost:8083 weight=5;
}

开启反向代理:在location /中增加如下代码:

proxy_pass http://tomcat_client; #与upstream 设置名称相同
    proxy_redirect default;
    #设置代理
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;

图:

此时集群已经配置好,启动三个tomcat 与 nginx ,访问 nginx,会轮流分配到三个tomcat。为每个tomcat设置不同首页,不停刷新可以看出来。

3、配置redis

设置redis内存最大值:我这里设置512mb(Redis-x64-5.0.9/redis.windows.conf)

4、最后配置tomcat支出redis的jar包啦:

还记得之前下载的jar包么:

解压:

照例需要配置:(tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties)

ip与端口要和redis一致。

然后将conf 和lib 两个文件夹,覆盖进 tomcat 的conf和lib ,每个tomcat都要覆盖哦。

最最最后一步,修改tomcat的配置文件,增加以下代码:(apache-tomcat-8.5.39(1)/conf/context.xml)

<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />

图:

可以从jar包解压文件夹中的readme中拷贝,自己拼写千万不要写错字。

5、最后,启动redis、nginx、tomcat,查看你的成果吧!

二、测试

1、启动redis

命令行:cmd 移动到 redis 主目录,然后执行  redis-server.exe redis.windows.conf

关闭 : 直接叉掉窗口即可。

2、启动nginx

直接双击 nginx.exe  ,启动之后不会有窗口。

关闭:命令行:cmd 移动到nginx主目录,执行  nginx -s quit

3、启动tomcat

重写tomcat  ROOT 中的jsp页面:

tomcat1:

<%@ page pageEncoding="UTF-8" import="java.util.*" contentType="text/html; charset=UTF-8" %>
<%@ page language="java" import="java.text.SimpleDateFormat"%>
<%
  request.getSession().setAttribute("mzd","123");
  SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
  String date=simpleDateFormat.format(new Date());
%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title></title>
    </head>

    <body>
		SessionID:<%=session.getId()%>  
        <BR>  
        当前时间为:<%=date%>  
        <BR>  
        SessionPort:<%=request.getServerPort()%>  
        <BR>  
        mzd的值为:<%=session.getAttribute("mzd")%>  
       <BR>  
        <%  
        out.println("tomcat1");  
        %>
    </body>

</html>

tomcat2:

<%@ page pageEncoding="UTF-8" import="java.util.*" contentType="text/html; charset=UTF-8" %>
<%@ page language="java" import="java.text.SimpleDateFormat"%>
<%
  SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
  String date=simpleDateFormat.format(new Date());

%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title></title>
    </head>

    <body>
		SessionID:<%=session.getId()%>  
        <BR>  
        当前时间为:<%=date%>  
        <BR>  
        SessionPort:<%=request.getServerPort()%>  
        <BR>  
        mzd的值为:<%=session.getAttribute("mzd")%>  
       <BR>  
        <%  
        out.println("tomcat2");  
        %>
    </body>

</html>

测试结果:

刷新:

成功!session同步了!

三、问题:

在配置过程中还是遇到一些问题的,比如:

1、redis 启动无反应,执行命令行之后,没有报错也没有任何反应

原因:maxmemory 前面不能有空格

2、配置完tomcat 的context.xml后启动报错:

注意配置代码是否拼写错误,valve 不是value,写错会报 failed to start component.....  错误

    <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
    <Manager className="tomcat.request.session.redis.SessionManager" />

className 不同版本的jar包也可能不同,可以解压查看文件名称是否正确。

四、最后,感谢这位兄弟的博客:nginx集群tomcat,session共享问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心怀寰宇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值