博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tomcat session复制
阅读量:6893 次
发布时间:2019-06-27

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

hot3.png

背景:

需要使用2台tomcat做集群,如何保持在负载均衡时session不丢失。

环境:winxp+httpd-2.2.22-win32-x86-openssl-0.9.8t.zip+apache-tomcat-7.0.53+jdk8

思路:

方法1、使用session粘滞,就是A用户进来永远都是A tomcat对应,缺点:A一挂,session就丢失了

方法2、使用session复制,这样即使一台挂了,session也不会丢失。缺点:session同步,会耗费tomcat性能

这里着重讲一下方法2.

 

步骤:

1、winxp虚拟机一台(略);apache(负载均衡);tomcat 2台

2、apche配置

2.1、httpd.conf配置

2.1.1) httpd.conf,将以下模块注释去掉

LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_scgi_module modules/mod_proxy_scgi.so

 

2.1.2)去掉Include conf/extra/httpd-vhosts.conf的注释

2.1.3)在最后添加如下代码

#分配请求ProxyRequests Off   
BalancerMember ajp://192.168.92.1:8009 loadfactor=1 route=tomcat1 BalancerMember ajp://192.168.92.1:8109 loadfactor=1 route=tomcat2

2.2、httpd-vhosts.conf配置

在最后一行添加如下代码

ServerAdmin webmaster@dummy-host2.localhost ServerName 127.0.0.1 ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ ErrorLog "logs/lbtest-error.log" CustomLog "logs/lbtest-access.log" common

3、配置tomcat.先配置tomcat1,tomcat2同(端口冲突记得改掉)。

tomcat1配置

3.1、将engine改成如下

3.2、配置集群

注意:cluster可以有更,这里已经够用。

3.3、tomcat2同

3.4、开启tomcat集群

在context.xml中,将context改成如下格式

4、编写代码

4.1、在webapps目录下新建test目录,新建WEB-INF文件夹,test.jsp

4.2、编写test.jsp

<%@ page contentType="text/html; charset=UTF-8" %><%@ page import="java.util.*" %>Tomcat Cluster DemoServer Info:<%out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%><% out.println("
ID " + session.getId()+"
"); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); System.out.println("application:" + application.getAttribute(dataName)); application.setAttribute(dataName, dataValue); } out.print("Session List"); Enumeration
e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"
"); System.out.println( name + " = " + value); }%>
Name:
Value:

4.3、在WEB-INF目录下,新建web.xml,内容如下

test

5、启动2个tomcat,apache.

效果如下图所示

转载于:https://my.oschina.net/windows20/blog/1838209

你可能感兴趣的文章
pjsip 同时使用多套音频设备
查看>>
DevOps:怎么实现源代码注释和系统文档的自动化更新?
查看>>
make 中的路径搜索(十二)
查看>>
zabbix agent 端主动注册
查看>>
初识Mysql(二)
查看>>
监控系统的状态
查看>>
Samba文件共享服务
查看>>
Check Point SMB 操作手册
查看>>
百万PV网站架构案例
查看>>
Redis PHP连接Redis
查看>>
苏研环境gerrit提交
查看>>
还在傻傻用Ctrl+C和Ctrl+V吗?这2个行列转置方法助你效率提80%!
查看>>
webpack4.0各个击破(5)—— Module篇
查看>>
没有什么内存问题,是一行Python代码解决不了的
查看>>
备忘录模式
查看>>
RabbitMQ之集群搭建
查看>>
进程占用量100%问题定位
查看>>
CentOS安装crontab及使用方法
查看>>
Dockerfile构建容器
查看>>
Shell、Xterm、Gnome-Terminal,Konsole简介
查看>>