天天看點

Nginx+Tomcat+Memcached實作tomcat叢集和session共享

轉載自:http://www.cnblogs.com/yixiwenwen/p/3578450.html

一、Nginx安裝

  詳見前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html

二、memcached安裝和啟動

  詳見前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html

三、配置Nginx實作Tomcat的負載均衡和利用memcached實作session共享

1. 修改nginx的配置檔案nginx.conf

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

user  nobody;

worker_processes  

4

;

error_log  logs/error.log;

events {

worker_connections  

1024

;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  

65

;

gzip  on;

upstream  www.yixi.com   {

server   

192.168

.

137.46

:

100

;

server   

192.168

.

137.46

:

101

;<br>        server  

192.168

.

137.46

:

102

;<br>        

}

server {

listen       

80

;

server_name  www.yixi.com;

charset utf-

8

;

location / {

root   html;

index  index.html index.htm;

proxy_pass        http:

//www.yixi.com;

proxy_set_header  X-Real-IP  $remote_addr;

client_max_body_size  100m;

}

location ~ ^/(WEB-INF)/ {

deny all;

}

error_page   

500

502

503

504

/50x.html;

location = /50x.html {

root   html;

}

}

}

2. Tomcat配置

下載下傳并解壓三個tomcat7;

下載下傳相應的jar包到所有的tomcat的lib目錄下:

couchbase-client-1.2.2.jar

javolution-5.4.3.1.jar

memcached-session-manager-1.6.4.jar

memcached-session-manager-tc7-1.6.4.jar

msm-javolution-serializer-1.6.4.jar

msm-kryo-serializer-1.6.4.jar

msm-xstream-serializer-1.6.4.jar

spymemcached-2.10.2.jar

下面修改Tomcat配置檔案,讓Tomcat結合memcached實作session共享

[[email protected] lib]# vi /usr/local/tomcat/conf/context.xml

在配置檔案中的<context></context>标簽裡面加入如下内容:

1 2 3 4 5 6 7

<Manager className=

"de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes=

"n1:localhost:11211"

requestUriIgnorePattern=

".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync=

"false"

sessionBackupTimeout=

"100"

transcoderFactoryClass=

"de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization=

"false"

/>

為了測試在tomcat預設的webroot下的index.jsp中加入這些代碼:

1 2 3 4 5 6 7 8

SessionID:<%=session.getId()%>

<BR>

SessionIP:<%=request.getServerName()%>

<BR>

SessionPort:<%=request.getServerPort()%>

<%

out.println(

"This is Tomcat Server 111111!"

);

%>

(備注:當要同時啟動多個tomcat時需要修改一些配置

  a.修改/etc目錄下的profile檔案:  

export CATALINA_HOME_test_1=/usr/local/tomcat_test/apache-tomcat-7-1
export CATALINA_HOME_test_2=/usr/local/tomcat_test/apache-tomcat-7-2
export CATALINA_HOME_test_3=/usr/local/tomcat_test/apache-tomcat-7-3      

  b. 修改bin下的startup.sh和shutdown.sh

  添加 export CATALINA_HOME=$CATALINA_2_HOME  利用profile中第二組設定

4.測試結果:

分别啟動nginx memcached tomcat 

将host的檔案中映射www.yixi.com到自己的ip;

在浏覽器中通路www.yixi.com