ClusterManager オブジェクト
目次
はじめに
クラスタマネージャは、Tomcatのセッションマネージャインターフェースであるorg.apache.catalina.Manager
の拡張です。クラスタマネージャはorg.apache.catalina.ha.ClusterManager
を実装する必要があり、セッションがどのようにレプリケートされるかについて単独で責任を負います。
現在、2種類のマネージャがあります。org.apache.catalina.ha.session.DeltaManager
はセッションデータの差分をクラスタ内のすべてのメンバーにレプリケートします。この実装は実績があり、非常にうまく機能しますが、クラスタメンバーが同種であること、つまりすべてのノードが同じアプリケーションをデプロイし、完全にレプリカである必要があるという制限があります。org.apache.catalina.ha.session.BackupManager
も差分をレプリケートしますが、バックアップノードは1つだけです。バックアップノードの場所はクラスタ内のすべてのノードに認識されています。また、異種デプロイメントもサポートしており、マネージャはWebアプリケーションがどの場所にデプロイされているかを認識しています。
<Manager>について
<Cluster>
要素内に定義された<Manager>
要素は、web.xml
ファイル内で<distributable/>
とマークされたすべてのWebアプリケーションに対して定義されるテンプレートです。ただし、<Manager>
をcontext.xml
ファイルまたはserver.xml
ファイル内の<Context>
要素内に配置することで、Webアプリケーションごとにマネージャの実装をオーバーライドすることも可能です。
属性
共通属性
属性 | 説明 |
---|---|
className | |
name |
このクラスタマネージャの名前。この名前はノード上のセッションマネージャを識別するために使用されます。この名前は、コンテナ内で一意にするためにCluster 要素によって変更されることがあります。
|
notifyListenersOnReplication | クラスタ内のTomcatノード間でセッション属性がレプリケートまたは削除されるときに、セッションリスナーに通知させたい場合はtrue に設定します。 |
processExpiresFrequency |
セッションの有効期限切れ、および関連するマネージャ操作の頻度。マネージャ操作は、指定された回数のbackgroundProcess呼び出しごとに1回実行されます(つまり、回数が少ないほど、より頻繁にチェックが行われます)。最小値は1で、デフォルト値は6です。 |
secureRandomClass |
セッションIDの生成に使用する |
secureRandomProvider |
セッションIDを生成する |
secureRandomAlgorithm |
セッションIDを生成する |
recordAllActions |
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 に設定されている場合、すべてのセッションを1つの大きなブロックとして送信します。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 ミリ秒です。 |
ネストされたコンポーネント
すべてのManager実装
すべてのManager実装は、<SessionIdGenerator>要素のネストを許可します。これはセッションID生成の動作を定義します。SessionIdGeneratorのすべての実装は、以下の属性を許可します。
属性 | 説明 |
---|---|
sessionIdLength |
セッションIDの長さは、sessionIdLength属性で変更できます。 |