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の生成に使用するjava.security.SecureRandomを拡張するJavaクラスの名前。指定しない場合、デフォルト値はjava.security.SecureRandomです。

secureRandomProvider

セッションIDを生成するjava.security.SecureRandomインスタンスを作成するために使用するプロバイダの名前。無効なアルゴリズムやプロバイダが指定された場合、マネージャはプラットフォームのデフォルトプロバイダとデフォルトアルゴリズムを使用します。指定しない場合、プラットフォームのデフォルトプロバイダが使用されます。

secureRandomAlgorithm

セッションIDを生成するjava.security.SecureRandomインスタンスを作成するために使用するアルゴリズムの名前。無効なアルゴリズムやプロバイダが指定された場合、マネージャはプラットフォームのデフォルトプロバイダとデフォルトアルゴリズムを使用します。指定しない場合、デフォルトのSHA1PRNGアルゴリズムが使用されます。デフォルトアルゴリズムがサポートされていない場合、プラットフォームのデフォルトが使用されます。プラットフォームのデフォルトを使用することを指定するには、secureRandomProvider属性を設定せず、この属性を空の文字列に設定します。

recordAllActions

Tomcatクラスタノード間でセッションのすべてのアクションを送信するかどうかのフラグ。falseに設定されている場合、同じ属性に対して既に何らかの操作が行われている場合は、複数のアクションをTomcatクラスタノード間で送信しないようにします。その場合、最後に加えられたアクションのみが送信されます。デフォルトはfalseです。

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

属性説明
expireSessionsOnShutdownWebアプリケーションがシャットダウンされる際、Tomcatはすべてのリスナーに通知するために、各セッションに対してexpire呼び出しを発行します。あるノードでシャットダウンが発生したときに、すべてのノードですべてのセッションを期限切れにしたい場合は、この値をtrueに設定します。デフォルト値はfalseです。
maxActiveSessionsこのマネージャによって作成されるアクティブセッションの最大数。制限なしの場合は-1(デフォルト)です。このマネージャでは、現在のノードがセッションのプライマリノードであるかどうかにかかわらず、すべてのセッションがアクティブセッションとしてカウントされます。
notifySessionListenersOnReplicationクラスタ内のTomcatノード間でセッションが作成および期限切れになったときに、セッションリスナーに通知させたい場合はtrueに設定します。
notifyContainerListenersOnReplicationクラスタ内のTomcatノード間でコンテナリスナーに通知させたい場合はtrueに設定します。
stateTransferTimeoutノード起動時に、別のノードからのセッション状態転送が完了するまで待機する時間(秒単位)。デフォルト値は60秒です。
sendAllSessionsセッションを分割ブロックとして送信するかどうかのフラグ。trueに設定されている場合、すべてのセッションを1つの大きなブロックとして送信します。falseに設定されている場合、セッションを分割ブロックとして送信します。デフォルト値はtrueです。
sendAllSessionsSizeセッションブロックメッセージ内のセッション数。この値はsendAllSessionsfalseの場合にのみ有効です。デフォルトは1000です。
sendAllSessionsWaitTimeセッションブロックメッセージの送信間隔の待機時間。この値はsendAllSessionsfalseの場合にのみ有効です。デフォルトは2000ミリ秒です。
sessionAttributeNameFilter

どのセッション属性がレプリケートされるかをフィルタリングするために使用される正規表現。属性は、その名前がこのパターンと一致する場合にのみレプリケートされます。パターンがゼロ長またはnullの場合、すべての属性がレプリケーションの対象となります。パターンはアンカーされるため、セッション属性名はパターンと完全に一致する必要があります。例えば、値(userName|sessionHistory)は、userNamesessionHistoryという名前の2つのセッション属性のみをレプリケートします。指定しない場合、デフォルト値のnullが使用されます。

sessionAttributeValueClassNameFilter

どのセッション属性がレプリケートされるかをフィルタリングするために使用される正規表現。属性は、値の実装クラス名がこのパターンと一致する場合にのみレプリケートされます。パターンがゼロ長またはnullの場合、すべての属性がレプリケーションの対象となります。パターンはアンカーされるため、完全修飾クラス名はパターンと完全に一致する必要があります。指定しない場合、デフォルト値のnullが使用されます。

stateTimestampDropこのノードが他のノードにGET_ALL_SESSIONSメッセージを送信すると、応答として受信されたすべてのセッションメッセージがキューに入れられます。この属性がtrueに設定されている場合、受信されたセッションメッセージ(他のノードによって送信されたGET_ALL_SESSIONSを除く)はタイムスタンプによってフィルタリングされます。メッセージがGET_ALL_SESSIONSメッセージではなく、そのタイムスタンプが我々のGET_ALL_SESSIONSメッセージのタイムスタンプよりも古い場合、そのメッセージは破棄されます。falseに設定されている場合、キューに入れられたすべてのセッションメッセージが処理されます。デフォルトはtrueです。
warnOnSessionAttributeFilterFailure

sessionAttributeNameFilterまたはsessionAttributeValueClassNameFilterが属性をブロックした場合、WARNレベルでログに記録すべきですか?WARNレベルのログ記録が無効になっている場合は、DEBUGレベルでログに記録されます。この属性のデフォルト値はfalseです。

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

属性説明
mapSendOptionsバックアップマネージャはレプリケートされたマップを使用しており、このマップはメッセージを送受信します。このマップがメッセージを送信する方法のフラグを設定でき、デフォルト値は6(同期)です。
非同期メッセージングを使用する場合、セッションの更新メッセージが送信された順序とは異なる順序で受信ノードによって処理される可能性があることに注意してください。
maxActiveSessionsこのマネージャによって作成されるアクティブセッションの最大数。制限なしの場合は-1(デフォルト)です。このマネージャでは、現在のノードがセッションのプライマリノードであるセッションのみがアクティブセッションとみなされます。
rpcTimeoutブロードキャストおよび他のマップからの状態転送に使用されるRPCメッセージのタイムアウト。デフォルト値は15000ミリ秒です。
sessionAttributeNameFilter

どのセッション属性がレプリケートされるかをフィルタリングするために使用される正規表現。属性は、その名前がこのパターンと一致する場合にのみレプリケートされます。パターンがゼロ長またはnullの場合、すべての属性がレプリケーションの対象となります。パターンはアンカーされるため、セッション属性名はパターンと完全に一致する必要があります。例えば、値(userName|sessionHistory)は、userNamesessionHistoryという名前の2つのセッション属性のみをレプリケートします。指定しない場合、デフォルト値のnullが使用されます。

sessionAttributeValueClassNameFilter

どのセッション属性がレプリケートされるかをフィルタリングするために使用される正規表現。属性は、値の実装クラス名がこのパターンと一致する場合にのみレプリケートされます。パターンがゼロ長またはnullの場合、すべての属性がレプリケーションの対象となります。パターンはアンカーされるため、完全修飾クラス名はパターンと完全に一致する必要があります。指定しない場合、デフォルト値のnullが使用されます。

terminateOnStartFailureレプリケーションマップの起動に失敗した場合にレプリケーションマップを終了させたい場合は、trueに設定します。レプリケーションマップが終了すると、関連するコンテキストは起動に失敗します。この属性をfalseに設定した場合、レプリケーションマップは終了しません。ハートビートでマップメンバーシップに参加しようとします。デフォルト値はfalseです。
warnOnSessionAttributeFilterFailure

sessionAttributeNameFilterまたはsessionAttributeValueClassNameFilterが属性をブロックした場合、WARNレベルでログに記録すべきですか?WARNレベルのログ記録が無効になっている場合は、DEBUGレベルでログに記録されます。この属性のデフォルト値はfalseです。

accessTimeoutpingメッセージのタイムアウト。リモートマップがこのタイムアウト期間内に応答しない場合、消失したとみなされます。デフォルト値は5000ミリ秒です。

ネストされたコンポーネント

すべてのManager実装

すべてのManager実装は、<SessionIdGenerator>要素のネストを許可します。これはセッションID生成の動作を定義します。SessionIdGeneratorのすべての実装は、以下の属性を許可します。

属性説明
sessionIdLength

セッションIDの長さは、sessionIdLength属性で変更できます。