`

nginx+tomcat+Memcached集群session共享

 
阅读更多

Nginx+Tomcat+Memcached实现tomcat集群和session共享
一、Nginx部分
1.1、Nginx介绍
  Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
  Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。
  据说他当初是F5的成员之一,英文主页:http://nginx.net 。
1.2、Nginx优点
  Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 
  在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue作为开发模型. 
  Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多. 
  作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验. 
  Nginx 是一个 安装非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.
1.3、Nginx安装
  到官网http://nginx.org/en/download.html下载最新的稳定版本,目前是0.7.67。

[html] view plain copy
 
  1. [root@localhost ~]# wget http://nginx.org/download/nginx-0.7.67.tar.gz            
  2. --2010-09-24 14:48:12--  http://nginx.org/download/nginx-0.7.67.tar.gz            
  3. Resolving nginx.org... 81.19.68.137                                               
  4. Connecting to nginx.org|81.19.68.137|:80... connected.                            
  5. HTTP request sent, awaiting response... 200 OK                                    
  6. Length: 608462 (594K) [application/octet-stream]                                  
  7. Saving to: `nginx-0.7.67.tar.gz'                                                  
  8. 100%[<========================================>] 608,462     44.5K/s   in 18s       
  9. 2010-09-24 14:48:32 (32.8 KB/s) - `nginx-0.7.67.tar.gz' saved [608462/608462]     
  10.                                                                                   
  11. [root@localhost ~]# tar -zxvf nginx-0.7.67.tar.gz    /解压压缩文件                
  12. [root@localhost ~]# cd nginx-0.7.67                  /进入安装文件目录            
  13. [root@localhost nginx-0.7.67]# ./configure –prefix=/usr/local/nginx      /指定安装到/usr/local/nginx目录下,可用./configure –help查看需要哪些编译参数         
  14. [root@localhost nginx-0.7.67]#make                  /make                         
  15. [root@localhost nginx-0.7.67]#make install          /安装                         
  16. [root@localhost nginx-0.7.67]# ll /usr/local/nginx/      /查看是否安装成功        
  17. drwxr-xr-x 2 root root 4096 Sep 24 15:12 conf                                     
  18. drwxr-xr-x 2 root root 4096 Sep 24 15:12 html                                     
  19. drwxr-xr-x 2 root root 4096 Sep 24 15:12 logs                                     
  20. drwxr-xr-x 2 root root 4096 Sep 24 15:12 sbin                                     
  21. [root@localhost nginx-0.7.67]#/usr/local/nginx/sbin/nginx –t     /测试Nginx配置文件是否正确                                                                    
  22. [root@localhost nginx-0.7.67]#/usr/local/nginx/sbin/nginx         /启动Nginx     


下面验证Nginx是否正常启动,浏览器中输入nginx服务器地址,出现如下图说明nginx正常工作。




二、利用memcached配置Nginx、Tomcat实现负载均衡和session共享
Tomcat、memcached安装这里就不讲了,主要介绍如何配置Nginx实现Tomcat的负载均衡和利用memcached实现session共享。
配置Nginx+Tomcat集群实现负载均衡
这里主要修改nginx的配置文件nginx.conf

[html] view plain copy
 
  1. [root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf       /编辑nginx配置文件,内容如下  
  2. user  nobody;  
  3. worker_processes  4;  
  4. error_log  logs/error.log;  
  5. events {  
  6.     worker_connections  1024;  
  7. }  
  8.   
  9.   
  10. http {  
  11.     include       mime.types;  
  12.     default_type  application/octet-stream;  
  13.     sendfile        on;  
  14.     keepalive_timeout  65;  
  15.     gzip  on;  
  16.     upstream  www.huiyi99.com   {  
  17.               server   192.168.1.11:8080;  
  18.               server   192.168.1.101:8080;  
  19.     }  
  20.     server {  
  21.         listen       80;  
  22.         server_name  www.huiyi99.com;  
  23.         charset utf-8;  
  24.         location / {  
  25.             root   html;  
  26.             index  index.html index.htm;  
  27.             proxy_pass        http://www.huiyi99.com;  
  28.             proxy_set_header  X-Real-IP  $remote_addr;  
  29.             client_max_body_size  100m;  
  30.         }  
  31.   
  32.   
  33.         location ~ ^/(WEB-INF)/ {   
  34.             deny all;   
  35.         }   
  36.   
  37.   
  38.         error_page   500 502 503 504  /50x.html;  
  39.         location = /50x.html {  
  40.             root   html;  
  41.         }  
  42.   
  43.   
  44.     }  
  45. }  


注意:红色字体部分是需要修改的地方。
www.huiyi99.com的域名更换为自己需要的域名。
server   192.168.1.11:8080
server   192.168.1.10:8080     
更换为后端Tomcat的ip的ip和端口,如果有多个按照该格式添加即可。


1.2、Tomcat配置
  使用memcached-session-manager这个开源项目(http://code.google.com/p/memcached-session-manager,下面简称msm)配置Tomcat和memcached实现session共享。
首先将下面的包下载到Tomcat的lib目录下,这些包都是msm所依赖的包。

[html] view plain copy
 
  1. [root@localhost ~]# cd /usr/local/tomcat/lib/  
  2. [root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar   
  3. [root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar   
  4. [root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar   
  5. [root@localhost lib]# wget http://spymemcached.googlecode.com/files/memcached-2.4.2.jar   
  6. [root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar  


  下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/server.xml
  在配置文件中加入如下内容

 

 

[html] view plain copy
 
  1. <Context docBase="/var/www/html" path="" reloadable="true">  
  2. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
  3.     memcachedNodes="n1:localhost:11211"   
  4.     requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
  5.     sessionBackupAsync="false"   
  6.     sessionBackupTimeout="100"   
  7.     transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
  8.     copyCollectionsForSerialization="false" />  
  9. </Context>  


说明:
这里的memcachedNodes是填写memcached节点,多个节点时可以以空隔分开,如: 
 n1:localhost:11211 n2:localhost:11212     /localhost改为安装memcached的服务器的IP
sessionBackupTimeout的单位为分钟
/var/www/html改为Tomcat服务器web根目录的路径
修改后重启两个TOMCAT和nginx即可,这个时候已经解决SESSION的共享问题.


测试Nginx和Tomcat
  测试Nginx是否实现负载均衡已经Tomcat能否共享session信息,分别在两个Tomcat服务器的/var/www/html目录下新建两个test.jsp页面
Tomcat1

[html] view plain copy
 
  1. [root@localhost lib]# vi /var/www/html/test.jsp     /输入如下内容  
  2. SessionID:<%=session.getId()%>  
  3. <BR>  
  4. SessionIP:<%=request.getServerName()%>  
  5. <BR>  
  6. SessionPort:<%=request.getServerPort()%>  
  7. <%  
  8. out.println("This is Tomcat Server 111111!");  
  9. %>  


Tomcat2

[html] view plain copy
 
  1. [root@localhost lib]# vi /var/www/html/test.jsp     /输入如下内容  
  2. SessionID:<%=session.getId()%>  
  3. <BR>  
  4. SessionIP:<%=request.getServerName()%>  
  5. <BR>  
  6. SessionPort:<%=request.getServerPort()%>  
  7. <%  
  8. out.println("This is Tomcat Server 222222!");  
  9. %>  


通过浏览器访问Nginx服务器,如下图将访问地址改成Nginx所在服务器。

反复刷新浏览器,如果SessionID一直不变,下面的SessionPort的内容在不断变化则说明配置成功。

分享到:
评论

相关推荐

    Nginx+Tomcat+Memcached集群Session共享

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

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

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

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

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

    nginx+tomcat7+memcached session会话保持

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

    Nginx+Tomcat7+Memcached集群Session共享

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

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

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

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

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

    Nginx+Tomcat+Memcached集群

    文件"**Nginx+Tomcat+Memcached集群Session共享(tomcat7)**"可能包含了这些配置示例和必要的依赖库,如Tomcat的Memcached Session Manager (messaging)相关的jar包。 6. **性能优化**:在实际运行中,还需要关注...

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

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

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

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

    Nginx+Tomcat+Memcached-Session-Manager集群Session共享

    通过本篇文档,读者应该能够获得构建基于Nginx+Tomcat+MSM的集群Session共享环境的知识,并能应用这些知识进行实际操作和测试。需要注意的是,在实际操作中,环境配置细节会根据具体需求和软件版本有所不同,因此在...

    Windows + Nginx + Memcached + Tomcat 集群 session共享

    总之,Windows + Nginx + Memcached + Tomcat 集群session共享方案是一个高效且可靠的架构,它能提高系统的可用性,保证用户会话的连续性,是大规模Web应用常见的部署模式。然而,实际部署时,还需要考虑安全性、...

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

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

    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实现session共享(适用tc7、tc8)

    兼容Tomcat7 与tomcat8 +memcached做session共享 , 解决了tomcat7与Tomcat8的 java.lang.NoSuchFieldError: attributes 错误。

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

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

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

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

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享

    集群session共享原理** 当用户访问应用时,Nginx将请求分发到一个Tomcat实例。该实例将session数据保存在Memcached中,并将session ID返回给用户。之后,无论用户请求哪个Tomcat实例,只要session ID相同,其他实例...

    nginx+tomcat7+memcached所需jar

    "nginx+tomcat7+memcached所需jar"的组合提供了一种解决方案,利用Memcached作为分布式缓存来实现跨服务器的session共享,提高系统的可扩展性和可用性。这个组合的关键在于`memcached session manager`,它使得...

    Nginx+Tomcat+MemCached_集群配置

    在集群环境中,每个Tomcat实例都应该配置相同的应用程序上下文,并确保应用的session复制或共享,以保持用户状态的一致性。在`server.xml`配置文件中,你可以调整连接器的参数,如最大线程数、超时时间等,以优化...

Global site tag (gtag.js) - Google Analytics