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 應用程式定義的範本。不過,您仍可以在每個 Web 應用程式基礎上覆寫管理員實作,方法是在 <Context>
元素內放置 <Manager>
,無論是在 context.xml
檔案或 server.xml
檔案中。
屬性
共用屬性
屬性 | 說明 |
---|---|
className | |
name |
此叢集管理員的名稱,此名稱用於識別節點上的工作階段管理員。名稱可能會被 Cluster 元素修改,以使其在容器中具有唯一性。
|
notifyListenersOnReplication |
如果您希望在叢集中的 Tomcat 節點間複製或移除工作階段屬性時通知工作階段偵聽器,請設定為 true 。
|
processExpiresFrequency |
工作階段到期頻率,以及相關的管理員操作。管理員操作將針對指定的背景處理呼叫次數執行一次(亦即,次數越少,檢查發生的頻率越高)。最小值為 1,預設值為 6。 |
secureRandomClass |
延伸 |
secureRandomProvider |
用於建立產生工作階段 ID 的 |
secureRandomAlgorithm |
用於建立產生工作階段 ID 的 |
recordAllActions |
旗標,表示是否傳送 Tomcat 叢集節點間所有工作階段動作。如果設定為 false,如果已對相同屬性執行某些動作,請確定不要在 Tomcat 叢集節點間傳送多個動作。在這種情況下,只傳送最後新增的動作。預設為 |
org.apache.catalina.ha.session.DeltaManager 屬性
屬性 | 說明 |
---|---|
expireSessionsOnShutdown |
當網頁應用程式正在關閉時,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 |
可以使用 sessionIdLength 屬性變更會話 ID 的長度。 |