博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat集群通过NoSQL高速存储共享session的实例
阅读量:7055 次
发布时间:2019-06-28

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

  hot3.png

要实现session共享,多个tomcat服务器之间须使用负载均衡模块进行调度,这里用nginx+tomcat+ckv为例进行说明;

部署tomcat服务器

1. 首先部署多个tomcat服务器,并确保每一个服务器均能正常访问;2. 下载memcached-session-manager-${version}.jar,此jar包包含了msm的核心功能;根据不同的tomcat版本下载对应的支持库:Tomcat6:memcached-session-manager-tc6-${version}.jarTomcat7:memcached-session-manager-tc7-${version}.jarTomcat8:memcached-session-manager-tc8-${version}.jar3. 为了支持memcached协议还必须下载spymemcached-2.11.1.jar4. 确定序列化方案,不同方案对jar包的依赖关系如下:• kryo-serializermsm-kryo-serializer,kryo-serializers-0.11(0.11 is needed, as 0.20+ is for kryo2),kryo,minlog,reflectasm,asm-3.2• javolution-serializermsm-javolution-serializer,javolution-5.4.3.1• xstream-serializermsm-xstream-serializer,xstream,xmlpull,xpp3_min• flexjson-serializermsm-flexjson-serializer,flexjson• java自带序列化方案spymemcached-2.11.1.jar已自带,性能相对较差5. 现在我们需要把已经准备好的jar包全部放在tomcat的lib目录下,然后修改conf目录下的context.xml文件,此处以java自带序列化方案为例,在context标签下添加如下内容:
其中n1为已备好的支持memcached协议的缓存服务器,可以设置多个,此处为ckv服务器,manager其他选项和说明可[ ].

安装nginx服务器

配置好所有tomcat服务器之后,需要安装nginx服务器,以实现负载均衡的功能,确保nginx起始页可以正常打开之后,打开nginx目录下的nginx.conf文件,添加如下内容:
upstream tomcats {    server 10.104.37.25:8080 weight=1;    server 10.104.42.64:8080 weight=1;}server {    listen    13355;    server_name    tomcats;    charset utf-8;    location / {        proxy_pass    http://tomcats;        proxy_redirect    off;        proxy_set_header X-Real-IP $remote_addr;    }}
这里我把监听端口改为了13355,tomcats里面的两个ip为两个tomcat服务器,weight为权重,为了便于观察效果,将权重设为相同。

编写测试代码

最后,我们需要实现jsp页面,测试结果,jsp页面示例代码如下:
<%@ page language="java" import="java.util.*,java.net.InetAddress" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              My JSP 'ShowSessionJsp.jsp' starting page        
<% out.println("Session id is " + session.getId());%>
<% out.println("Server IP is "+InetAddress.getLocalHost().getHostAddress());%>
<% out.println("Server name is "+request.getServerName());  %>

测试结果

访问nginx服务器 ,反复刷新页面,测试结果:
Session id is 5526F95AEB3#88C6F1C0B9C7A5B92E23-n1Server IP is 127.0.0.1Server name is tomcatsSession id is 5526F95AEB3E88C6F1C0B9C7A5B92E23-n1Server iIP is 10.104.42.64Server name is tomcats
其中一个tomcat服务器与nginx在同一台机器上,可以看到ip地址在变化,session id保持不变,说明共享session成功.通过Manager中的设置还可以设置多个缓存节点,实现缓存服务器的容灾,此处不做赘述。另:负载均衡还可以通过apache等方式实现.

转载于:https://my.oschina.net/liting/blog/536626

你可能感兴趣的文章
博客园装饰
查看>>
Codeforces Round #333 (Div. 2)
查看>>
水题 Codeforces Round #308 (Div. 2) A. Vanya and Table
查看>>
思维题 URAL 1409 Two Gangsters
查看>>
hash+set Codeforces Round #291 (Div. 2) C. Watto and Mechanism
查看>>
<context:component-scan>详解
查看>>
多租户通用权限设计(基于casbin)
查看>>
Algorithm
查看>>
keil 代码补全 有的 文件 不行 有的文件可以 ,这他妈就尴尬了
查看>>
scanf返回值的问题
查看>>
Unreal Engine* 4.19 的 CPU 功能检测
查看>>
vue经验 - 实战疑点总结
查看>>
ASUS华硕笔记本电脑的数字小键盘按什么健切换?
查看>>
Kafka核心思想
查看>>
TYVJ P1036 统计数字 Label:坑!!!(用queue+map做出来的水)
查看>>
[非技术参考]C#基础:使用Thread创建线程(1)
查看>>
NotePad++ 配置C/C++编译环境
查看>>
NYOJ 8 一种排序
查看>>
小程序发红包 公众号发红包开发中遇到的问题 大并发 频繁提现 刷接口
查看>>
一些常用的算法
查看>>