« Tomcatでフェイルオーバー(JDBCStore) | Main | メールボックス容量が50倍に »

2007.06.03

Tomcatでフェイルオーバー(SimpleTcpCluster)

 SimpleTcpClusterを用いたセッションレプリケーションのテスト。設定の詳細に関してはThe Apache Tomcat 5.5 Servlet/JSP Container Clustering/Session Replication HOW-TOに記載されていますが、とりあえずSimpleTcpClusterを用いてレプリケーションを行うのであれば、server.xmlの

<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"

から
</Cluster>

までのところのコメントアウトを解除すればOKです(テストしたのはTomcat5.5.23です)。同一端末上で複数のTomcatを動作させる場合は、<Receiver>要素のtcpListenPort属性の値をずらしておく必要があります。それ以外の項目に関してはデフォルトのままでOKですが、ネットワークに全く接続していないPCで動作テストを行う場合、mcastBindAddress="127.0.0.1"の設定がMembership要素の部分に必要となるとのことです。また、TeedaExtentionを使用する等、拡張子がhtmlのファイルを動的ファイルとして使用する場合、
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"

  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

のfilterの部分から.*\.html;を除去しておく必要があります(他の拡張子(通常は静的ファイルとして使用)に関しても、同様に動的ファイルとして使用する場合でセッションにアクセスするような場合は除去しておく必要があります)。

 なお、今回はWebアプリケーションの同期処理の部分はスキップさせるため、<Deployer>要素の部分は別途コメントアウトしています。

 レプリケーションを行うアプリケーションのweb.xmlにおいて、<servlet>要素の前あたり(display-nameやdescriptionの後)に

<distributable/>

を指定しておく必要があります(どうも、これが指定されているWebアプリケーションがレプリケーションの対象になるようです)。

 問題なく設定できている場合、Tomcat起動時に

org.apache.catalina.cluster.session.DeltaManager start
情報: Register manager /Test to cluster element Host with name localhost

org.apache.catalina.cluster.session.DeltaManager start
情報: Starting clustering manager at /Test

ってな感じのログが出力されるはずです(上記のログではコンテキストルートがTestで登録されているアプリケーション(例えばTest.war)がレプリケーションの対象となったことを示しています)。

 なお、context.xmlにおいて、Manager要素が登録されている場合、Cluster構成は構築されますが、DeltaManagerを経由したセッションレプリケーションは行われなくなってしまうようです(上記のようなログが出てこない)。最初、これに気付かずに1時間ほど悩んでいました(苦笑)。

|

« Tomcatでフェイルオーバー(JDBCStore) | Main | メールボックス容量が50倍に »

Java」カテゴリの記事

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/15286840

Listed below are links to weblogs that reference Tomcatでフェイルオーバー(SimpleTcpCluster):

« Tomcatでフェイルオーバー(JDBCStore) | Main | メールボックス容量が50倍に »