1. 程式人生 > >通過Nginx_upstream_jvm_route插件實現Tomcat集群的session同步

通過Nginx_upstream_jvm_route插件實現Tomcat集群的session同步

com 重試 local 會話 clu usr .html size 次數

之前分別介紹了Tomcat通過memcached session manager(MSM)方式和自帶的CLuster方式實現session共享方案.今天這裏說下Tomcat通過Nginx擴展插件nginx-upstream-jvm-route實現session同步,用來實現基於Cookie的Session Sticky的功能。

jvm_route的工作原理
1) 一開始請求過來,沒有帶session信息,jvm_route就根據round robin的方法,發到一臺tomcat上面。
2) tomcat添加上session 信息,並返回給客戶。
3) 用戶再此請求,jvm_route看到session中有後端服務器的名稱,它就把請求轉到對應的服務器上。

暫時jvm_route模塊還不支持默認fair的模式。jvm_route的工作模式和fair是沖突的。對於某個特定用戶,當一直為他服務的tomcat宕機後,默認情況下它會重試max_fails的次數,如果還是失敗,就重新啟用round robin的方式,而這種情況下就會導致用戶的session丟失。

總的說來,jvm_route是通過session_cookie這種方式來實現session粘性,將特定會話附屬到特定tomcat上,從而解決session不同步問題,但無法解決宕機後會話轉移問題。從根本上來說:jvm_route不是真正session共享,而是session分發固定,其實沒有真正解決session共享問題

!!生產環境,強烈推薦通過MSM方式實現session共享!

jvm_route插件實現Tomcat集群session同步的操作記錄:
本案例所用到的軟件下載地址:https://pan.baidu.com/s/1ZWEU15GhJavBqdCXWsYbzA
提取密碼:nqr9
下載到服務器本地/usr/local/src目錄下.

技術分享圖片

1) Nginx部署和配置

通過Nginx_upstream_jvm_route插件實現Tomcat集群的session同步