884  
查询码:00000076
tomcat8.5.14+redis+nginx实现集群、session共享
作者: wyasw 于 2020年03月29日 发布在分类 / Linux / 服务安装 下,并于 2020年03月29日 编辑
tomcat session共享

tomcat8.5.14+redis+nginx实现集群、session共享

1.1 知识点

1)什么是集群

集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。

说白了就是同一个业务,部署在多个服务器上。

2)集群所遇到的问题

session共享

基于NFSSession共享

基于数据库的Session共享

基于CookieSession共享

基于缓存的Session共享(本次选用这种方式)

3)集群优点

提高性能

降低成本

提高可扩展性

增强可靠性

测试环境

JDK版本:JDK1.8

Tomcat版本:apache-tomcat-8.5.14

Redis版本:redis-2.4.5

Nginx版本:nginx-1.11.6

需要的jar

放入Tomcat下的lib文件夹下:

commons-pool2-2.4.2.jar

jedis-2.9.0.jar

javazhan-tomcat-redis-session.jar

下载地址:

链接:https://pan.baidu.com/s/13lTl1ftfbdzXLH1jAiB7og 密码:ejq7

1.2 修改配置文件

1.2.1  Tomcat

复制apache-tomcat-8.5.14两份,分别命名apache-tomcat-81apache-tomcat-82。为了能启动两个tomcat需要修改server.xml的端口。如图:

修改tomcat的端口

81-8080

修改tomcat的端口

82-8090

配置 context.xml 文件:session共享

<Context>

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

host="192.68.1.5"

port="6379"

database="4"

password="123456"

maxInactiveInterval="60" />

</Context>

说明:

如果tomcat配置中,将manager放在server.xml中,那么使用maven做热部署时,会发生失败。所以,推荐放在context.xml中。

1.2.2  Nginx

修改conf目录下的nginx.conf文件

upstream wyasw.com {

## ip_hash;

server  127.0.0.1:8080 weight=1;

server  127.0.0.1:8090 weight=1;

}

server {

listen       80;

server_name www.wyasw.com;

location /

{

proxy_set_header Host $host;

proxy_set_header X-Real-Ip $remote_addr;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http:// wyasw.com;

}

}

1.3 新建web项目

新建文件夹新建test.jsp,放到tomcat文件夹下webapps下。

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="java.util.*"%>

<!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>ClusterApp Test</title>

</head>

<body>

访问的Nginx IP:<%=request.getServerName()%>

<BR>

Tomcat SessionPort:<%=request.getServerPort()%>

<%

out.println("Tomcat Server Info=" + request.getLocalAddr() + " : "     + request.getLocalPort() + "<br>");

out.println("当前 Session ID=" + session.getId() + "<br>");

%>

<%

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("Session列表");

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="sessiontest.html" method="POST">

名称:<input type=text size=20 name="dataName"> <br/>

:<input type=text size=20 name="dataValue"> <br/>

<input type=submit text="提交">

</form>

</body>

</html>

1.4 测试

1)启动nginx

2)启动redis

3)启动tomcat(两个)

4)启动浏览器

5)输入地址 http://www.wyasw.com/test.jsp

这里写图片描述

这里写图片描述

无论怎么改变 :sessin id 是一样的 即可。



 推荐知识

 历史版本

修改日期 修改人 备注
2020-03-29 20:26:56[当前版本] wyasw 创建版本

 附件

附件类型

JPGJPG

文艺知识分享平台 -V 4.9.5 -wcp
京公网安备100012199188号 京ICP备2021030911号