博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+tomcat9+redisson+redis+jdk1.8简单实现session共享
阅读量:5129 次
发布时间:2019-06-13

本文共 4999 字,大约阅读时间需要 16 分钟。

一、环境安装

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

安装系统: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.2.tar.gz -C /usr/local/

2.2、进入redis安装目录

cd /usr/local/redis-5.0.2

2.3、安装

make && make install

2.4、启动redis

/usr/local/redis-5.0.2/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.8.0_191-amd64/export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin/

3.5、使配置生效

source /etc/profile

4、安装tocmat

4.1、新建两个tocmat

tar -zxvf apache-tomcat-9.0.13.tar.gz -C /usr/local/cd /usr/local/mv apache-tomcat-9.0.13 tocmat1tar -zxvf apache-tomcat-9.0.13.tar.gz -C /usr/local/cd /usr/local/mv apache-tomcat-9.0.13 tocmat2

4.2、配置tomcat端口

tomcat1 Connector port改为8081tomcat2  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_OPTSexport JAVA_HOME=$JAVA_HOME

5、安装nginx

5.1、安装依赖包

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

5.2、解压

tar -zxvf nginx-1.14.1.tar.gz

5.3、进入安装目录

cd nginx-1.14.1

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都要配置

具体参数可参考:

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

配置redisson

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

{   "singleServerConfig":{      "idleConnectionTimeout":10000,      "pingTimeout":1000,      "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":32,      "connectionPoolSize":64,      "database":0,      "dnsMonitoringInterval":5000   },   "threads":0,   "nettyThreads":0,   "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.jsphttp://192.168.3.12:8082/mytest/index.jsp

1.4、nginx配置

修改nginx.conf配置

http节点中添加如下配置

upstream backend {        server 127.0.0.1:8081 max_fails=1 fail_timeout=10s;        server 127.0.0.1:8082 max_fails=1 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" %>  tomcat1      
SessionID <%= session.getId() %>
SessionCreatedTime <%= session.getCreationTime() %>
ServerName <%=request.getServerName()%>
SessionPort <%=request.getServerPort()%>
CustomString This is the first tomcat

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

<%@ page language="java" %>  tomcat2      
SessionID <%= session.getId() %>
SessionCreatedTime <%= session.getCreationTime() %>
ServerName <%=request.getServerName()%>
SessionPort <%=request.getServerPort()%>
CustomString This is the second tomcat

 

3、重新启动redis,tomcat,nginx

4、输入地址访问

http://192.168.3.12/mytest/

5、结果

点击刷新按钮

 

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

 登陆redis

redis-cli

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

 

转载于:https://www.cnblogs.com/qq931399960/p/10015195.html

你可能感兴趣的文章
我写的第4个程序(日志最近行读取函数)
查看>>
hdu 1875 畅通工程再续
查看>>
CentOs6和Centos7安装docker
查看>>
zabbix 之 PHP
查看>>
TCP/ip协议栈之内核调优
查看>>
重型数控机床技术:铣镗加工中心的主轴结构
查看>>
jdbcUtils连接数据库
查看>>
bzoj 3611: [Heoi2014]大工程
查看>>
6 spark 存储体系 --内存管理
查看>>
PDF/WORD/EXCEL 图片预览
查看>>
数据库优化方面的事情
查看>>
onRetainNonConfigurationInstance方法状态保存
查看>>
DevExpress组件之——TreeList组件
查看>>
P2916 [USACO08NOV]安慰奶牛Cheering up the Cow
查看>>
PV操作(转)
查看>>
软考笔记第六天之各排序算法的实现
查看>>
修补PHPRPC_Client中(JAVA版本),创建Socket连接时Timeout不起作用
查看>>
第五次作业160809308周子济
查看>>
Latex在texstudio中的参考文献编译
查看>>
Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)
查看>>