一个配置文件:
复制代码代码如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
频道发送选项=“6”>
<管理器类名=“org.apache.catalina.ha.session.BackupManager”
expireSessionOnShutdown =“假”
通知监听器复制=“真”
地图发送选项=“6”/>
<!--
<管理器类名=“org.apache.catalina.ha.session.DeltaManager”
expireSessionOnShutdown =“假”
notifyListenersOnReplication="true"/>
-->
<频道类名=“org.apache.catalina.tribes.group.GroupChannel”>
<Membership className="org.apache.catalina.tribes.membership.McastService"
地址=“228.0.0.4”
端口=“45564”
频率=“500”
下降时间=“3000”/>
<接收器类名=“org.apache.catalina.tribes.transport.nio.NioReceiver”
地址=“自动”
端口=“5000”
选择器超时=“100”
最大线程数=“6”/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</发件人>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</频道>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
过滤器=“.*/.gif|.*/.js|.*/.jpeg|.*/.jpg|.*/.png|.*/.htm|.*/.html|.*/.css |.*/.txt"/>
<部署者类名=“org.apache.catalina.ha.deploy.FarmWarDeployer”
tempDir="/tmp/war-temp/"
部署目录=“/tmp/war-deploy/”
watchDir="/tmp/war-listen/"
watchEnabled =“假”/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</集群>
说明如下:
1、集群复制代码代码如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
频道发送选项=“6”>
1)Tomcat集群主元素,在这个元素里面可以配置集群的所有详细信息
2)className主要的集群类,当前只提供了org.apache.catalina.ha.tcp.SimpleTcpCluste作为实现类
3)channelSendOptionssession发送方式,默认值为8,这个标识确定通过SimpleTcpCluste如何发送消息
4)通道.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004
通道.SEND_OPTIONS_ASYNCHRONOUS = 0x0008
通道.SEND_OPTIONS_USE_ACK = 0x0002
如果使用(ASYNCHRONOUS)加(USE_ACK)方式来发送消息,那么值应该是10(8+2)或者0x000B
如果使用(SYNCHRONIZED_ACK)加(USE_ACK)方式来发送消息,那么值应该是6(4+2)或者0x0006
2、经理复制代码代码如下:
<管理器类名=“org.apache.catalina.ha.session.BackupManager”
expireSessionOnShutdown =“假”
通知监听器复制=“真”
地图发送选项=“6”/>
<!--
<管理器类名=“org.apache.catalina.ha.session.DeltaManager”
expireSessionOnShutdown =“假”
notifyListenersOnReplication="true"/>
-->
1)管理tomcat之间的session复制
2)className当前有两个实现类:org.apache.catalina.ha.session.DeltaManager和org.apache.catalina.ha.session.BackupManager
3)DeltaManager复制并分布式会话数据到集群下所有的节点,这个实现类被证明非常可靠、运行得非常好。但是有一个局限性就是集群的节点类型要相同,而且要部署相同的应用程序
4)expireSessionsOnShutdown当一个web程序被结束时,tomcat分发统计命令到每个Session,并通知所有会话监听器执行。当集群下某个节点被停止时,如果想统计所有节点下的Session,设置为true ,默认为false
5)notifyListenersOnReplication如果设置为true,当session属性被复制和移动的时候,session监听器被通知
3、频道复制代码代码如下:
<频道类名=“org.apache.catalina.tribes.group.GroupChannel”>
Channel是Apache Tribes的主组件,channel管理一组子组件,并和它们一起组成了tomcat实例间的通讯框架。在tomcat集群中,DeltaManager通过SimpleTcpCluster调用channel来实现信息传递,而BackupManager自己调用channel以及子这些组件来实现信息传递。ReplicatedContext也调用channel传递context属性。
4、会员资格
复制代码代码如下:
<Membership className="org.apache.catalina.tribes.membership.McastService"
地址=“228.0.0.4”
端口=“45564”
频率=“500”
下降时间=“3000”/>
MemberShip组件自动搜索发现集群里的新节点或已经停止工作的节点,并发布相应的通知。默认使用组播(Multicast)实现。
5、接收器复制代码代码如下:
<接收器类名=“org.apache.catalina.tribes.transport.nio.NioReceiver”
地址=“自动”
端口=“5000”
选择器超时=“100”
最大线程数=“6”/>
负责监听接收其他节点传送过来的数据。默认使用非阻塞TCP Server套接字。
6、发件人复制代码代码如下:
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</发件人>
管理从一个节点发送到另外一个节点的出站连接和数据信息,允许信息发送。默认使用TCP客户端套接字。
7、拦截器复制代码代码如下:
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
Channel通过InterceptorStack进行消息传递,这里可以自定义消息的发送和接收方式,甚至MemberShip的处理方式。
8、价值复制代码代码如下:
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
过滤器=“.*/.gif|.*/.js|.*/.jpeg|.*/.jpg|.*/.png|.*/.htm|.*/.html|.*/.css |.*/.txt"/>
1)Value在调用Http请求链中衍生出拦截器的作用,用于决定什么情况下数据需要被复制。
org.apache.catalina.ha.tcp.ReplicationValve,ReplicationValue在Http请求结尾判断当前数据是否需要被复制。
2)Filter内容为url或者文件结尾,当访问链接配置filter时,实际上session没有改变,集群会认为session没有任何变化,从而不会复制和发送改变session属性。
9、部署者复制代码代码如下:
<部署者类名=“org.apache.catalina.ha.deploy.FarmWarDeployer”
tempDir="/tmp/war-temp/"
部署目录=“/tmp/war-deploy/”
watchDir="/tmp/war-listen/"
watchEnabled =“假”/>
使资源支持farmed部署
10、集群监听器复制代码代码如下:
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
Clusterlistener用于跟踪信息发送和接收。
ClusterSessionListener用于监听负载组件接收信息,当使用DeltaManager的时候,信息被负载接收,并通过ClusterSessionListener传递给Session Manager。