Nginx+redis部署tomcat集群
一、部署环境:
两个tomcat实例部署在Ubuntu 14上,IP地址分别为192.168.1.110和192.168.1.111,Nginx和redis部署在windows7上,IP地址为192.168.1.100;
二、部署redis:
1、下载并解压redis;
2、Cmd下进入redis目录,执行:redis-server.exe redis.conf来启动redis;
三、部署Nginx:
假设两台tomcat服务所在ip地址分别为192.168.1.110和192.168.1.111,修改在Nginx目录下的Nginx.conf文件如下:

执行Nginx.exe程序,查看任务管理器,如果进程里面有nginx.exe的进程,则说明Nginx启动成功;
四、部署tomcat:
由于部署的两个tomcat实例是运行在不同的机器上,因此不需要修改端口号,如果是在一台机器上,则需要修改端口号,否则会启动不起来;
1、修改context.xml文件:
增加如下内容:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.1.100"
port="6379"
database="0"
maxInactiveInterval="60" />
2、把下面的jar文件放到tomcat的lib目录下,然后启动tomcat:
tomcat-redis-session-manager1.2.jar
jedis-2.6.2.jar
tomcat-juli.jar
tomcat-juli-adapters.jar
commons-pool2-2.0.jar
五、测试:
1、新建test.jsp测试文件:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
<h1><font color="red">tomcat1</font></h1>
Server Info:
<%
- out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br>");
System.out.println("============================");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test2.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
2、在浏览器中输入:http://192.168.1.100:81/test/test.jsp,多点击几次提交按钮,可以看到页面在两个tomcat之间切换,说明负载是成功的,并且sessionID总是相同的,也说明session是在redis上共享的;
3、使用redis客户端连接上服务器,输入keys * 可以看到建立的session,输入get sessionID可以看到具体session的数据值;
Nginx+redis部署tomcat集群的更多相关文章
- Tomcat+nginx+Keepalived部署实现集群
Tomcat+nginx+Keepalived部署实现集群 环境说明: 系统:Centos-7 主机:Centos-7 x3 IP地址: 服务器1(192.168.10.102/24) 服务器2(19 ...
- Redis存储Tomcat集群的Session
Redis存储Tomcat集群的Session 如何 做到把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 设想 是使用集群来搞定,通过通知负载均衡Nginx,取下集群中 ...
- 用redis实现TOMCAT集群下的session共享
上篇实现了 LINUX中NGINX反向代理下的TOMCAT集群(http://www.cnblogs.com/yuanjava/p/6850764.html) 这次我们在上篇的基础上实现session ...
- Shiro+Redis实现tomcat集群session共享
一.背景 当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧 ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
- redis实现tomcat集群session共享
1.部署两个tomcat节点,使用nginx实现集群(见http://www.cnblogs.com/zhangzhi0556/articles/nginx.html): 2.redis安装(见h ...
- 用Redis存储Tomcat集群的Session
作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 前段时间,我花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用 ...
- 用Redis存储Tomcat集群的Session实现session共享
一.存储 前段时间,我花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 我的设想是使用集群来搞定,通过通知负载均衡Nginx,取下集群中的To ...
- 160512、nginx+多个tomcat集群+session共享(windows版)
第一步:下载nginx的windows版本,解压即可使用,点击nginx.exe启动nginx 或cmd命令 1.启动: D:\nginx+tomcat\nginx-1.9.3>start ng ...
随机推荐
- spfa毒瘤算法
终于知道怎么卡spfa(不优化)这一毒瘤算法了 下面就是造数据代码,点数才1e5,边数379980 随便测了一组数据: count: 831841219(入队次数) 68917.096 ms(足够t到 ...
- 安装torch-opencv
安装torch-opencv torch torch-opencv opencv-3.1.0 opencv-contrib 想在torch中使用光流法,于是就希望能够调用opencv中的光流代码,而t ...
- 使用opatch工具 打补丁Patch 21352635 -(Database Patch Set Update 11.2.0.4.8)
Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...
- Linux,du、df统计磁盘情况不一致
转载:http://blog.linezing.com/?p=2136 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和 ...
- ios下 animation-play-state不起作用
这个问题在 做H5音频播放的时候 困扰了好久,PC端一切正常,单单 移动端 出现各种杂乱的问题,也是醉了. 后来经过大量的检索,发现了一种方案很不错: 请看案例 原 创 完全兼容,各个设备,很不 ...
- 福大软工 · BETA 版冲刺前准备
拖鞋旅游队BETA 版冲刺前准备 前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10083834.html 本次作业:https://edu.c ...
- TP使用易错知识点
1. redirect(U('Index/index')); //redirect函数跳转要使用U方法,不适用U方法会跳转地址出错. 2. $this->success('新增成功' ...
- 拦截器interceptors
拦截器interceptors 1. 基于HandlerMapping,对请求实施拦截,根据业务需求,基于不同的HandlerMapping定义多个拦截器 2. HandlerInterceptor接 ...
- Uboot中start.S源码的指令级的详尽解析
Uboot中start.S源码的指令级的详尽解析 https://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html ...
- 在C++里一个类成员函数多少行代码才是最好呢?
这个问题,很多同事以及学生都问我这个问题.其实这是一个比较实际的问题,因为设计一个类成员函数的好与坏,决定了一个类代码的质量. 为了回答这个问题,昨晚又重新看看斯坦福大学的编程视频,可以用下面这个截图 ...