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

用于扩展 java.security.SecureRandom 以用于生成会话 ID 的 Java 类的名称。如果未指定,则默认值为 java.security.SecureRandom

secureRandomProvider

用于创建生成会话 ID 的 java.security.SecureRandom 实例的提供程序的名称。如果指定了无效的算法和/或提供程序,则 Manager 将使用平台默认提供程序和默认算法。如果未指定,则将使用平台默认提供程序。

secureRandomAlgorithm

用于创建生成会话 ID 的 java.security.SecureRandom 实例的算法的名称。如果指定了无效的算法和/或提供程序,则 Manager 将使用平台默认提供程序和默认算法。如果未指定,则将使用 SHA1PRNG 的默认算法。如果默认算法不受支持,则将使用平台默认算法。要指定应使用平台默认值,请不要设置 secureRandomProvider 属性,并将此属性设置为一个空字符串。

recordAllActions

标志是否发送 Tomcat 群集节点间会话的所有操作。如果设置为 false,如果已对同一属性执行了某些操作,请确保不要在 Tomcat 群集节点间发送多个操作。在这种情况下,仅发送最后添加的操作。默认值为 false

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 会话块消息中的会话数。此值仅在 sendAllSessionsfalse 时有效。默认值为 1000
sendAllSessionsWaitTime 发送会话块消息之间的等待时间。此值仅在 sendAllSessionsfalse 时有效。默认值为 2000 毫秒。
sessionAttributeNameFilter

用于筛选将复制哪些会话属性的正则表达式。仅当属性名称与此模式匹配时,才会复制属性。如果模式长度为零或 null,则所有属性都符合复制条件。该模式已锚定,因此会话属性名称必须与该模式完全匹配。例如,值 (userName|sessionHistory) 将仅复制名为 userNamesessionHistory 的两个会话属性。如果未指定,将使用默认值 null

sessionAttributeValueClassNameFilter

用于筛选将复制哪些会话属性的正则表达式。仅当值的实现类名称与此模式匹配时,才会复制属性。如果模式长度为零或 null,则所有属性都符合复制条件。该模式已锚定,因此完全限定类名称必须与该模式完全匹配。如果未指定,将使用默认值 null,除非启用了 SecurityManager,在这种情况下,默认值为 java\\.lang\\.(?:Boolean|Integer|Long|Number|String)

stateTimestampDrop 当此节点向其他节点发送 GET_ALL_SESSIONS 消息时,将对作为响应接收到的所有会话消息进行排队。如果此属性设置为 true,则会根据时间戳筛选接收到的会话消息(除了其他节点发送的任何 GET_ALL_SESSIONS)。如果消息不是 GET_ALL_SESSIONS 消息,并且其时间戳早于我们的 GET_ALL_SESSIONS 消息的时间戳,则将丢弃该消息。如果设置为 false,则将处理所有排队的会话消息。默认值为 true
warnOnSessionAttributeFilterFailure

如果 sessionAttributeNameFiltersessionAttributeValueClassNameFilter 阻止了一个属性,是否应在 WARN 级别记录此属性?如果禁用了 WARN 级别日志记录,则它将记录在 DEBUG 中。此属性的默认值为 false,除非启用了 SecurityManager,在这种情况下,默认值将为 true

org.apache.catalina.ha.session.BackupManager 属性

属性 说明
mapSendOptions 备份管理器使用复制映射,此映射正在发送和接收消息。您可以设置此映射如何发送消息的标志,默认值为 6(同步)。
请注意,如果您使用异步消息传递,则接收节点可能会按照与发送顺序不同的顺序处理会话的更新消息。
maxActiveSessions 此管理器将创建的最大活动会话数,或 -1(默认值)表示没有限制。对于此管理器,只有当前节点是会话主节点的会话才被视为活动会话。
rpcTimeout 用于广播和从另一个映射传输状态的 RPC 消息的超时。默认值为 15000 毫秒。
sessionAttributeNameFilter

用于筛选将复制哪些会话属性的正则表达式。仅当属性名称与此模式匹配时,才会复制属性。如果模式长度为零或 null,则所有属性都符合复制条件。该模式已锚定,因此会话属性名称必须与该模式完全匹配。例如,值 (userName|sessionHistory) 将仅复制名为 userNamesessionHistory 的两个会话属性。如果未指定,将使用默认值 null

sessionAttributeValueClassNameFilter

用于筛选将复制哪些会话属性的正则表达式。仅当值的实现类名称与此模式匹配时,才会复制属性。如果模式长度为零或 null,则所有属性都符合复制条件。该模式已锚定,因此完全限定类名称必须与该模式完全匹配。如果未指定,将使用默认值 null,除非启用了 SecurityManager,在这种情况下,默认值为 java\\.lang\\.(?:Boolean|Integer|Long|Number|String)

terminateOnStartFailure 如果复制映射无法启动,则设置为 true 以终止复制映射。如果复制映射终止,则关联的上下文将无法启动。如果您将此属性设置为 false,则复制映射不会结束。它将尝试在心跳中加入映射成员。默认值为 false
warnOnSessionAttributeFilterFailure

如果 sessionAttributeNameFiltersessionAttributeValueClassNameFilter 阻止了一个属性,是否应在 WARN 级别记录此属性?如果禁用了 WARN 级别日志记录,则它将记录在 DEBUG 中。此属性的默认值为 false,除非启用了 SecurityManager,在这种情况下,默认值将为 true

accessTimeout ping 消息的超时。如果远程映射在此超时时间内没有响应,则将其视为已消失。默认值为 5000 毫秒。

嵌套组件

所有管理器实现

所有管理器实现都允许嵌套一个 <SessionIdGenerator> 元素。它定义了会话 ID 生成的行为。SessionIdGenerator 的所有实现都允许以下属性

属性 说明
sessionIdLength

会话 ID 的长度可以通过 sessionIdLength 属性进行更改。