參考以下兩篇文章
http://zyycaesar.iteye.com/blog/296606
http://blog.csdn.net/liu251890347/article/details/38237911css
tomcat集羣原理
對於web集羣而言,最大的難點就是集羣中多個節點之間數據保持一致,(Session)就是這些數據中比較重要的。目前實現各個節點之間數據一致有兩種方式:
1.將全部的session數據放到一臺服務器或數據庫中,集羣中全部的節點經過訪問這臺session服務器來獲取數據。
2.集羣中全部的節點之間進行session數據的同步複製,任何一個節點都保存了全部的session數據。
兩種方式優缺點
方式一:簡單、易於實現,可是存放session的服務器發生故障的話會致使整個系統不能正常工做。
方式二:可靠性比較高,任何一個節點的故障都不會對整個系統形成影響,所以,技術上實現起來更加複雜。前端
以下介紹tomcat集羣配置
1.在tomcat的server.xml中配置web
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
這是簡易的默認配置,完整的配置信息以下數據庫
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
mod_jk插件的負載均衡器根據在worker.properties中配置lbfactor(負載均衡因素),負責爲集羣系統中的tomcat服務器分配工做負荷,以實現負載均衡,每一個tomcat之間用集羣管理器(SimpleTcpCluster)進行通訊,以實現session同步。tomcat