| ||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||
| Membership | ||||||||||||
メンバーシップとはクラスタを構成するTomcatインスタンスの集合のことです。メンバーシップサービスを行う実装クラスとして"org.apache.catalina.cluster.mcast.McastService"があります。 "McastService"はIPマルチキャストを利用することによって、各インスタンス間の生死確認(ハートビート)および"Receiver"が利用するIPアドレス/ポート情報の公開を実現します。同じマルチキャストIP/ポートを利用するTomcatインスタンス群が1つの「クラスタグループ=メンバーシップ」と認識されます。一定期間マルチキャストのメッセージがなかったTomcatインスタンスはダウンしたとみなされます。 | ||||||||||||
| Sender | ||||||||||||
レプリケーションサービスにおいて、セッションをレプリケーションする方法を定義します。実装クラスとして"org.apache.catalina.cluster.tcp.ReplicationTransmitter"があります。方法は"pooled"、"synchronous"、"asynchronous"の3種類があります。
| ||||||||||||
| Receiver | ||||||||||||
レプリケーションサービスにおいて、セッション情報を受け取る設定を定義します。実装クラスは"org.apache.catalina.cluster.tcp.ReplicationListener"があります。 "ReplicationTransmitter"とReplicationListener"はTCPソケットを用いてセッション情報のやり取りを行います。受け取り側ではTCPをリスンするアドレス/ポートをクラスタ内のサーバに公開する必要があります。 レプリケーションリクエストを取り扱うスレッド数を示す属性の"tcpThreadCount"は、"SenderのreplicationMode"が"pooled"以外の場合は、クラスタ内のサーバ数に合わせればよいですが、"pooled"の場合にはさらに大きな数を設定するとパフォーマンスが向上する可能性があります。 | ||||||||||||
| Valve | ||||||||||||
バルブはリクエストをインターセプトするTomcat特有のコンポーネントです。ここで使われる"org.apache.catalina.cluster.tcp.ReplicationValve"はリクエストをインターセプトし、セッションレプリケーションを行うべきかどうか判断します。filterで指定されたリクエストのセッションレプリケーションは不要と判断されます。通常HTMLやjpgといった静的コンテンツはレプリケーションの必要がありませんので、このバルブを用いてフィルタリングします。 | ||||||||||||
| Deployer | ||||||||||||
デプロイヤはファーミングを実現するために用いられます。実装クラスとして"org.apache.catalina.cluster.deploy.FarmWarDeployer"があります。 | ||||||||||||
| ファーミング | ||||||||||||
クラスタシステムを運用していく際の各サーバへのデプロイ作業を軽減するために、1つのサーバにアプリケーションをデプロイ/アンデプロイするだけでクラスタ内の全サーバにデプロイ/アンデプロイが反映される、という仕組みをファーミングと呼んでいます。 先ほどのフェイルオーバーの項の図3で出てきた「Deployer」要素の属性である"watchEnabled"をtrueに設定すると、Tomcatは同じく「Deployer」要素の属性の"watchDir"に指定したディレクトリを監視し、新しくwarファイルが追加されたときにクラスタ内へのファーミングを実行します。 ファーミングはその時に起動しているクラスタサーバに対してのみデプロイ/アンデプロイが実行されます。ダウンしていたサーバの再起動時などにデプロイの反映は行われないということには注意が必要です。 | ||||||||||||
| 次回は | ||||||||||||
さて次回はもう少しTomcatのクラスタアーキテクチャを見た後、実際のクラスタ設定を行っていきます。 | ||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||
| ||||||||||||
| ||||||||||||

