基於nginx的tomcat負載均衡和集羣

要集羣tomcat主要是解決SESSION共享的問題,所以我利用memcached來保存session,多臺TOMCAT服務器便可共享SESSION了。javascript

 

你能夠本身寫tomcat的擴展來保存SESSION到memcached。css

這裏推薦使用memcached-session-manager這個開源項目(http://code.google.com/p/memcached-session-manager/ ),下面簡稱msm。html


如何安裝nginx、memcached、tomcat這些就很少說了。java


先說明一下測試環境:nginx

tomcat一、nginx、memcached安裝在192.168.1.11web

tomcat2安裝在192.168.1.101
tomcat


下面分步實現基於nginx的tomcat負載均衡和集羣配置服務器

 

一,tomcat集羣session

    1,先下載msm及其依賴包app

    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" >  
  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.     />  
  10. </Context>  

 這裏的memcachedNodes是填寫memcached節點,多個節點時能夠以空隔分開,如:

 n1:localhost:11211 n2:localhost:11212


 sessionBackupTimeout的單位爲分鐘

 

 E:/java_codes/TestSession/WebContent 替換成你的WEB目錄

 

  修改後重啓兩個TOMCAT便可,這個時候已經解決SESSION的共享問題.


二,配置nginx實現負載均衡

   以個人nginx.conf爲例

Xml代碼    收藏代碼
  1. #user  nobody;  
  2. worker_processes  1;  
  3.   
  4. error_log  logs/error.log;  
  5.   
  6. events {  
  7.     worker_connections  1024;  
  8. }  
  9.   
  10.   
  11. http {  
  12.     include       mime.types;  
  13.     default_type  application/octet-stream;  
  14.   
  15.     sendfile        on;  
  16.     keepalive_timeout  65;  
  17.   
  18.     #gzip  on;  
  19.     upstream  www.docyeah.com   {  
  20.               server   192.168.1.11:8080;  
  21.               server   192.168.1.101:8080;  
  22.     }  
  23.     server {  
  24.         listen       80;  
  25.         server_name  www.docyeah.com;  
  26.         charset utf-8;  
  27.         location / {  
  28.             root   html;  
  29.             index  index.html index.htm;  
  30.             proxy_pass        http://www.docyeah.com;  
  31.             proxy_set_header  X-Real-IP  $remote_addr;  
  32.             client_max_body_size  100m;  
  33.         }  
  34.   
  35.   
  36.         location ~ ^/(WEB-INF)/ {   
  37.         deny all;   
  38.         }   
  39.   
  40.         error_page   500 502 503 504  /50x.html;  
  41.         location = /50x.html {  
  42.             root   html;  
  43.         }  
  44.   
  45.     }  
  46. }  

 

將www.docyeah.com替換成你的域名

192.168.1.11和192.168.1.101替換成你服務器的IP

 

OK,已經完成。啓動nginx便可。


這是我採用的負載均衡及集羣方案,但願你們拍磚.

相關文章
相關標籤/搜索