用redis实现tomcat session共享

用redis实现tomcat session共享
所需软件下载地址:
链接:https://pan.baidu.com/s/1c1P6Nzq 密码:13f5
软件列表:
 
一、安装、配置 Redis(此处只是redis的简单安装配置)
参考:1、https://www.cnblogs.com/wangchunniu1314/p/6339416.html
2、http://www.runoob.com/redis/redis-conf.html
3、http://www.redisfans.com/
4、Redis中文网:http://www.redis.cn/
1.1、下载、解压、编译:
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar -xvf redis-4.0.6.tar.gz -C /app/
cd /app/redis-4.0.6/
make
默认配置文件位于:
/app/redis-4.0.6/redis.conf
二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
$ src/redis-server
注意:这里直接执行Redis-server 启动的Redis服务,是在前台直接运行的(效果如上图),也就是说,执行完该命令后,如果Lunix关闭当前会话,则Redis服务也随即关闭。正常情况下,启动Redis服务需要从后台启动,并且指定启动配置文件。
1.2、修改配置文件,让redis以守护进程的形式后台运行
编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)
vim redis.conf
默认是只监听在本机的本地IP地址:127.0.0.1的6379端口,
注意:#####################################
redis4.0.6 如果注释掉默认的绑定地址 #bind 127.0.0.1,
有时会导致客户端无法链接redis-server
###########################################
添加要监听的本地IP地址:
根据需要,修改监听端口
1.3、启动、停止 redis
启动:
格式:redis-server 配置文件
src/redis-server redis.conf
指定多个配置文件,启动多次,可以启动多个redis进程:
比如:创建一个端口是6380的配置文件,并启动
src/redis-server redis_port_6380.conf
关闭指定redis
src/redis-cli -p 6380 shutdown
停止:
# src/redis-cli -p 端口 shutdown
src/redis-cli -p 6379 shutdown
或者
pkill redis-server
二、安装、配置 tomcat
jdk版本:jdk1.8.0_131
2.1、所需软件:(tomcat8.5和tomcat9 都可以,此处以tomcat9为例)
apache-tomcat-8.5.20.tar.gz 或 apache-tomcat-9.0.2.tar.gz
———————————————————————————-
jdk-8u131-linux-x64.tar.gz
———————————————————————————-
commons-pool2-2.4.2.jar
jedis-2.9.0.jar
tomcat85-session-redis-1.0.jar
———————————————————————————-
下载地址:
链接:https://pan.baidu.com/s/1c1P6Nzq 密码:13f5
参考配置:
context.xml
2.2、解压tomcat、jdk到指定的目录
$ tar -xvf apache-tomcat-9.0.2.tar.gz -C /app/
$ tar -xvf jdk-8u131-linux-x64.tar.gz -C /app/
2.2.1、指定jdk或者修改jdk环境变量:
1)指定JDK
vim /app/apache-tomcat-9.0.2/bin/catalina.sh
添加如下内容:
export JAVA_HOME=/app/jdk1.8.0_131
export JRE_HOME=/app/jdk1.8.0_131/jre
2)修改java环境变量
(a)
在/etc/profile.d/目录下,创建一个.sh结尾的文件,
比如:
vim /etc/profile.d/jdk180.sh
添加如下内容:
export JAVA_HOME=/app/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
(b)
执行该脚本文件,是JAVA环境变量生效
source /etc/profile.d/jdk180.sh
2.3、拷贝Tomcat需要的3个jar文件
将下边的三个文件拷贝至:${TOMCAT_HOME}/lib目录下
commons-pool2-2.4.2.jar、jedis-2.9.0.jar、tomcat85-session-redis-1.0.jar
$ cp ./*.jar /app/apache-tomcat-9.0.2/lib/
2.4、修改context.xml文件
$ vim /app/apache-tomcat-9.0.2/conf/context.xml
添加如下内容:参考下载文件中的context.xml文件
————————————————– 分割线 ————————————————–
<Valve className=”com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve” />
<Manager className=”com.orangefunction.tomcat.redissessions.RedisSessionManager”
host=”192.168.110.83″
port=”6379″
database=”0″
maxInactiveInterval=”60″ />
————————————————– 分割线 ————————————————–
2.5、创建测试文件:
cd /app/apache-tomcat-9.0.2/webapps/
mkdir test
vim test/index.jsp
——————————————添加如下内容—————————
<%@ page language=”java” contentType=”text/html; charset=UTF-8″ import=”java.net.InetAddress”
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>
<h1>hostname:</h1>
<table border=”1″>
<tr>
<td>Session ID</td>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
————————————————————————————-
2.6、启动tomcat
/app/apache-tomcat-9.0.2/bin/startup.sh
访问测试页:tomcat测试机IP:192.168.110.82
http://192.168.110.82:8080/test/
正常显示:hostname:可以添加对应的主机名,以示区别
2.7、将已经配置好的tomcat和JDK,拷贝到其他用于负载均衡的主机 的相同路径下:
(a)关闭tomcat
/app/apache-tomcat-9.0.2/bin/shutdown.sh
(b)打包tomcat
tar -czvf apache-tomcat-9.0.2.tar.gz apache-tomcat-9.0.2
(c)拷贝tomcat 和JDK
rsync -azv -e ‘ssh -p 222’ ./apache-tomcat-9.0.2.tar.gz root@192.168.110.83:/app/
rsync -azv -e ‘ssh -p 222’ /app/software/jdk-8u131-linux-x64.tar.gz root@192.168.110.83:/app/software/
2.8、登陆192.168.110.83,解压tomcat和JDK,启动 tomcat
(a) 解压:
tar -xvf apache-tomcat-9.0.2.tar.gz
tar -xvf jdk-8u131-linux-x64.tar.gz -C /app/
(b) 启动 tomcat:
## 检查JDK,设置环境变量
## java -version
/app/apache-tomcat-9.0.2/bin/startup.sh
(c) 修改测试页,修改 hostname:83
vim /app/apache-tomcat-9.0.2/webapps/test/index.jsp
(d) 访问测试页:
三、配置Nginx
3.1、nginx主机地址:192.168.110.81
3.2、修改nginx配置文件
vim /etc/nginx/nginx.conf
upstream backend {
server 192.168.110.82:8080 max_fails=1 fail_timeout=10s;
server 192.168.110.83:8080 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
location /{
proxy_pass http://backend;
}
}
3.3、访问测试页:
刷新页面,分别访问到不同的tomcat主机,但获取的session ID相同,
说明:用Redis,实现tomcat session共享 测试成功