使用redis解決tomcat6在nginx負載下多節點共用session問題

來源:互聯網
上載者:User

標籤:

使用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問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.