Cluster オブジェクト
目次
はじめに
Tomcat のクラスタ実装は、セッションレプリケーション、コンテキスト属性レプリケーション、およびクラスタ全体での WAR ファイルデプロイを提供します。Cluster
設定はかなり複雑ですが、ほとんどの場合、デフォルトの設定でそのまま動作します。
Tomcat クラスタ実装は非常に拡張性が高く、そのため数多くのオプションが用意されており、設定が複雑に見えるかもしれません。しかし、落胆することなく、何が起こっているかを非常に細かく制御できることを理解してください。
セキュリティ
このクラスタ実装は、すべてのクラスタ関連のネットワークトラフィックに安全で信頼できるネットワークが使用されることを前提としています。安全でない、信頼できないネットワーク上でクラスタを実行することは推奨されません。
Tomcat クラスタが使用する安全で信頼できるネットワークを提供するための多くのオプションがあります。これらには以下が含まれます。
- プライベートLAN
- 仮想プライベートネットワーク (VPN)
- IPSEC
EncryptInterceptor は機密性と整合性の保護を提供しますが、信頼できないネットワーク上で Tomcat クラスタを実行することに関連するすべてのリスク、特にDoS攻撃からは保護しません。
Engine と Host の配置
<Cluster>
要素は、<Engine>
コンテナ内、または <Host>
コンテナ内のいずれかに配置できます。
Engine 内に配置すると、Tomcat のすべての仮想ホストでクラスタリングをサポートし、メッセージングコンポーネントを共有することになります。<Cluster>
を <Engine>
要素内に配置すると、クラスタは各セッションマネージャのホスト名をマネージャ名に追加し、同じ名前であっても異なる2つのホスト内にある2つのコンテキストを区別できるようにします。
コンテキスト属性のレプリケーション
コンテキスト属性のレプリケーションを設定するには、アプリケーションコンテキストで使用されるコンテキスト実装を入れ替えるだけで簡単に行えます。
<Context className="org.apache.catalina.ha.context.ReplicatedContext"/>
このコンテキストは Tomcat の StandardContext を拡張しているため、基本実装のすべてのオプションが有効です。
ネストされたコンポーネント
Manager:
セッションマネージャ要素は、このクラスタ実装で使用されるセッションマネージャの種類を識別します。このマネージャ設定は、通常の <Context> 設定で使用するものと同一です。
デフォルト値は、SimpleTcpCluster
実装と密接に結合されている org.apache.catalina.ha.session.DeltaManager
です。org.apache.catalina.ha.session.BackupManager
のような他のマネージャは、疎結合である可能性があり、データレプリケーションのために SimpleTcpCluster
に依存しません。
Channel:
チャネルとそのサブコンポーネントはすべてクラスタグループのIO層の一部であり、我々が「Tribes」とニックネームを付けた独自のモジュールです。
ネットワーク層、メッセージング、およびメンバーシップロジックの構成とチューニングはすべて、チャネルとそのネストされたコンポーネントで行われます。Apache Tribes については、いつでも詳細を確認できます。
Valve:
Tomcat クラスタ実装は、リクエストがサーブレットコンテナに出入りするタイミングを追跡するために Tomcat バルブ を使用します。これらのバルブを使用して、データをレプリケートするタイミング(常にリクエストの終了時)についてインテリジェントな決定を行うことができます。
Deployer:
Deployer コンポーネントは Tomcat ファームデプロイヤーです。これにより、クラスタ全体にアプリケーションをデプロイおよびアンデプロイできます。
ClusterListener:
ClusterListener は、SimpleTcpCluster
を使用して送受信されるメッセージを追跡するために使用されます。メッセージを追跡したい場合は、ここにリスナーを追加するか、チャネルオブジェクトにバルブを追加できます。
属性
SimpleTcpCluster 属性
属性 | 説明 |
---|---|
className |
メインのクラスタクラス。現在利用可能なのは |
channelSendOptions |
Tribes チャネルの送信オプション。デフォルトは
値の一部は以下のとおりです 様々な
これらのオプションは、カンマ区切りの文字列、例: "async, multicast" として設定することもできます。これは |
channelStartOptions |
クラスタで使用される
静的メンバーシップサービス |
heartbeatBackgroundEnabled |
コンテナのバックグラウンドスレッドでチャネルハートビートを呼び出すかどうかを示すフラグ。デフォルト値は false です。このフラグを有効にする場合は、チャネルハートビートスレッドを無効にすることを忘れないでください。 |
notifyLifecycleListenerOnFailure |
すべての ClusterListener がチャネルメッセージを受け入れられなかった場合に、LifecycleListeners に通知するかどうかを示すフラグ。デフォルト値は false です。 |