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:

  1. yum -y install gcc-c++

装完后记得reboot系统。

- cd到安装目录

  1. cd /usr/lcoal/src

- 安装pcre库

  1. cd /usr/local/src
  2. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
  3. tar -zxvf pcre-8.21.tar.gz
  4. cd pcre-8.21
  5. ./configure
  6. make
  7. make install

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

- 安装zlib库

  1. cd /usr/local/src
  2.  
  3. wget http://zlib.net/zlib-1.2.8.tar.gz
  4. tar -zxvf zlib-1.2.8.tar.gz
  5. cd zlib-1.2.8
  6. ./configure
  7. make
  8. make install

- 安装ssl

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

- 安装nginx

  1. cd nginx-1.5.7
  2.  
  3. ./configure --prefix=/usr/local/nginx/nginx \
  4. --with-http_ssl_module \
  5. --with-pcre=/usr/local/src/pcre-8.12 \
  6. --with-zlib=/usr/local/src/zlib-1.2.8 \
  7. --with-openssl=/usr/local/src/openssl-1.0.1c
  8.  
  9. make
  10. make install

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

  1. http {
  2. ...
  3. upstream localhost {
  4. server localhost:8081;
  5. server localhost:8082;
  6. server localhost:8083;
  7. }
  8. ...
  9. }
  10.  
  11. location / {
  12. root html;
  13. index index.html index.htm;
  14. proxy_pass http://localhost;
  15. proxy_redirect off;
  16. proxy_set_header Host $host;
  17. proxy_set_header X-Real-IP $remote_addr;
  18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19. client_max_body_size 10m;
  20. client_body_buffer_size 128k;
  21. proxy_connect_timeout 90;
  22. proxy_send_timeout 90;
  23. proxy_read_timeout 90;
  24. proxy_buffer_size 4k;
  25. proxy_buffers 4 32k;
  26. proxy_busy_buffers_size 64k;
  27. proxy_temp_file_write_size 64k;
  28. }

二、memcached安装

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

  1. sudo yum install libevent libevent-devel
  2.  
  3. wget http://www.danga.com/memcached/dist/memcached-1.4.15.tar.gz
  4. tar zxf memcached-1.4.15.tar.gz
  5. cd memcached-1.4.15
  6. ./configure
  7. make
  8. sudo make install

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

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

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

  1. telnet 127.0.0.1 11211
  2.  
  3. stats

三、tomcat配置

1. 修改server.xml

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
  2.  
  3. ...
  4.  
  5. <Context path="" docBase="/demo/appserver/app/cluster" debug="0" reloadable="true" crossContext="true">
  6.   <Manager
        className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  7. memcachedNodes="n1:192.168.2.43:11211"
  8.     requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$"
  9.     sessionBackupAsync="false"
  10.     sessionBackupTimeout="1800000"
  11.     copyCollectionsForSerialization="false"
  12.     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
  13. </Context>

Nginx+Tomcat+Memcached集群的更多相关文章

  1. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  2. 【转】Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...

  3. Nginx+Tomcat+Memcached 集群

    写过一篇 Apache Httpd+Tomcat 的集群, 现在来看看Nginx+Tomcat+Memcached是怎么集群的. 先看看用的版本和工具: Nginx: nginx-1.8.1 Tomc ...

  4. session服务器Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...

  5. 【转】Nginx+Tomcat+Memcached集群

    Tomcat集群session同步方案有以下几种方式: 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单.但这个方案的效率比较低,在大并发下表 ...

  6. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  7. nginx+tomcat实现集群,redis实现session共享,软连接实现文件共享:http://blog.csdn.net/hua1586981/article/details/78132710

    转载 2017年02月08日 16:52:41 730 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能 ...

  8. Nginx + Tomcat搭建集群

    一.Tomcat集群带来的好处 1.提高服务的性能,并发能力,以及高可用性 2.提供项目架构的横向扩展能力 二.Tomcat集群实现原理 通过Nginx负载均衡进行请求转发 三.Nginx + Tom ...

  9. 转】Nginx+tomcat配置集群负载均衡

    原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299         感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...

随机推荐

  1. VisualVM 性能分析概述

    VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...

  2. [ASP.NET]asp.net Repeater控件的使用方法

    asp.net Repeater控件的使用方法 -- : 4770人阅读 评论() 收藏 举报 asp.netserveraspdatasetdeletexhtml 今天学习了,Repeater控件 ...

  3. ubuntu关闭THP

    所有linux系统详细设置参考: https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/ vi /etc/init.d/dis ...

  4. Mysql中的count()与sum()区别

    首先创建个表说明问题 CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` varchar(20) default NU ...

  5. ARM的QT phonon 的移植

    Phonon是QT提供的一套多媒体框架,提供多媒体播放图形界面和回放的功能,QT也是通过phonon来实现跨平台的多媒体播放.应用程序不需要关心多媒体播放到底是由什么实现的(如gstreamer.xi ...

  6. 医失眠灵验方--五味子50g 茯神50g 合欢花15g 法半夏15g

    方药:五味子50g  茯神50g  合欢花15g  法半夏15g  水煎服    主治:失眠健忘    此方为已故名老中医李培生之验方,用于临床治疗失眠健忘症,疗效显著,其主药为五味子,滋阴和阳,敛阳 ...

  7. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

  8. C/C++程序基础

    作为一名cocos2dx前端(客户端)开发,知乎上看到一片文章,怎么看待做手游cocos前端开发,lua用的多,c++用的少面试会被鄙视? 为了不被鄙视,所以要学好C++,多做积累.本文主要是根据&l ...

  9. KVM虚拟化(一)—— 介绍与简单使用

    一.架构及介绍 KVM(Kernel-based Virtual Machine)它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购: 自Linux 2.6.20后整合到内核, ...

  10. 学习记录 java 链表知识

    01.import java.util.HashMap; 02.import java.util.Scanner; 03.import java.util.Stack; 04. 05./** 06. ...