ClusterManager 对象
目录
简介
集群管理器是 Tomcat 会话管理器接口 org.apache.catalina.Manager
的扩展。集群管理器必须实现 org.apache.catalina.ha.ClusterManager
,并全权负责会话的复制方式。
目前有两种不同的管理器,org.apache.catalina.ha.session.DeltaManager
将会话数据的增量复制到集群中的所有成员。这个实现经过验证,运行良好,但有一个限制,即它要求集群成员是同构的,所有节点都必须部署相同的应用程序并且是完全相同的副本。org.apache.catalina.ha.session.BackupManager
也复制增量,但只复制到一个备份节点。备份节点的位置在集群中的所有节点都是已知的。它还支持异构部署,因此管理器知道 Web 应用程序部署在哪些位置。
<Manager>
定义在 <Cluster>
元素内部的 <Manager>
元素是为所有在其 web.xml
文件中标记为 <distributable/>
的 Web 应用程序定义的模板。但是,您仍然可以通过将 <Manager>
放入 <Context>
元素中,无论是在 context.xml
文件还是 server.xml
文件中,来为每个 Web 应用程序覆盖管理器实现。
属性
通用属性
属性 | 描述 |
---|---|
className | |
name |
此集群管理器的名称,该名称用于标识节点上的会话管理器。名称可能会被 Cluster 元素修改,以使其在容器中独一无二。
|
notifyListenersOnReplication | 如果您希望在会话属性在集群中的 Tomcat 节点之间复制或移除时通知会话监听器,请设置为 true 。 |
processExpiresFrequency |
会话过期和相关管理器操作的频率。管理器操作将每调用指定数量的 backgroundProcess 执行一次(即,数量越低,检查发生得越频繁)。最小值为 1,默认值为 6。 |
secureRandomClass |
用于生成会话 ID 的 Java 类名称,该类必须扩展 |
secureRandomProvider |
用于创建生成会话 ID 的 |
secureRandomAlgorithm |
用于创建生成会话 ID 的 |
recordAllActions |
标志是否在 Tomcat 集群节点间发送所有会话操作。如果设置为 false,如果对同一属性已执行过某些操作,请确保不要在 Tomcat 集群节点间发送多个操作。在这种情况下,只发送最后添加的操作。默认值为 |
org.apache.catalina.ha.session.DeltaManager 属性
属性 | 描述 |
---|---|
expireSessionsOnShutdown | 当 Web 应用程序关闭时,Tomcat 会对每个会话发出过期调用以通知所有监听器。如果您希望在某个节点关闭时所有节点上的所有会话都过期,请将此值设置为 true 。默认值为 false 。 |
maxActiveSessions | 此管理器将创建的最大活动会话数,或 -1(默认值)表示无限制。对于此管理器,所有会话都被视为活动会话,无论当前节点是否是会话的主节点。 |
notifySessionListenersOnReplication | 如果您希望在集群中的 Tomcat 节点之间创建和过期会话时通知会话监听器,请设置为 true 。 |
notifyContainerListenersOnReplication | 如果您希望在集群中的 Tomcat 节点之间通知容器监听器,请设置为 true 。 |
stateTransferTimeout | 节点启动时,等待从另一个节点完成会话状态传输的超时时间(以秒为单位)。默认值为 60 秒。 |
sendAllSessions | 标志是否将所有会话作为分割块发送。如果设置为 true ,则将所有会话作为一个大块发送。如果设置为 false ,则将会话作为分割块发送。默认值为 true 。 |
sendAllSessionsSize | 会话块消息中的会话数量。此值仅在 sendAllSessions 为 false 时有效。默认值为 1000 。 |
sendAllSessionsWaitTime | 发送会话块消息之间的等待时间。此值仅在 sendAllSessions 为 false 时有效。默认值为 2000 毫秒。 |
sessionAttributeNameFilter |
一个正则表达式,用于过滤将要复制的会话属性。只有当属性名称与此模式匹配时,才会复制该属性。如果模式长度为零或 |
sessionAttributeValueClassNameFilter |
一个正则表达式,用于过滤将要复制的会话属性。只有当属性值的实现类名称与此模式匹配时,才会复制该属性。如果模式长度为零或 |
stateTimestampDrop | 当此节点向另一个节点发送 GET_ALL_SESSIONS 消息时,作为响应接收到的所有会话消息都会排队。如果此属性设置为 true ,则接收到的会话消息(除了其他节点发送的任何 GET_ALL_SESSIONS )将根据其时间戳进行过滤。如果消息不是 GET_ALL_SESSIONS 消息且其时间戳早于我们 GET_ALL_SESSIONS 消息的时间戳,则该消息将被丢弃。如果设置为 false ,则处理所有排队的会话消息。默认值为 true 。 |
warnOnSessionAttributeFilterFailure |
如果 sessionAttributeNameFilter 或 sessionAttributeValueClassNameFilter 阻止了某个属性,是否应以 |
org.apache.catalina.ha.session.BackupManager 属性
属性 | 描述 |
---|---|
mapSendOptions | 备份管理器使用复制映射,此映射负责发送和接收消息。您可以设置此映射发送消息的方式的标志,默认值为 6 (同步)。请注意,如果您使用异步消息传递,则会话的更新消息在接收节点上处理的顺序可能与它们发送的顺序不同。 |
maxActiveSessions | 此管理器将创建的最大活动会话数,或 -1(默认值)表示无限制。对于此管理器,只有当前节点是会话主节点的会话才被视为活动会话。 |
rpcTimeout | 用于广播和从另一个映射传输状态的 RPC 消息的超时时间。默认值为 15000 毫秒。 |
sessionAttributeNameFilter |
一个正则表达式,用于过滤将要复制的会话属性。只有当属性名称与此模式匹配时,才会复制该属性。如果模式长度为零或 |
sessionAttributeValueClassNameFilter |
一个正则表达式,用于过滤将要复制的会话属性。只有当属性值的实现类名称与此模式匹配时,才会复制该属性。如果模式长度为零或 |
terminateOnStartFailure | 如果您希望在复制映射启动失败时终止复制映射,请设置为 true。如果复制映射终止,则关联的上下文将无法启动。如果您将此属性设置为 false,复制映射不会结束。它将尝试在心跳中加入映射成员。默认值为 false 。 |
warnOnSessionAttributeFilterFailure |
如果 sessionAttributeNameFilter 或 sessionAttributeValueClassNameFilter 阻止了某个属性,是否应以 |
accessTimeout | ping 消息的超时时间。如果远程映射在此超时期间内未响应,则被视为已消失。默认值为 5000 毫秒。 |
嵌套组件
所有管理器实现
所有管理器实现都允许嵌套一个 <SessionIdGenerator> 元素。它定义了会话 ID 生成的行为。SessionIdGenerator
的所有实现都允许以下属性
属性 | 描述 |
---|---|
sessionIdLength |
会话 ID 的长度可以通过 sessionIdLength 属性进行更改。 |