参考以下两篇文章
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