Nginx+Tomcat+Memcached实现tomcat集群和session共享
一、Nginx安装
详见前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html
二、memcached安装和启动
详见前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html
三、配置Nginx实现Tomcat的负载均衡和利用memcached实现session共享
1. 修改nginx的配置文件nginx.conf
user nobody;
worker_processes 4;
error_log logs/error.log;
events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream www.yixi.com {
server 192.168.137.46:100;
server 192.168.137.46:101;
server 192.168.137.46:102;
}
server {
listen 80;
server_name www.yixi.com;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_pass http://www.yixi.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
} location ~ ^/(WEB-INF)/ {
deny all;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} }
}
2. Tomcat配置
下载并解压三个tomcat7;
下载相应的jar包到所有的tomcat的lib目录下:
couchbase-client-1.2.2.jar
javolution-5.4.3.1.jar
memcached-session-manager-1.6.4.jar
memcached-session-manager-tc7-1.6.4.jar
msm-javolution-serializer-1.6.4.jar
msm-kryo-serializer-1.6.4.jar
msm-xstream-serializer-1.6.4.jar
spymemcached-2.10.2.jar
下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/context.xml
在配置文件中的<context></context>标签里面加入如下内容:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false" />
为了测试在tomcat默认的webroot下的index.jsp中加入这些代码:
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 111111!");
%>
(备注:当要同时启动多个tomcat时需要修改一些配置
a.修改/etc目录下的profile文件:
export CATALINA_HOME_test_1=/usr/local/tomcat_test/apache-tomcat-7-1
export CATALINA_HOME_test_2=/usr/local/tomcat_test/apache-tomcat-7-2
export CATALINA_HOME_test_3=/usr/local/tomcat_test/apache-tomcat-7-3
b. 修改bin下的startup.sh和shutdown.sh
添加 export CATALINA_HOME=$CATALINA_2_HOME 利用profile中第二组设置
)
4.测试结果:
分别启动nginx memcached tomcat
将host的文件中映射www.yixi.com到自己的ip;
在浏览器中访问www.yixi.com
访问的的是tomcat3 此时sessionID是:598EA38832CA14F8F14AC3EF0276AD3D-n1
刷新几次发现访问的还是tomcat3,
为了测试 先杀死tomcat3的进程!
再刷新...
发现当tomcat3挂掉之后 请求就到了tomcat1 并且我们希望的sessionId还是598EA38832CA14F8F14AC3EF0276AD3D-n1
再把tomcat1挂掉试试:
测试结果:
只剩下tomcat2还能用 而且sessionId是共享的。
这样整个配置和测试就完成了
附件:
tomcat部分:http://download.csdn.net/detail/yixiwenwen/6986845
nginx.conf :http://download.csdn.net/detail/yixiwenwen/6986719
Nginx+Tomcat+Memcached实现tomcat集群和session共享的更多相关文章
- 基于apache的tomcat负载均衡和集群配置session共享
接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享
Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http: ...
- 集群中Session共享解决方案分析
一.为什么要Session共享 Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存 ...
- Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享
文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...
- 集群间Session共享问题解决方案
两个基本概念的生命周期 session: 当新客户端发现一个HTTP请求时服务端会创建一个session.并分配一个sessionID作为服务端来客户端的识别,session对象会保存在服务端.此时s ...
- nginx+tomcat+memcached搭建服务器集群及负载均衡
在实际项目中,由于用户的访问量很大的原因,往往需要同时开启多个服务器才能满足实际需求.但是同时开启多个服务又该怎么管理他们呢?怎样实现session共享呢?下面就来讲一讲如何使用tomcat+ngin ...
- 关于 tomcat 集群中 session 共享的三种方法
前两种均需要使用 memcached 或redis 存储 session ,最后一种使用 terracotta 服务器共享. 建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单 ...
- tomcat集群及session共享
一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其b ...
随机推荐
- 安德鲁斯 建立与各种听众自己定义的ScrollView
=== 建立与各种听众自己定义的ScrollView === 尽管安卓5.1已经release, 可是ScrollView的封装和对外API依然少的可怜, 尽管它优化得非常好了. 所以问题来了: Sc ...
- POJ1743---Musical Theme(+后缀数组二分法)
Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are int ...
- div元素上下左右居中
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 前端学习笔记(zepto或jquery)—— 布局技巧(一)
html5中有一些标签我们很难改变其样式,例如input=file,select等.这个时候我们需要改变一下思路,将原有透明度置为0,借助于div或span等以控制样式的标签来代替. 效果图: < ...
- 【Hibernate步步为营】--映射合集汇总
前几篇文章具体讨论了对象模型到关系模型的转化方法,对映射关系做了具体的了解,Hibernate将对象模型转化为对应的关系模型是通过使用对应的映射来完毕的(相同也能够使用注解),对于对象之间的关系的转化 ...
- iOS # Charles拦截封包
Charles: 是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得 ...
- 堆VS栈
c#堆VS栈(Part One) 前言 本文主要是讲解C#语言在内存中堆.栈的使用情况,使读者能更好的理解值类型.引用类型以及线程栈.托管堆. 首先感谢原文作者:Matthew Cochran 为我们 ...
- MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证
原文:MVC验证12-使用DataAnnotationsExtensions对整型.邮件.最小值.文件类型.Url地址等验证 本文体验来自http://dataannotationsextension ...
- 对JSON数组对象排序-有键相同的元素,分组数量不一致,可采用如下的JS进行循环表格输出
var now=eval(data.data); // now.sort(sortBy('bigIdOrder', true, parseInt)); var tab=""; va ...
- 在asp.net页面上按回车会触发Imagebutton控件的Click事件
原文:在asp.net页面上按回车会触发Imagebutton控件的Click事件 问题: 用asp.net做的aspx页面,无论是否有文本框.下拉框.复选框……获得焦点,只要在当前页面上按一下回车就 ...