Tomcat集羣的session共享

配置Tomcatsession共享能夠有三種解決方案:

第一種是以負載均衡服務器自己提供的session共享策略,每種服務的配置是不同的而且nginx自己是沒有的。html

第二種是利用web容器自己的session共享策略來配置共享。針對於weblogic這種方式仍是靠普的。可是針對於tomcat這種方式存在很大的缺陷,主要由於是依靠廣播方式來實現的session複製,會浪費不少帶寬致使整個網絡反映緩慢。官網也建議這種方式最好不要超過4tomcat,具體的內容可參考/webapps/docs/cluster-howto.html裏面有詳細的說明。mysql

第三種是Tomcat集羣+redis(memcache或者mysql)Session共享配置方法。nginx

這裏先記錄一下第二種方式,以後再更新其餘的方式web

利用web容器自己的session共享策略來配置共享

 步驟一:修改server.xml文件:redis

最簡單的集羣配置只須要將節點中註釋掉的下面這句取消註釋便可

 Xml代碼:sql

  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  apache

使用這樣方法配置的集羣會將Session同步到所在區域上的全部配置了集羣屬性的實例上(這裏的區域是使用Membership addressport來區分的。tomcat集羣的實例若是在Membership配置中有相同的addressport值的tomcat被分到同一個集羣裏邊。他們的session是相互共享的,同一個session的集羣被稱爲一個cluster。能夠配置多個cluster,可是clustercluster之間的session是不共享的)。也就是說若是該廣播地址下的全部Tomcat實例都會共享Session,那麼假若有幾個互不相關的集羣,就可能形成Session複製浪費,因此爲了不浪費就須要對節點多作點設置了,以下:tomcat

Xml代碼服務器

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">    網絡

        <Channel className="org.apache.catalina.tribes.group.GroupChannel">    

            <Membership className="org.apache.catalina.tribes.membership.McastService"    

                address="192.168.18.110"    

                port="45564"    

                frequency="500"    

                dropTime="3000"/>    

        </Channel>    

    </Cluster>  

加了一個Channel,裏面包了個Membership,咱們要關注的就是membershipport屬性和address屬性,不一樣的集羣設置不一樣的port值或address值,從目前的使用來看,基本上是隔離開了。

步驟二:修改項目的web.xml文件:

web.xml文件的修改很簡單:只須要在節點中添加這個節點<distributable/>就能夠了。

相關文章
相關標籤/搜索