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 应用程序定义的模板。但是,你仍可以通过在 <Context>
元素中放置 <Manager>
来按每个 Web 应用程序覆盖管理器实现,该元素位于 context.xml
文件或 server.xml
文件中。
属性
通用属性
属性 | 说明 |
---|---|
className | |
name |
此群集管理器的名称,名称用于标识节点上的会话管理器。该名称可能会被 Cluster 元素修改,以使其在容器中唯一。
|
notifyListenersOnReplication |
如果您希望在群集中的 Tomcat 节点间复制或删除会话属性时通知会话侦听器,请将其设置为 true 。
|
processExpiresFrequency |
会话过期频率和相关的管理器操作。管理器操作将在指定的 backgroundProcess 调用量中执行一次(即,数量越少,检查发生的频率越高)。最小值为 1,默认值为 6。 |
secureRandomClass |
用于扩展 |
secureRandomProvider |
用于创建生成会话 ID 的 |
secureRandomAlgorithm |
用于创建生成会话 ID 的 |
recordAllActions |
标志是否发送 Tomcat 群集节点间会话的所有操作。如果设置为 false,如果已对同一属性执行了某些操作,请确保不要在 Tomcat 群集节点间发送多个操作。在这种情况下,仅发送最后添加的操作。默认值为 |
org.apache.catalina.ha.session.DeltaManager 属性
属性 | 说明 |
---|---|
expireSessionsOnShutdown |
当 Web 应用程序正在关闭时,Tomcat 会向每个会话发出一个 expire 调用,以通知所有侦听器。如果您希望在某个节点上发生关闭时在所有节点上使所有会话过期,请将此值设置为 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 属性进行更改。 |