標籤:
使用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
使用redis解決tomcat6在nginx負載下多節點共用session問題