首页 技术 正文
技术 2022年11月21日
0 收藏 479 点赞 3,829 浏览 2116 个字

测试环境

  Nginx 1.10.1

  tomcat 7.0.70

  Redis-x64-3.2.100

说明 tomcat 8 和 redis 实现session共享 有问题。

  寻找源码 发现tomcat8 中的 catalina.jar 已经没有了 org.apache.catalina.util.LifecycleSupport 这个类。

然而这个类在redis的启动中需要加载,所以就一直报错 java.lang.NoClassDefFoundError: org/apache/catalina/util/LifecycleSupport

  lz 很无奈,只好只用了tomcat7 版本,

  这是redis 的官方说明 https://github.com/jcoleman/tomcat-redis-session-manager

Nginx-tomcat-redis——负载均衡以及session共享

  好了 进入正题

  第一步 安装 在windows  下安装 redis

  参考 : http://blog.csdn.net/renfufei/article/details/38474435

  下载地址 :https://github.com/MSOpenTech/redis

  下载或解压即可 启动命令: redis-server  redis.windows.conf

  Nginx-tomcat-redis——负载均衡以及session共享

  第二步,配置nginx 负载均衡 配置文件位置(D:\nginx-1.10.1\nginx-1.10.1\conf)

http {
...
#tomcat负载均衡
upstream mytomcats{
server 127.0.0.1:;
server 127.0.0.1:;
}
...
server {
...
listen ;
server_name localhost;
location / {
proxy_pass http://mytomcats;
}
...
}

之后启动

Nginx-tomcat-redis——负载均衡以及session共享

  第三步 配置 集群tomcat

准备两份tomcat

Nginx-tomcat-redis——负载均衡以及session共享

分别修改tomcat的端口号 一个为默认的8080  另外一个修改为9090

(D:\apache-tomcat-7.0.70-windows-x64\apache-tomcat-7.0.70-8080\conf\server.xml)

<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

  

分别在两个tomcat中的context.xml 中的 context段中添加一下内容

(D:\apache-tomcat-7.0.70-windows-x64\apache-tomcat-7.0.70-8080\conf\context.xml)

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"
port=""
database=""
maxInactiveInterval="" />

最后分别在tomcat的lib文件下添加 redis 的相关依赖jar  commons-pool-1.5.4.jar   jedis-2.6.2.jar  tomcat-redis-session-manager1.2.jar

tomcat 中项目zzxt  中的首页index.jsp  内容如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=session.getId()%><br>
<%
String msg = (String) session.getAttribute("msg");
if (null == msg) {
session.setAttribute("msg", "Hello!");
} else {
session.setAttribute("msg", msg + 0);
}
%>
<%=session.getAttribute("msg")%>
</body>
</html>

  分别启动tomcat 成功

Nginx-tomcat-redis——负载均衡以及session共享

测试结果:

成功,请求分别进入到两个tomcat中 进行轮训处理

Nginx-tomcat-redis——负载均衡以及session共享

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,581
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918