首页 > 数据库 >nginx1.20-tomcat9-redisson集群,好像不怎么完善

nginx1.20-tomcat9-redisson集群,好像不怎么完善

时间:2023-08-02 18:46:19浏览次数:55  
标签:nginx1.20 redisson tomcat jar nginx 3.23 conf tomcat9

配置信息

在同一台服务器上使用nginx做反向代理与两个tomcat组成简易tomcat集群

使用

nginx端口80

tomcat1端口21005,21080,21009

tomcat2端口22005,22080,22009

配置过程

1. 先下载apache-tomcat-9.0.78,解压到两个目录,分别为tomcat1和tomcat2

根据上方配置信息分别对两个目录中的/conf/server.xml进行修改

   <Resource name="bean/redisson"
       auth="Container"
       factory="org.redisson.JndiRedissonFactory"
       configPath="${catalina.base}/conf/redisson.yaml"
       closeMethod="shutdown"/>

 

 配置session共享部分,修改/conf/context.xml

<Context>
    <ResourceLink name="bean/redisson"
       global="bean/redisson"
       type="org.redisson.api.RedissonClient" />

    <Manager className="org.redisson.tomcat.JndiRedissonSessionManager"
       readMode="REDIS"
       jndiName="bean/redisson" />
</Context>

在/conf/目录中添加 redisson.yaml配置文件(更多配置可以参考 https://github.com/redisson/redisson/wiki/2.-Configuration)

singleServerConfig:
  idleConnectionTimeout: 10000
  connectTimeout: 10000
  timeout: 3000
  retryAttempts: 3
  retryInterval: 1500
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  address: "redis://127.0.0.1:6379"
  subscriptionConnectionMinimumIdleSize: 1
  subscriptionConnectionPoolSize: 50
  connectionMinimumIdleSize: 24
  connectionPoolSize: 64
  database: 0
  dnsMonitoringInterval: 5000
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"

下载redisson-tomcat-9-3.23.2.jar, redisson-all-3.23.2.jar至/tomcat/lib内

 

2. 部署nginx,修改/conf/nginx.conf配置文件

 3. 安装配置redis,下载后启动

 4. 部署测试页面

/tomcat1/webapps/ROOT/index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta charset="UTF-8" />
<%
request.getSession().setAttribute("ss1", "ss111");
%>
    </head>
    <body>
        <table align="center" border="1">
            <tr>
              <td>cluster-desc1</td>
              <td>This is the first tomcat</td>
            </tr>
            <tr>
              <td>SessionID</td>
              <td><%= request.getSession().getId() %></td>
            </tr>
            <tr>
              <td>SessionCreatedTime</td>
              <td><%= request.getSession().getCreationTime() %></td>
           </tr>
           <tr>
              <td>ServerName</td>
              <td><%=request.getServerName()%></td>
           </tr>
           <tr>
              <td>SessionPort</td>
              <td><%=request.getServerPort()%></td>
           </tr>
           <tr>
              <td>ss1</td>
              <td><%=request.getSession().getAttribute("ss1") %></td>
           </tr>
           <tr>
              <td>ss2</td>
              <td><%=request.getSession().getAttribute("ss2") %></td>
           </tr>
        </table>
    </body>
</html>

/tomcat2/webapps/ROOT/index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta charset="UTF-8" />
<%
request.getSession().setAttribute("ss2", "ss222");
%>
    </head>
    <body>
        <table align="center" border="1">
            <tr>
              <td>cluster-desc2</td>
              <td>This is the first tomcat</td>
            </tr>
            <tr>
              <td>SessionID</td>
              <td><%= request.getSession().getId() %></td>
            </tr>
            <tr>
              <td>SessionCreatedTime</td>
              <td><%= request.getSession().getCreationTime() %></td>
           </tr>
           <tr>
              <td>ServerName</td>
              <td><%=request.getServerName()%></td>
           </tr>
           <tr>
              <td>SessionPort</td>
              <td><%=request.getServerPort()%></td>
           </tr>
           <tr>
              <td>ss1</td>
              <td><%=request.getSession().getAttribute("ss1") %></td>
           </tr>
           <tr>
              <td>ss2</td>
              <td><%=request.getSession().getAttribute("ss2") %></td>
           </tr>
        </table>
    </body>
</html>

5.启动redisson,tomcat1,tomcat2,nginx后访问http://127.0.0.1:21080/index.jsp,http://127.0.0.1:22080/index.js,phttp://127.0.0.1:80/index.jsp能够访问到相应内容,sessionId相同

redisson /redis-server.exe

tomcat /bin/startup.bat

nginx /start nginx

 

6.程序下载

https://repo1.maven.org/maven2/org/redisson/

redisson-all-3.23.2.jar

Tomcat 7.x - redisson-tomcat-7-3.23.2.jar

Tomcat 8.x - redisson-tomcat-8-3.23.2.jar

Tomcat 9.x - redisson-tomcat-9-3.23.2.jar

Tomcat 10.x - redisson-tomcat-10-3.23.2.jar

Try Redisson PRO with ultra-fast performance and support by SLA.

标签:nginx1.20,redisson,tomcat,jar,nginx,3.23,conf,tomcat9
From: https://www.cnblogs.com/shichq/p/17601482.html

相关文章

  • Tomcat9 无法启动组件[Connector[AJP/1.3-8009]]
    无法启动组件[Connector[AJP/1.3-8009]]在tomcat中开启ajp后,启动tomcat遇到错误无法启动组件[Connector[AJP/1.3-8009]]。错误原因缺少配置项secretRequired。tomcat9提供的默认的AJP配置如下:<Connectorprotocol="AJP/1.3"address="::1"port="800......
  • java RedissonClient用法
    JavaRedissonClient用法Redis是一个开源的、基于内存的数据结构存储系统,它可以作为缓存、消息队列和分布式锁等多种用途。Redisson是一个基于Redis的Java驱动库,它提供了一些方便易用的接口和功能来操作Redis。RedissonClient是Redisson的核心对象,它用于与Redis服务器建立连接并......
  • springboot~redisson中使用lua脚本的问题
    起因事情是这样的,我在通过redission进行限流时,用到了在lua脚本里进行数值计算,而我在本地测试过程中,发现所有tonumber()方法时,返回值都是nil,这个原因最后找到了,是没有配置序列化的方式,出现错误提示如下:org.redisson.client.RedisException:ERRErrorrunningscript(calltof_......
  • 分布式架构-Redisson 框架介绍使用
    分布式架构-Redisson框架介绍使用**一、Redisson**Redisson是架设在Redis基础上的一个Java驻内存数据网格。在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本......
  • Redissonclient怎么添加数据
    Redisson是一个基于Redis的分布式Java对象和服务的框架。RedissonClient是Redisson的主要接口之一,用于与Redis进行交互。要添加数据到Redis中,可以使用RedissonClient提供的多种方法,包括常见的数据结构如字符串、列表、集合、有序集合和哈希表等。首先,我们需要在项目中添加Redisson......
  • redisson实现序列化的方法
    引用:https://www.fengnayun.com/news/content/102781.html这篇文章运用简单易懂的例子给大家介绍redisson实现序列化的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-MemoryDataGrid)。Redis......
  • springboot中解决redissonClien无法注入,封装工具雷
    引用:https://blog.csdn.net/feiying0canglang/article/details/120464693问题来源前几天遇到一个循环依赖问题,是RedissonClient这个bean引起的。RedissonClient是由一个配置类(@Configuration注解的类)提供的,这配置类在初始化时(@PostConstruct注解的方法中)去获取RedissonClient这......
  • redisson对单个json的单个字段进行数值操作 - lua脚本
    @OverridepublicStringupdateJson(Stringkey,Stringfield,longnum,longlimit){Stringscript="localt=redis.call('get',KEYS[1]);\n"+"localj;\n"+"iftthen......
  • 基于SpringBoot整合Redisson的延迟队列
    一、需求:     1.订单下单超过30分钟以后,如果还未支付,则自动转为取消支付状态 2.订单收货超过七天以后,如果还未评价,则自动转为好评 3.等类似需求二、实现步骤:    1. 引入redisson依赖<dependency><groupId>org.rediss......
  • Redisson分布式锁和同步器详解-官方原版
    一、锁定基于Redis的Java分布式可重入锁对象,并实现了锁接口。如果获取锁的Redisson实例崩溃,则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁watchdog,当锁持有者Redisson实例处于活动状态时,它会延长锁的到期时间。默认情况下,lockwatchdog超时为30秒,可以通过Config......