nginx 解決session共用問題(jvm-route)方式(其實不是真正實現共用,而是分發固定,查看評論2)
1.下載安裝jvm_route:http ://nginx-upstream-jvm-route.googlecode.com/svn/trunk/nginx-upstream-jvm-route-read-only
cd /usr/src/nginx-1.2.1
patch - p0 < /usr/local/nginx/nginx_upstream-jvm-route-read-only/jvm_route.patch
./configure --add-module=/usr/local/nginx/nginx-upstream-jvm-route-read-only
make & make install
2.nginx 設定:
修複
upstream www.linuxidc.com {
server 192.168.1.116:8080 srun_id=a;
這裡 srun_id=a 對應的是 server1 resin 配置裡的 server id="a"
server 192.168.1.117:8081 srun_id=b;
這裡 srun_id=b 對應的是 server2 resin 配置裡的 server id="b"
jvm_route $cookie_JSESSIONID|sessionid;
}
3.tomcat 設定:
192.168.0.116設定:
修改tomcat/conf/server.xml
192.168.0.117設定:
修改tomcat/conf/server.xml
3.配置完成
這個模組通過session cookie的方式來擷取session粘性。如果在cookie和url中並沒有session,則這隻是個簡單的round-robin 負載平衡。
jvm_route的原理(from 作者 Weibin Yao):
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不同步問題,但無法解決宕機後會話轉移問題。
以上就介紹了nginx 解決session共用問題jvm-route方式(其實沒有真正解決共用問題),包括了Session,route方面的內容,希望對PHP教程有興趣的朋友有所協助。