redis儲存tomcat集群的session
如何
做到把新開發的**推送到到生產系統中部署,生產系統要能夠零宕機、對使用使用者零影響。
設想
那麼問題來了
在取下tomcat節點和載入新tomcat節點時如何做到對使用者無影響呢?方法很簡單,共享session。
下面
我們用例項來說明此方案。我們的例子使用了一台nginx做負載均衡,後端掛接了兩台tomcat,且每台tomcat的session會話 都儲存到redis資料庫中。其中,nginx配置為non-sticky執行模式,也即每乙個請求都可以被分配到集群中的任何節點。當要上線新**時, 只需簡單地取下tomcat例項,此時所有的訪問使用者會被路由到活動的tomcat例項中去,而且由於會話資料都是儲存在redis資料庫中,所以活躍用 戶並不會受影響。當tomcat更新完畢,又可以把此節點加入到nginx中。
安裝nginx
# sudo rpm -ivh nginx-1.4.2-1.el6.ngx.x86_64.rpm
修改配置檔案/etc/nginx/nginx.conf,並新增下面的內容:
修改配置檔案/etc/nginx/conf.d/default
.conf並替換location部分的內容:
location /
重啟nginx
# sudo service nginx restart
接下來
安裝兩個tomcat例項。由於我們是在同一臺伺服器上做的演示,要讓兩台tomcat不發生衝突,需要修改第二個tomcat例項的埠
號。由於nginx配置為non-sticky執行模式,對每個請求採用的是round-robin負載均衡方式,這意味著它會為每個請求都**乙個新會
話。最後
我們需要配置tomcat,讓tomcat把會話session儲存到redis資料庫。
我們要使用tomcat-redis-session-manager這樣的第三方庫,主頁見:
注意
pool2-2.2.jar和jedis-2.6.1.jar依賴庫。要記住把這些jar檔案複製到每乙個tomcat例項的lib子目錄下。
從 這幾個jar包拷貝到tomcat7的lib目錄下。並在修改每乙個tomcat例項的context.xml配置檔案:
"com.orangefunction.tomcat.redissessions.redissessionhandlervalve
" />
"com.orangefunction.tomcat.redissessions.redissessionmanager
"host="
localhost
"port="
6379
"database="0"
maxinactiveinterval="
60" />
重啟tomcat例項
可以檢查到redis確實儲存了tomcat的會話。然後我們對tomcat例項取下或恢復時,訪問使用者確實沒受影響。
用Redis儲存Tomcat集群的Session
前段時間,我花了不少時間來尋求一種方法,把新開發的 推送到到生產系統中部署,生產系統要能夠零宕機 對使用使用者零影響。那麼問題來了,在取下tomcat節點和載入新tomcat節點時如何做到對使用者無影響呢?方法很簡單,共享session。下面,我們用例項來說明此方案。我們的例子使用了一台nginx做...
用Redis儲存Tomcat集群的Session
前段時間,我花了不少時間來尋求一種方法,把新開發的 推送到到生產系統中部署,生產系統要能夠零宕機 對使用使用者零影響。那麼問題來了,在取下tomcat節點和載入新tomcat節點時如何做到對使用者無影響呢?方法很簡單,共享session。下面,我們用例項來說明此方案。我們的例子使用了一台nginx做...
用Redis儲存Tomcat集群的Session
前段時間,我花了不少時間來尋求一種方法,把新開發的 推送到到生產系統中部署,生產系統要能夠零宕機 對使用使用者零影響。那麼問題來了,在取下tomcat節點和載入新tomcat節點時如何做到對使用者無影響呢?方法很簡單,共享session。下 面,我們用例項來說明此方案。我們的例子使用了一台nginx...