官网文档:https://tomcat.apache.org/tomcat-6.0-doc/config/cluster.html
本文为译文,属个人英语学习文,如误导了你,先说声抱歉。
- 介绍
Tomcat 集群实现会话复制,上下文属性复制和集群内war的部署。
虽然集群配置相当复杂,默认配置能符合大多数人的工作需要。
Tomcat 集群具有很好的扩展性,因此我们有很多的选择,使得配置项看起来很多很多,但不要灰心,相反你有很大的控制能力,知道事情是怎么回事。 - Engine vs Host placement(引擎VS主机配置)
你可以将<Cluster>元素放在<Engine>或<Host>容器中。
把它放在引擎,意味着你将支持Tomcat集群中所有的虚拟主机,并分享消息组件。
把<Cluster>放在<Engine>元素中,群集将每个会话管理器的主机名追加到管理器名称中,因此两个上下文会有相同名称,但在两个不同的主机内是可区分的。 - 上下文属性复制
配置上下文属性复制,简单地配置这个 将应用的上下文通过交换来实现。
<Context className="org.apache.catalina.ha.context.ReplicatedContext"/>
本文扩展了Tomcat StandardContext
因此,来自base implementation的所有选项都是有效的。
- 嵌套组件
Manager
会话管理器元素确定在集群实现中使用的是什么类型的会话管理器。此管理器配置与您在常规的<Context>配置相同。
默认值是org.apache.catalina.ha.session.deltamanager是紧耦合的,用simpletcpcluster实现。
其他管理如org.apache.catalina.ha.session.backupmanager
是散耦合,且不依赖于SimpleTcpCluster的数据复制。
Channel
通道和它的子组件都是集群组输入输出层的一部分,
它自己有一个模块,已被命名为"Tribes"。
任何配置和调优的网络层、消息传递和会员的逻辑将在通道和它的嵌套组件中完成。
你可以找到更多关于的Apache Tribes 信息
Valve
Tomcat集群使用valve来追踪请求进入和退出的servlet容器。
使用valve总能做出明智的判断出在最后一个请求时做复制数据。
Deployer
Deployer组件是Tomcat的Fram Deployer。它在集群中部署和取消部署应用。
ClusterListener
ClusterListener用于跟踪消息发送和使用simpletcpcluster接收消息。如果您希望跟踪消息,可以在这里添加一个侦听器,或者您可以向channel对象添加一个valve。 - 弃用的配置项
弃用设置:在以前版本的Tomcat,你能够管理会话管理器设置使用管理器。<property>=value.现在已停止使用,因它会干扰
在一个集群中支持多个不同管理器类的能力,且相同的属性可能会对不同的管理人员有不同的效果。 - 属性
simpletcpcluster属性
className
主要的集群类,当前只有一个可用 org.apache.catalina.ha.tcp.SimpleTcpCluster
channelSendOptions
Tribes channel发送选项,默认为8 此选项用于设置标志,通过simpletcpcluster将消息发给所有人。该标志决定消息是如何发送的,是一个简单的逻辑或。
int options= Channel.SEND_OPTIONS_ASYNCHRONOUS |
Channel.SEND_OPTIONS_SYNCHRONIZED_ACK |
Channel.SEND_OPTIONS_USE_ACK;
Some of the values are:
Channel.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004
Channel.SEND_OPTIONS_ASYNCHRONOUS = 0x0008
Channel.SEND_OPTIONS_USE_ACK = 0x0002
因此,当使用ACK和ASYNC消息时,则flag需时10(8+2)
注意如果你使用异步消息传递,可以处理为一个会话更新消息的接收节点以不同的顺序的顺序发送。
channelStartOptions
设置群集的<Channel>对象的开始和停止标志。
默认的是channel.default开启所有服务,如发送、接收、组播发送者和接收者。
可用的标志如下:
Channel.DEFAULT = Channel.SND_RX_SEQ (1)| Channel.SND_TX_SEQ (2)| Channel.MBR_RX_SEQ (4)| Channel.MBR_TX_SEQ (8);
不使用组播而开启一个channel,你需要使用channel.snd_rx_seq 或 channel.snd_tx_seq等于3。
heartbeatBackgroundEnabled
标记在容器后台线程中是否调用channel心跳。默认值是false。
启用此标志不要忘记禁用channel心跳线
notifyLifecycleListenerOnFailure
标记是否通知LifecycleListeners,当所有ClusterListener无法接收channel消息时,默认值是false。
doClusterLog
在6.0.0版本中废弃
可用的值为true/ false
值继承自Tomcat 5.5,官方并没有给出明确意思。
配置日志记录,使用标准的Tomcat日志配置。
clusterLogName
值继承自Tomcat 5.5,官方并没有给出明确意思。
配置日志记录,使用标准的Tomcat日志配置。