您的位置:首页 > 运维架构 > Tomcat

Nginx+Tomcat+Memecached实现session共享配置

2013-02-06 15:35 751 查看
这段时间一直在搞项目部署,以前从来没做过,感觉很吃力,下面这个是自己配的Ubuntu下Nginx+Tomcat+Memecached实现session共享配置参考文档,欢迎大家拍砖,不知为啥session冒失还是不能实现共享,求告诉指教

Memecached 在Ubuntu下安装配置及memecached常用命令
[align=left]2、测试连接[/align]
[align=left]telnet 127.0.0.1 11211[/align]
[align=left]3、基本命令[/align]
[align=left]您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:[/align]
[align=left](1) 设置 set key 0 0 5 àkey就是键,第一个0表示value,第二个0表示生命周期,第三个数字5表示value的长度[/align]
[align=left](2) delete key (3) get key (4) flush all 清楚所有缓存[/align]
[align=left] [/align]
[align=left] [/align]
Ubuntu下Nginx +Tomcat+memcached实现Session共享配置
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了。

你可以自己写tomcat的扩展来保存SESSION到memcached。

这里推荐使用memcached-session-manager这个开源项目

http://code.google.com/p/memcached-session-manager/ ,下面简称msm。

如何安装nginx、memcached、tomcat这些就不多说了(上面已经说过了)。

先说明一下测试环境:

tomcat1、nginx、memcached安装在192.168.1.11

tomcat2安装在192.168.1.101

下面分步实现基于nginx的tomcat负载均衡和集群配置

一,tomcat集群

1,先下载msm及其依赖包
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar http://spymemcached.googlecode.com/files/memcached-2.4.2.jar http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar
2,将这5个包放到TOMCAT_HOME/lib目录下

3,修改TOMCAT_HOME/conf/server.xml

Xml代码1.

<Context docBase="E:/java_codes/TestSession/WebContent" 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>

这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如:

n1:localhost:11211 n2:localhost:11212

sessionBackupTimeout的单位为分钟

E:/java_codes/TestSession/WebContent 替换成你的WEB目录

修改后重启两个TOMCAT即可,这个时候已经解决SESSION的共享问题.

二,配置nginx实现负载均衡

我的nginx.conf

Xml代码

user nginx nginx;

worker_processes 8;

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

error_log /log/nginx/error.log crit;

pid /var/run/nginx.pid;

worker_rlimit_nofile 65535;

events {

use epoll;

worker_connections 65535;

}

http {

include mime.types;

default_type application/octet-stream;

log_format access '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

access_log /log/nginx/access.log access;

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

tcp_nodelay on;

gzip off;

server_tokens off;

upstream 10.0.2.15 {

server 10.0.2.15:8080 ;

server 10.0.2.15:8081 ;

}

server {

server_name 10.0.2.15;

proxy_headers_hash_max_size 51200;

proxy_headers_hash_bucket_size 6400;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {

proxy_pass http://10.0.2.15;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

access_log /log/nginx/10.0.2.15_access.log access;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  session nginx memcached
相关文章推荐