`
xpShell
  • 浏览: 15171 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Nginx+Tomcat+Memcached集群

 
阅读更多

Tomcat集群session同步方案有以下几种方式:

  • 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。原理:http://zyycaesar.iteye.com/blog/296606
  • 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。
  • 利用nginx插件实现tomcat集群和session同步,nginx-upstream-jvm-route-0.1.tar.gz,是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能,可通过http://code.google.com/p/nginx-upstream-jvm-route/downloads/list获取。
  • 利用memcached把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。

以下使用第四种方案,集群环境:

1. nginx最新版本:1.5.7

2. tomcat版本:6.0.37

3. memcached最新版本:1.4.15

4. session复制同步使用memcache-session-manager最新版本:1.6.5

5. 系统:CentOS6.3


一、Nginx安装

- centos6.3默认未安装gcc-c++,先装gcc:

yum -y install gcc-c++

装完后记得reboot系统。

- cd到安装目录

cd /usr/lcoal/src

- 安装pcre库

cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure
make
make install

如果wget下载不到的话,去官网下载pcre-8.12.tar.gz包拷贝到src下。

- 安装zlib库

cd /usr/local/src
 
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

- 安装ssl

cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz

- 安装nginx

cd nginx-1.5.7
 
./configure --prefix=/usr/local/nginx/nginx \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.12 \
--with-zlib=/usr/local/src/zlib-1.2.8 \
--with-openssl=/usr/local/src/openssl-1.0.1c
 
make
make install

安装成功,cd /usr/local/nginx/conf/nginx.conf,修改配置文件:

http {
...
    upstream localhost {
        server    localhost:8081;
        server    localhost:8082;
        server    localhost:8083;
    }
...
}


location / {
      root   html;
      index  index.html index.htm;
      proxy_pass   http://localhost;
      proxy_redirect    off;
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
      client_max_body_size   10m;
      client_body_buffer_size   128k;
      proxy_connect_timeout   90;
      proxy_send_timeout   90;
      proxy_read_timeout   90;
      proxy_buffer_size   4k;
      proxy_buffers   4 32k;
      proxy_busy_buffers_size   64k;
      proxy_temp_file_write_size  64k;        
}

 

二、memcached安装

- memcached安装较简单,需要先libevent库:

sudo yum install libevent libevent-devel

wget http://www.danga.com/memcached/dist/memcached-1.4.15.tar.gz
tar zxf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure
make
sudo make install

安装成功(默认安装在bin下),启动:

#-vv 控制台输出
#-d 后台运行
/usr/local/bin/memcached -vv

启动后,可以telnet上去看下状态:

telnet 127.0.0.1 11211

stats

 

 

三、tomcat配置

1. 修改server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

...

<Context path="" docBase="/demo/appserver/app/cluster" debug="0" reloadable="true" crossContext="true">    
  <Manager 
    className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
       memcachedNodes="n1:192.168.2.43:11211"
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$"
    sessionBackupAsync="false"
    sessionBackupTimeout="1800000"
    copyCollectionsForSerialization="false"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
</Context>

2. 添加mem和msm的依赖jar包

couchbase-client-1.2.2.jar

javolution-5.4.3.1.jar

kryo-1.03.jar

kryo-serializers-0.10.jar

memcached-session-manager-1.6.5.jar

memcached-session-manager-tc6-1.6.5.jar

minlog-1.2.jar

msm-kryo-serializer-1.6.5.jar

reflectasm-0.9.jar

spymemcached-2.10.2.jar

注意点:

-msm1.6.5依赖了Couchbase,需要添加couchbase-client的jar包,否则启动会报:java.lang.NoClassDefFoundError: com/couchbase/client/CouchbaseClient。

-tomcat6和7使用不同msm支持包:memcached-session-manager-tc6-1.6.5.jar和memcached-session-manager-tc7-1.6.5.jar,只可选一,否则启动报错。

-msm源码中的lib包版本太低:spymemcached-2.7.jar需要使用2.10.2,否则启动tomcat报错:

java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;
at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:227)

kryo-serializers-0.8.jar需要使用0.10版本,否则报错:

Caused by: java.lang.ClassNotFoundException: de.javakaffee.kryoserializers.DateSerializer


tomcat启动成功后可以去刷新页面,ip端口会变化,session是不会变化的:

 

memcached的状态可以看到同步session的操作日志:

 

 

分享到:
评论

相关推荐

    Nginx+Tomcat+Memcached集群Session共享实例

    Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果

    Nginx+Tomcat+Memcached共享session集群配置

    ### Nginx+Tomcat+Memcached 共享 Session 集群配置 #### 一、概述 在大型分布式系统中,为了实现高可用性和负载均衡,常常会使用 Nginx 作为反向代理服务器来分发请求到后端多个 Tomcat 实例上。然而,传统的基于...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置

    Nginx+Tomcat7+Memcached集群Session共享

    Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...

    nginx+tomcat7+memcached session会话保持

    本文将详细介绍如何在Nginx、Tomcat7和Memcached的环境下实现会话保持,确保用户在多台服务器之间切换时仍能保持其会话状态。 首先,我们要理解会话保持的重要性。在分布式系统中,用户可能与集群中的任何一台...

    nginx+tomcat+memcached集群和负载均衡所有资源包

    nginx+tomcat+memcached集群和负载均衡所有资源包,具体集群方法请参见博文:http://blog.csdn.net/l1028386804/article/details/48289765

    Nginx+Tomcat+Memcached集群Session共享

    标题 "Nginx+Tomcat+Memcached集群Session共享" 描述了在分布式环境中如何通过Nginx反向代理服务器、Tomcat应用服务器集群以及Memcached缓存系统来实现Session的共享。这是一个常见的高可用性和负载均衡解决方案。...

    Nginx+Tomcat+Memcached集群 所需jar包集合

    couchbase-client-1.2.2.jar ...memcached-session-manager-1.6.5.jar memcached-session-manager-tc6-1.6.5.jar minlog-1.2.jar msm-kryo-serializer-1.6.5.jar reflectasm-0.9.jar spymemcached-2.10.2.jar

    Nginx+Tomcat+MemCached_集群配置

    标题 "Nginx+Tomcat+Memcached 集群配置" 涉及到的是一个常见的高性能 web 应用架构,它结合了 Nginx、Tomcat 和 Memcached 这三款强大的技术来实现高可用性和负载均衡。Nginx 是一款高效的静态资源服务器和反向代理...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 tomcat部分

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 tomcat部分

    nginx+tomcat+memcached负载均衡集群搭建许jar包大全

    Tomcat要支持memcached管理Session,需要调用一些jar库文件如下(网上有的文章中可能所说的jar包不全,或者版本不样的会报错,但这里我已经经过验证了): 1) couchbase-client-1.2.2.jar 2) javolution-5.5.1....

    nginx + tomcat7 + memcached集群环境包共享

    综上所述,"nginx + tomcat7 + memcached"的集群环境包共享,旨在构建一个高效、稳定、可扩展的Web服务架构。通过合理配置,可以大大提高系统的响应速度、可用性和可维护性。文件名"msm-1.7"可能是指某种特定的集群...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享

    下面我们将详细探讨如何实现Nginx+Tomcat+Memcached的集群和Session共享。 **Nginx** Nginx是一款轻量级的Web服务器/反向代理服务器,以其高效的性能和低内存占用著称。在本场景中,Nginx主要负责以下任务: 1. **...

    Nginx+Tomcat+Memcached 相关包

    在Nginx+Tomcat+Memcached的集群环境中,通常会有多台服务器分别运行Nginx、Tomcat和Memcached。Nginx通过负载均衡策略将请求分发到不同的Tomcat实例,以实现横向扩展和故障隔离。Memcached也可以部署为集群模式,...

    Nginx+tomcat+memcached集群session共享(win7下)所用到

    本教程将深入探讨如何在Windows 7环境下,利用Nginx作为反向代理,Tomcat作为应用服务器,以及Memcached作为分布式缓存来实现session共享。下面将详细阐述每个组件的作用以及配置过程。 1. **Nginx**: Nginx是一...

    集群Nginx+Tomcat+Memcached

    ### 集群Nginx+Tomcat+Memcached #### 一、Nginx介绍与特性 **Nginx** 是一款广泛使用的高性能HTTP服务器和反向代理服务器,最初由俄罗斯开发者Igor Sysoev编写,旨在为互联网提供一个稳定、支持高并发连接的平台...

    nginx+tomcat+memcached

    1. **Nginx**:作为反向代理服务器,Nginx负责接收用户的请求并将其分发到后端的Tomcat服务器集群。通过Nginx,我们可以实现负载均衡,提高系统的可用性和性能。 2. **Tomcat**:作为Java应用服务器,Tomcat运行...

    Nginx+Tomcat+memcached实现集群部署、负载均衡session共享.rar

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"Nginx+Tomcat+memcached实现集群部署、负载均衡session共享"是一种常见的解决方案。这个方案结合了Nginx作为反向代理和负载均衡器,Tomcat作为Java应用...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享.docx

    【Nginx+Tomcat+Memcached实现Tomcat集群和session共享】 在现代Web应用程序的部署中,为了提高系统的可用性和可扩展性,通常会采用集群技术。将多个Tomcat服务器组成一个集群,通过负载均衡策略分发用户请求,以...

Global site tag (gtag.js) - Google Analytics