一、环境安装

由于资源限制,在虚拟机中模拟测试,一台虚拟机,所有软件均安装到该虚拟机内

安装系统:CentOS Linux release 7.4.1708 (Core)

CentOS安装选择版本:Basic Web Server

redis版本:5.0.2

jdk版本:1.8.0_191

nginx版本:1.14.1

tomcat版本:9.0.13

1、安装gcc

yum -y installed gcc

2、安装redis

2.1、解压

tar -zxvf redis-5.0..tar.gz -C /usr/local/

2.2、进入redis安装目录

cd /usr/local/redis-5.0.

2.3、安装

make && make install

2.4、启动redis

/usr/local/redis-5.0./src/redis-server --protected-mode no &

3、安装jdk

3.1、查询已安装jdk

rpm -qa | grep jdk | grep -v grep

3.2、若为openjdk或者非1.8版本,则卸载

rpm -e --nodeps “具体安装jdk”

3.3、安装

rpm -ivh jdk-8u191-linux-x64.rpm

3.4、设置环境变量

/etc/profile中添加如下配置

export JAVA_HOME=/usr/java/jdk1..0_191-amd64/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin/

3.5、使配置生效

source /etc/profile

4、安装tocmat

4.1、新建两个tocmat

tar -zxvf apache-tomcat-9.0..tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-9.0. tocmat1 tar -zxvf apache-tomcat-9.0..tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-9.0. tocmat2

4.2、配置tomcat端口

tomcat1 Connector port改为8081
tomcat2 server port改为8006,Connector port改为8082,AJP Connector port改为8010

如果有需要,可在tomcat/bin目录下新建setenv.sh文件,来设置内存大小等参数,也可在catalina.sh中直接设置,本例属于测试,未进行该设置

CATALINA_PID="$CATALINA_BASE/tomcat.pid"
JAVA_OPTS="-server -Xms1000m -Xmx1000m -XX:PermSize=128M -XX:MaxPermSize=128M"
export JAVA_OPTS
export JAVA_HOME=$JAVA_HOME

5、安装nginx

5.1、安装依赖包

yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

5.2、解压

tar -zxvf nginx-1.14..tar.gz

5.3、进入安装目录

cd nginx-1.14.

5.4、测试安装环境,默认将安装在/usr/local/nginx下

./configure

若configure未通过,则需要处理出现的异常,否则直接make && make install也是会出错

5.5、编译安装

make && install

5.6、检查是否安装成功

http://192.168.3.12

若启动正常,页面不能访问,则检查是否防火墙未关闭或者80端口未允许访问,关闭防火墙方法

systemctl stop firewalld

二、session共享和负载均衡配置

1、tocmat配置

1.1、在tomcat/conf/context.xml中增加RedissonSessionManager,tomcat1和tomcat2都要配置

<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/>

具体参数可参考:

https://github.com/redisson/redisson/blob/dfcf183fb99e2718a748148942926256f650ee24/redisson-tomcat/README.md

配置redisson

1.2、在tomcat安装目录下新建redisson.conf,添加如下配置

{
"singleServerConfig":{
"idleConnectionTimeout":,
"pingTimeout":,
"connectTimeout":,
"timeout":,
"retryAttempts":,
"retryInterval":,
"password":null,
"subscriptionsPerConnection":,
"clientName":null,
"address": "redis://127.0.0.1:6379",
"subscriptionConnectionMinimumIdleSize":,
"subscriptionConnectionPoolSize":,
"connectionMinimumIdleSize":,
"connectionPoolSize":,
"database":,
"dnsMonitoringInterval":
},
"threads":,
"nettyThreads":,
"codec":{
"class":"org.redisson.codec.JsonJacksonCodec"
},
"transportMode":"NIO"
}

本例中使用的为单实例redis,具体参数配置可参考:
https://github.com/redisson/redisson/wiki/2.-Configuration#26-single-instance-mode
redis集群可参考如下链接中其他配置
https://github.com/redisson/redisson/wiki/2.-Configuration

1.3、拷贝jar包

https://github.com/redisson/redisson/tree/dfcf183fb99e2718a748148942926256f650ee24/redisson-tomcat下载redisson-all-3.9.1.jar和redisson-tomcat-9-3.9.1.jar,拷贝到${catalina.base}/lib下

分别启动tomcat1和tomcat2,验证是否可正常访问

http://192.168.3.12:8081/mytest/index.jsp
http://192.168.3.12:8082/mytest/index.jsp

1.4、nginx配置

修改nginx.conf配置

http节点中添加如下配置

upstream backend {
server 127.0.0.1: max_fails= fail_timeout=10s;
server 127.0.0.1: max_fails= fail_timeout=10s;
}

location节点中增加proxy_pass项

location / {
root html;
index index.html index.htm;
proxy_pass http://backend;
}

三、测试

1、tomcat1/webapps/新建目录mytest,mytest目录下新建index.jsp,内容如下

<%@ page language="java" %>
<html>
<head><title>tomcat1</title></head>
<body>
<table align="centre" border="">
<tr>
<td>SessionID</td>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>SessionCreatedTime</td>
<td><%= session.getCreationTime() %></td>
</tr>
<tr>
<td>ServerName</td>
<td><%=request.getServerName()%></td>
</tr>
<tr>
<td>SessionPort</td>
<td><%=request.getServerPort()%></td>
</tr>
<tr>
<td>CustomString</td>
<td>This is the first tomcat</td>
</tr>
</table>
</body>
</html>

2、tomcat2/webapps/新建目录mytest,mytest目录下新建index.jsp,内容如下

<%@ page language="java" %>
<html>
<head><title>tomcat2</title></head>
<body>
<table align="centre" border="">
<tr>
<td>SessionID</td>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>SessionCreatedTime</td>
<td><%= session.getCreationTime() %></td>
</tr>
<tr>
<td>ServerName</td>
<td><%=request.getServerName()%></td>
</tr>
<tr>
<td>SessionPort</td>
<td><%=request.getServerPort()%></td>
</tr>
<tr>
<td>CustomString</td>
<td>This is the second tomcat</td>
</tr>
</table>
</body>
</html>

3、重新启动redis,tomcat,nginx

4、输入地址访问

http://192.168.3.12/mytest/

5、结果

点击刷新按钮

可以发现,两次访问,SessionID都是相同的,并且title和自定义的字符串不一样,说明分别访问了tomcat1和tomcat2

登陆redis

redis-cli

输入以下命令可发现,session已经存放到了redis中,并且默认的超时时间为30 min

nginx+tomcat9+redisson+redis+jdk1.8简单实现session共享的更多相关文章

  1. keepalived+nginx+tomcat+redis实现负载均衡和session共享(原创)

    keepalived+nginx+tomcat+redis实现负载均衡和session共享 直接上链接,码了一天,就不再重写了,希望能帮到大家,有问题欢迎留言交流.

  2. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  3. tomcat+nginx+redis实现均衡负载、session共享(一)

    在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一些状况: 1.用户还在操作,被强迫终止了(我们可以看日志等没人操作的时候更新,但总可能会有万一) ...

  4. tomcat+nginx+redis实现均衡负载、session共享(二)

    今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html. 1.red ...

  5. 【转载】tomcat+nginx+redis实现均衡负载、session共享(一)

    http://www.cnblogs.com/zhrxidian/p/5432886.html 在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一 ...

  6. (转)tomcat+nginx+redis实现均衡负载、session共享(一)

    在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一些状况: 1.用户还在操作,被强迫终止了(我们可以看日志等没人操作的时候更新,但总可能会有万一) ...

  7. tomcat+nginx+redis实现均衡负载以及session共享

    1.redis简介及下载安装 作为这次的主角,相信大家对redis应该都一定印象,redis是一款开源的高性能key-value数据库,拥有丰富的键值储存类型,并提供多种语言的API. 与一般数据库不 ...

  8. 基于nginx tomcat redis分布式web应用的session共享配置

    一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...

  9. nginx redis tomcat 分布式web应用 session共享

    目标:多台tomcat 使用redis实现共享session.redis的安装请参阅:centos上安装redis nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.w ...

随机推荐

  1. Vue基础01vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令

    自学vue框架,每天记录重要的知识点,与大家分享!有不足之处,希望大家指正. 本篇将讲述:vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令 前期学习基础,使用vue. ...

  2. CNN中,1X1卷积核到底有什么作用呢?

    CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...

  3. AWS专线服务总结和疑问

    1.AWS专线服务的入口, 从介绍页上可以看到,有如下功能: (1)专线可以连接AWS云主机和传统的数据中心或者分支机构. (2)专线可以连接AWS云主机和托管区的主机. 连接要素: (1)需要使用V ...

  4. getprop从哪获取属性

    Android SystemProperties设置/取得系统属性的用法总结 通过调查得知,Android系统中取得/设置系统属性的用法参考以下3篇文章就足够了. 1.Android SystemPr ...

  5. myeclipse10 blue版激活码

    http://blog.itpub.net/27042095/viewspace-1164998/

  6. C#-事件(十八)

    概述 事件(Event) 基本上说是一个用户操作,如按键.点击.鼠标移动 使用事件,可以很方便地确定程序执行顺序 事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联 包含事件的 ...

  7. CentOS6.5内 MySQL5.7.19编译安装

    作为博主这样的Linux菜鸟,CentOS下最喜欢的就是yum安装.但有时候因为特殊情况(例如被墙等),某些软件可能没办法直接通过yum来安装,这时候我们可以使用编译安装或者直接二进制文件安装. 本博 ...

  8. VS调式时出现异常,在输入法是中文状态下,输入框输入字母再回车,会造成页面关闭,vs退出调式

    解决方案:关闭浏览器窗口关闭时,停止调试 .就恢复正常,无异常

  9. MySQL数据库有哪些安全相关的参数需要修改?

    https://dev.mysql.com/doc/refman/5.7/en/security-options.htmlhttps://dev.mysql.com/doc/refman/5.7/en ...

  10. ugui SetParent在安卓上一个诡异bug

    问题描述 我的环境:Unity3D 5.3.7 出问题机型:安卓模拟器.部分低配安卓机型(比如:红米2A) 以下代码是设置某个节点的父节点,在PC.Editor.大部分手机上都是正常的,但问题机型上, ...