- はじめに
- 利用可能なインターセプター
- 静的メンバーシップ
- 属性
- 共通属性
- org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor 属性
- org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor 属性
- org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor 属性
- org.apache.catalina.tribes.group.interceptors.TcpFailureDetector 属性
- org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor 属性
- org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor 属性
- org.apache.catalina.tribes.group.interceptors.EncryptInterceptor 属性
- ネストされたコンポーネント
チャネルインターセプターオブジェクト
目次
はじめに
Apache Tribesは、メッセージとメンバーシップ通知の両方をインターセプトするインターセプターアーキテクチャをサポートしています。このアーキテクチャにより、ロジックの分離が可能になり、非常に便利な機能追加への道が開かれます。
利用可能なインターセプター
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor
org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator
org.apache.catalina.tribes.group.interceptors.OrderInterceptor
org.apache.catalina.tribes.group.interceptors.SimpleCoordinator
org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor
org.apache.catalina.tribes.group.interceptors.TwoPhaseCommitInterceptor
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor
org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor
org.apache.catalina.tribes.group.interceptors.GzipInterceptor
org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor
org.apache.catalina.tribes.group.interceptors.EncryptInterceptor
静的メンバーシップ
動的なディスカバリーに加えて、Apache Tribesは、メンバーシップ検証付きの静的メンバーシップもサポートしています。これを実現するには、org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
インターセプターの後にorg.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor
を追加します。StaticMembershipInterceptor
内には、追加したい静的メンバーを追加できます。TcpFailureDetector
は、静的メンバーのヘルスチェックを実行し、クラッシュも監視するため、自動的に検出されるメンバーと同じレベルの通知メカニズムを持ちます。
<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
<LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
domain="staging-cluster"
uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1}"/>
<Member className="org.apache.catalina.tribes.membership.StaticMember"
port="5678"
securePort="-1"
host="tomcat01.mydomain.com"
domain="staging-cluster"
uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/>
</Interceptor>
属性
共通属性
属性 | 説明 |
---|---|
className | 必須、デフォルト値はありません |
optionFlag | メッセージのオプションフラグに応じて特定のメッセージでインターセプターをトリガーしたい場合は、ここでインターセプターのフラグを設定できます。デフォルト値は0 で、このインターセプターはすべてのメッセージでトリガーされます。 |
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor 属性
属性 | 説明 |
---|---|
domain | このインターセプターが受け入れる論理クラスタドメイン。2つの異なるタイプの値が可能です。 1. 「staging-domain」や「tomcat-cluster」のような通常の文字列値は、ISO-8859-1エンコーディングを使用してバイトに変換されます。 2. 文字列形式のバイト配列。例:{216,123,12,3} |
logInterval | この値は、異なるドメインからのメッセージのロギング間隔を示します。デフォルトは100で、100メッセージごとにログに記録することを意味します。 |
org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor 属性
属性 | 説明 |
---|---|
expire | メモリにフラグメントを保持し、残りが到着するのを待つ時間。デフォルトは60000ミリ秒です。 |
maxSize | メッセージの最大サイズ(バイト単位)。メッセージサイズがこの値を超えると、このインターセプターはメッセージをフラグメント化して送信します。この値より小さい場合は、このインターセプターはメッセージをフラグメント化せずに1つのメッセージとして送信します。デフォルトは1024 * 100です。 |
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor 属性
属性 | 説明 |
---|---|
optionFlag | デフォルトおよびハードコードされた値は8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS) です。ディスパッチャーはこの値でのみトリガーされます。Tribesによって事前定義されているためです。 |
alwaysSend | ディスパッチキューがいっぱいになった場合に実行する動作。true (デフォルト)の場合、メッセージは同期的に送信されます。false の場合、エラーがスローされます。 |
maxQueueSize | ディスパッチキューのサイズ(バイト単位)。デフォルト値は1024 * 1024 * 64 (64 MiB) です。キューがいっぱいになった場合のディスパッチキューの最大サイズを設定します。alwaysSend がtrueに設定されている場合は、メッセージが同期的に送信されます。フラグがfalseの場合は、エラーがスローされます。 |
maxThreads | このプール内の最大スレッド数。デフォルトは10です。 |
maxSpareThreads | プールに保持するスレッド数。デフォルトは2です。 |
keepAliveTime | アイドル状態のスレッドが終了するまでの最大ミリ秒数。デフォルト値は5000(5秒)です。 |
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector 属性
属性 | 説明 |
---|---|
connectTimeout | 疑わしいノードへのTCP接続を試行する際に使用するタイムアウトをミリ秒単位で指定します。デフォルトは1000です。 |
performSendTest | trueに設定されている場合、疑わしいノードにテストメッセージを送信します。デフォルトはtrueです。 |
performReadTest | trueに設定されている場合、送信されたテストメッセージの応答を読み取ります。デフォルトはfalseです。注:performSendTest がfalseの場合、この属性は効果がありません。 |
readTestTimeout | 疑わしいノードへの読み取りテストを実行する際に使用するタイムアウトをミリ秒単位で指定します。デフォルトは5000です。 |
removeSuspectsTimeout | removeSuspectsからの削除の最大時間(秒単位)。removeSuspectsのメンバーは、removeSuspectsTimeout後に自動的に削除されます。負の値が指定された場合、removeSuspectsのメンバーは実際に消えるまで削除されません。属性が指定されていない場合は、デフォルトの300秒(5分)が使用されます。 |
org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor 属性
属性 | 説明 |
---|---|
interval | useThread == trueの場合、pingメッセージを送信する間隔を定義します。デフォルトは1000ミリ秒です。 |
useThread | pingメッセージを送信するためのスレッドを開始するかどうかのフラグ。trueに設定した場合、このインターセプターはpingメッセージを送信するためのローカルスレッドを開始します。falseに設定した場合、チャネルのハートビートがpingメッセージを送信します。デフォルトはfalseです。 |
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor 属性
属性 | 説明 |
---|---|
interval | スループット統計を報告するメッセージの間隔を定義します。レポートは、org.apache.juli.logging.LogFactory.getLog(ThroughputInterceptor.class) ロガーにINFO レベルで記録されます。デフォルト値は、10000 メッセージごとに報告することです。 |
org.apache.catalina.tribes.group.interceptors.EncryptInterceptor 属性
EncryptInterceptorは、ノード間でセッションデータを運ぶチャネルメッセージに暗号化を追加します。
TcpFailureDetector
を使用する場合、EncryptInterceptor
はインターセプターチェーンでTcpFailureDetector
の前に挿入する必要があります。これは、クラスターメンバーを検証する際、TcpFailureDetector
がインターセプターチェーンの残りの部分を使用せずに、チャネルデータを他のメンバーに直接書き込むためですが、受信側では、メッセージは引き続き(逆順で)チェーンを通過するためです。この非対称性のため、EncryptInterceptor
は送信側ではTcpFailureDetector
の前に、受信側では後に実行する必要があります。そうしないと、メッセージが破損します。
属性 | 説明 |
---|---|
encryptionAlgorithm | 使用する暗号化アルゴリズム。モードとパディングを含みます。使用できる標準のJCA名については、https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.htmlを参照してください。EncryptInterceptorは現在、次のブロック暗号モードをサポートしています:CBC、OFB、CFB、およびGCM。キーの長さは、該当する場合は、使用する暗号化アルゴリズムの種類(たとえば、AES-128対AES-256)を指定します。デフォルトのアルゴリズムはAES/CBC/PKCS5Padding です。 |
encryptionKey | 暗号化アルゴリズムで使用するキー。キーは、アルゴリズムに適した長さの16進数エンコードされたバイトとして指定する必要があります(たとえば、AES-128の場合は16バイト/32文字/128ビット、AES-256の場合は32バイト/64文字/256ビットなど)。 |
ネストされたコンポーネント
StaticMember 属性
LocalMember
静的クラスターグループのローカルメンバーである静的メンバー。
属性 | 説明 |
---|---|
className | 使用可能な実装は1つだけです:org.apache.catalina.tribes.membership.StaticMember |
port | 設定する必要はありません。この属性の値は、クラスターレシーバーの設定から継承されます。 |
securePort | 設定する必要はありません。この属性の値は、クラスターレシーバーの設定から継承されます。 |
host | 設定する必要はありません。この属性の値は、クラスターレシーバーの設定から継承されます。 |
domain | この静的メンバーがクラスタメッセージをリッスンする論理クラスタドメイン。2つの異なるタイプの値が可能です。 1. 「staging-domain」や「tomcat-cluster」のような通常の文字列値は、ISO-8859-1エンコーディングを使用してバイトに変換されます。 2. 文字列形式のバイト配列。例:{216,123,12,3} |
uniqueId | この静的メンバーの一意のユニバーサルID。値は、次の形式で16バイトである必要があります 1. 文字列形式のバイト配列。例:{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
Member
静的クラスターグループに追加する静的メンバー。
属性 | 説明 |
---|---|
className | 使用可能な実装は1つだけです:org.apache.catalina.tribes.membership.StaticMember |
port | この静的メンバーがクラスタメッセージをリッスンするポート |
securePort | この静的メンバーが暗号化されたクラスタメッセージをリッスンするセキュアポート。デフォルト値は-1 です。この値は、メンバーがセキュアポートでリッスンしていないことを意味します。 |
host | この静的メンバーがクラスタメッセージをリッスンするホスト(またはネットワークインターフェース)。3つの異なるタイプの値が可能です。 1. 「216.123.1.23」の形式のIPアドレス 2. 「tomcat01.mydomain.com」または「tomcat01」のようなホスト名。正しく解決できる限り 3. 文字列形式のバイト配列。例:{216,123,12,3} |
domain | この静的メンバーがクラスタメッセージをリッスンする論理クラスタドメイン。2つの異なるタイプの値が可能です。 1. 「staging-domain」や「tomcat-cluster」のような通常の文字列値は、ISO-8859-1エンコーディングを使用してバイトに変換されます。 2. 文字列形式のバイト配列。例:{216,123,12,3} |
uniqueId | この静的メンバーの一意のユニバーサルID。値は、次の形式で16バイトである必要があります 1. 文字列形式のバイト配列。例:{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |