使用redis共享tomcat多節點session,需要安裝redis、nginx、tomcat6以及用于tomcat存儲session到redis的jar包:tomcat-redis-session-manager-1.2-tomcat-6.jar、
commons-pool-1.6.jar、jedis-2.1.0.jar等。這些jar包、配置文件及demo程序可以在最后的demo地址中下載。
下面是對tomcat、nginx進行配置及運行:
### 1.把demo包中的jar包拷貝到tomcat的lib目錄中:
### 2.配置tomcat的context.xml文件:
~~~
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>;
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60"/>;
~~~
### 3.配置tomcat的server.xml:
~~~
對于不同的tomcat,以下幾個port配置成不同的值如:
tomcat1:
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="18080" protocol="org.apache.coyote.http11.Http11Protocol"
connectionTimeout="20000"
redirectPort="8444" />
<Connector port="8019" protocol="AJP/1.3" redirectPort="8444" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
tomcat2:
<Server port="8008" shutdown="SHUTDOWN">
<Connector port="18081" protocol="org.apache.coyote.http11.Http11Protocol"
connectionTimeout="20000"
redirectPort="8445" />
<Connector port="8029" protocol="AJP/1.3" redirectPort="8445" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
~~~
### 4.配置nginx集群:
~~~
對nginx.conf進行配置:
upstream tomcat {
server 127.0.0.1:18080;
server 127.0.0.1:18081;
}
server {
listen 8080;
server_name 127.0.0.1;
location / {
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_buffers 32 4k;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://tomcat;
}
}
~~~
### 5.把demo.war程序放入到tomcatde webapps中:
修改demo中的index.jsp中的內容,不同的tomcat中,內容不一樣。如下:
~~~
tomcat1中的demo:
tomcat1:<%=session.getId() %>
tomcat2中的demo:
tomcat2:<%=session.getId() %>
~~~
### 6.啟動nginx,redis、tomcat1、tomcat2:
打開瀏覽器,輸入地址:http://localhost:8081/demo
### 7.按F5刷新頁面:
我們可以看到頁面,不管我們怎么刷新,只有前面的tomcat的標識發生變化,而后面的sessionID是固定的如下:
~~~
tomcat1:8EA77B42358EFC1CD1F5FBC7246A1317.tomcat1
tomcat2:8EA77B42358EFC1CD1F5FBC7246A1317.tomcat1
~~~
如果出現以上的結果說明共享session成功了,如果大家在嘗試過程中出現什么問題,可以給我留言。
### 8.demo下載地址:
[使用redis在nginx負載下tomcat6多節點共享session ?](http://download.csdn.net/detail/mr_smile2014/9364603)