第一種是以負載均衡服務器自己提供的session共享策略,每種服務器的配置是不同的而且nginx自己是沒有的。html
第二種是利用web容器自己的session共享策略來配置共享。針對於weblogic這種方式仍是靠普的。可是針對於tomcat這種方式存在很大的缺陷,主要由於是依靠廣播方式來實現的session複製,會浪費不少帶寬致使整個網絡反映緩慢。官網也建議這種方式最好不要超過4臺tomcat,具體的內容可參考/webapps/docs/cluster-howto.html裏面有詳細的說明。mysql
第三種是Tomcat集羣+redis(memcache或者mysql)的Session共享配置方法。nginx
這裏先記錄一下第二種方式,以後再更新其餘的方式web
步驟一:修改server.xml文件:redis
Xml代碼:sql
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> apache
使用這樣方法配置的集羣會將Session同步到所在區域上的全部配置了集羣屬性的實例上(這裏的區域是使用Membership 的address和port來區分的。tomcat集羣的實例若是在Membership配置中有相同的address和port值的tomcat被分到同一個集羣裏邊。他們的session是相互共享的,同一個session的集羣被稱爲一個cluster。能夠配置多個cluster,可是cluster和cluster之間的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,咱們要關注的就是membership的port屬性和address屬性,不一樣的集羣設置不一樣的port值或address值,從目前的使用來看,基本上是隔離開了。
步驟二:修改項目的web.xml文件:
web.xml文件的修改很簡單:只須要在節點中添加這個節點<distributable/>就能夠了。