Nginx+Tomcat+Memcached集群Session共享
2013-11-08 13:15
507 查看
引言: 由于项目需要需要在跨域中共享session,于是就想到了msm开源项目。以下是我通过自己的实践配置成功的案例
环境:ubuntu12.04
nginx/1.1.19
memecache version 1.4.13
tomcat apache-tomcat-7.0.12 注:一台机器上运行两个实例
1. 首先安装nginx
a. ubuntu直接安装sudo apt-get install nginx
b. 源代码安装,参考:niginx安装
2. 修改nginx.conf从而来支持负载均衡
3. 安装memecache
1. 我用最简单的安装方式:sudo apt-get install memecache,当然你可以通过源码安装,注意:memecache是通过c语言进行开发的,并且他是基于libevent事件的,因此在源码安装的时候一定要先吧libevent程序库先按。
2. 注意:当你在启动memecache的时候要根据你项目的用户去启动,不能用root用户去启动,而tomcat启动确实别的用户,注意权限问题
4. tomcat 配置
1. 使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager,下面简称msm)配置Tomcat和memcached实现session共享。
2. 我这里使用的是tomcat7所以使用的是memcached-session-manager-tc7-1.6.3 来进行,如果你用的是别的版本的tomcat请就具体包下载,注意:这里的tomcat版本与msm版本是决定你配置是否成功的关键。
3. 使用到的jar包如下:
a. jar包下载地址 下载如下jar包,点击下载spymemcached-2.7.3.jar
b. 其他jar包可以从如下链接找到:http://code.google.com/p/memcached-session-manager/downloads/list
c. 如果大家懒得挨个去下,我提供了自己下载整理好的下载msm所需jar包
4. 下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/server.xml
在配置文件中加入如下内容:
说明: 每一份tomcat实例都需要添加<context>这个标签和这些lib包
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11212 /localhost改为安装memcached的服务器的IP
sessionBackupTimeout的单位为分钟
/var/www/html改为Tomcat服务器web根目录的路径
修改后重启两个TOMCAT和nginx即可,这个时候已经解决SESSION的共享问题.
5. 测试Nginx和Tomcat
测试Nginx是否实现负载均衡已经Tomcat能否共享session信息,分别在两个Tomcat服务器的/var/www/html目录下新建两个test.jsp页面
Tomcat1
Tomcat2
通过浏览器访问Nginx服务器,访问地址改成Nginx所在服务器。因为我的nginx监听的是80端口,所以直接在浏览器中输入:http://localhost/test.jsp,就可以访问到nginx所代理的tomcat。
反复刷新浏览器,如果SessionID一直不变,下面的SessionPort的内容在不断变化则说明配置成功。同时可以查看你对应的memecache,通过stats items可以查看是否添加进了新的数据。
参考: msm原理:http://xylonwang.iteye.com/blog/1269704
配置:http://blog.csdn.net/shimiso/article/details/8979044
http://blog.csdn.net/liuzhigang1237/article/details/8880752
环境:ubuntu12.04
nginx/1.1.19
memecache version 1.4.13
tomcat apache-tomcat-7.0.12 注:一台机器上运行两个实例
1. 首先安装nginx
a. ubuntu直接安装sudo apt-get install nginx
b. 源代码安装,参考:niginx安装
2. 修改nginx.conf从而来支持负载均衡
user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; gzip_disable "msie6"; types_hash_max_size 2048; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; upstream 127.0.0.1 { //支持负载均衡 server 127.0.0.1:8080 ; //第一台tomcat实例 server 127.0.0.1:9090 ; //第二台tomcat实例 } server { listen 80; //nginx监听的端口 server_name 127.0.0.1; charset utf-8; location / { root html; index index.html index.htm; proxy_pass http://127.0.0.1; 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; } } }
3. 安装memecache
1. 我用最简单的安装方式:sudo apt-get install memecache,当然你可以通过源码安装,注意:memecache是通过c语言进行开发的,并且他是基于libevent事件的,因此在源码安装的时候一定要先吧libevent程序库先按。
2. 注意:当你在启动memecache的时候要根据你项目的用户去启动,不能用root用户去启动,而tomcat启动确实别的用户,注意权限问题
4. tomcat 配置
1. 使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager,下面简称msm)配置Tomcat和memcached实现session共享。
2. 我这里使用的是tomcat7所以使用的是memcached-session-manager-tc7-1.6.3 来进行,如果你用的是别的版本的tomcat请就具体包下载,注意:这里的tomcat版本与msm版本是决定你配置是否成功的关键。
3. 使用到的jar包如下:
a. jar包下载地址 下载如下jar包,点击下载spymemcached-2.7.3.jar
b. 其他jar包可以从如下链接找到:http://code.google.com/p/memcached-session-manager/downloads/list
c. 如果大家懒得挨个去下,我提供了自己下载整理好的下载msm所需jar包
4. 下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/server.xml
在配置文件中加入如下内容:
<Context docBase="/home/package/tomcat7-1" path="" reloadable="true"> <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" /> </Context>
说明: 每一份tomcat实例都需要添加<context>这个标签和这些lib包
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:
n1:localhost:11211 n2:localhost:11212 /localhost改为安装memcached的服务器的IP
sessionBackupTimeout的单位为分钟
/var/www/html改为Tomcat服务器web根目录的路径
修改后重启两个TOMCAT和nginx即可,这个时候已经解决SESSION的共享问题.
5. 测试Nginx和Tomcat
测试Nginx是否实现负载均衡已经Tomcat能否共享session信息,分别在两个Tomcat服务器的/var/www/html目录下新建两个test.jsp页面
Tomcat1
[root@localhost lib]# vi /home/package/tomcat7-1/test.jsp /输入如下内容 SessionID:<%=session.getId()%> <BR> SessionIP:<%=request.getServerName()%> <BR> SessionPort:<%=request.getServerPort()%> <% out.println("This is Tomcat Server 111111!"); %>
Tomcat2
[root@localhost lib]# vi /home/package/tomcat7-1/test.jsp /输入如下内容 SessionID:<%=session.getId()%> <BR> SessionIP:<%=request.getServerName()%> <BR> SessionPort:<%=request.getServerPort()%> <% out.println("This is Tomcat Server 222222!"); %>
通过浏览器访问Nginx服务器,访问地址改成Nginx所在服务器。因为我的nginx监听的是80端口,所以直接在浏览器中输入:http://localhost/test.jsp,就可以访问到nginx所代理的tomcat。
反复刷新浏览器,如果SessionID一直不变,下面的SessionPort的内容在不断变化则说明配置成功。同时可以查看你对应的memecache,通过stats items可以查看是否添加进了新的数据。
参考: msm原理:http://xylonwang.iteye.com/blog/1269704
配置:http://blog.csdn.net/shimiso/article/details/8979044
http://blog.csdn.net/liuzhigang1237/article/details/8880752
相关文章推荐
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- Nginx+Tomcat+Memcached+kryo序列化集群Session共享
- Nginx+Tomcat+Memcached 集群Session共享[memcached服务安装、tomcat使用memcache存储session、nginx安装配置实现tomcat负载均衡]
- Windows系统中配置Nginx+Tomcat+Memcached集群和Session共享
- Nginx+Tomcat+Memcached集群Session共享(windows)
- Nginx+Tomcat+memcached-session-manager(MSM)集群session共享
- nginx、memcached、tomcat 负载均衡和集群配置,session共享
- nginx+tomcat+redis/Memcached集群完成session共享
- Nginx+Tomcat+Memcached集群Session共享
- nginx+memcached+tomcat集群 session共享完整版
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- memcached对nginx负载tomcat集群共享session
- Nginx+Tomcat+Memcached集群Session共享(windows)
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- JAVAEE中的Nginx+Tomcat+Memcached集群Session共享
- nginx+memcached+tomcat集群 session共享完整版
- nginx+tomcat+Memcached集群session共享
- 【nginx+memcached+tomcat集群 session共享完整版】