nginx+tomcat:負載均衡配置(使用粘性session)

(1)舉個簡單的例子,以tomcat爲例,咱們都知道session存在於服務器端,對於不是分佈式部署,整個系統的session都會是這惟一的服務器來管理。這點   沒問題。可是對於分佈式部署來講,假設有tomcatA與tomcatB,但用戶user訪問系統時,經過負載均衡,此user訪問了位於tomcatA上的應用。系統給此用戶分配了一個session來標識用戶身份,並返回sessionID給瀏覽器。這時user又向服務器發送個請求。假設這時候負載均衡到了tomcatB,可是此時tomcatB上並無存有user相應的session信息。根據通常應用的設置,會提示user從新登陸,試想下user就這樣一直登陸,一直被提示未登陸,這樣確定行不通。這就是session保持的問題。nginx

      解決session保持有幾種方法,例如nginx自帶的ip_hash模塊,session複製,以及使用相似redis這種緩存數據庫來實現對session的統一管理。在這裏介紹的是粘性session;redis

      

     (2) 粘性session的概念:數據庫

                  用戶在持續訪問系統時,根據粘性session,仍會被分配到上一次訪問的服務器中。瀏覽器

     (3)粘性session的配置:緩存

                  1.給nginx添加 nginx_upstream_jvm_route 模塊tomcat

                        下載: http://down.51cto.com/data/910451服務器

                         安裝 : 解壓後,首先執行patch -p0 < /nginx_upstream_jvm_route/jvm_route.patch 補丁文件cookie

                                     而後在./configure nginx時,–add-module=/nginx_upstream_jvm_routesession

                 2.配置nginx.conf負載均衡

                     

         server 192.168.10.63:8081 srun_id=tomcat0;

            server 192.168.10.63:8088 srun_id=tomcat1;

            jvm_route $cookie_JSESSIONID|sessionid reverse; 

          

                3.配置tomcat

                   在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat0">處,添加 jvmRoute="tomcat0";


                   注:此處的jvmRoute的值應同nginx.conf中的srun_id的值 相對應。

                 4.從新啓動nginx與tomcat,配置完成

  (4)負載均衡優化配置

                

server 192.168.10.63:8081 srun_id=tomcat0 max_fails=3 fail_timeout=60s
            
            
            上面max_fails=3 fail_timeout=15s兩個參數表明在15s,如有3次失敗鏈接,則在下個15s內再也不訪問該服務器。
相關文章
相關標籤/搜索