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

 

Memecached 在Ubuntu 下安装配置及memecached 常用命令
2、测试连接
telnet 127.0.0.1 11211
3、基本命令
您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
(1)    设置 set key 0 0 5 àkey就是键,第一个0表示value,第二个0表示生命周期,第三个数字5表示value的长度
(2)    delete key (3) get key (4) flush all 清楚所有缓存
 
 
Ubuntu 下Nginx +Tomcat+memcached 实现Session 共享配置
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了。
你可以自己写tomcat的扩展来保存SESSION到memcached。
这里推荐使用memcached-session-manager这个开源项目
[url]http://code.google.com/p/memcached-session-manager/ [/url],下面简称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.
   
 memcachedNodes="n1:localhost:11211"   requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"   sessionBackupAsync="false"   sessionBackupTimeout="100"     transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   copyCollectionsForSerialization="false"   />        

这里的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;
}
}