Javaアプリケーションサーバのクラスタリング機能比較 2

クラスタリング基本動作の確認

クラスタリング基本動作の確認

さて、それでは実際にTomcatを立ち上げて見ましょう。まず"tomcat1"を立ち上げます。すると"catalina.out"の出力が表示されます。

次に"tomcat2"を立ち上げます。

"tomcat2"の"catalina.out"の出力では"tomcat1"の時とは異なり、以下の情報が追加され、"tomcat2"がメンバーシップに参加したことがわかります。
 

2005/01/05 19:01:17 org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded
情報: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.XX.ZZ:4001,
192.168.XX.ZZ,4001, alive=57671]

"tomcat1"の方の"catalina.out"にも以下のようなメッセージが出力され、こちらからもメンバーシップに"tomcat2"が加わったことがわかります。



2005/01/05 19:01:22 org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded
情報: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.XX.YY:4
001,192.168.XX.YY,4001, alive=7]

最後にApacheを立ち上げればクラスタ環境の設定は完了です。

 

ネットワーク切断時には注意

「クラスタ動作シーケンス」の項で説明したように、tomcat1がダウンした場合はそれをもう一方のtomcat2が検知して制御を移します。しかし「ネットワークケーブルが抜けた」とか「ネットワーク機器が故障した」というような場合、例えばtomcat2で処理が進んだのち、tomcat1が 復旧してもフェイルオーバーはうまく働きません。

これはtomcat1とtomcat2のどちらのセッションが最新なのかを正確に判断できる仕組みがTomcatには用意されていないからです。復旧させる前にtomcat1を終了し、ケーブルを挿し直した後に起動すれば、起動時にセッションレプリケーション情報を読み込み、正常にフェイルオーバー します。

つまり一度ネットワークから切り離されたサーバでセッションのフェイルオーバーを確実に行うには、Tomcatの再起動を行う必要があります。

これはTomcatクラスタの問題といえます。将来のバージョンではこの問題を解消するために、より信頼性のある通信技術であるJGroupsをプラグインとして選択可能にするという動きがあります。



Groups - The JGroups Project
http://www.jgroups.org

Tomcatのクラスタ設定のポイント

それではTomcatのクラスタ設定のポイントをまとめます。


  1. "mod_jk.so"を入手して、コンパイルし対象ディレクトリにコピーします
  2. "httpd.conf"、"mod-jk.conf"、"workers.propertis"の3つの設定ファイルを変更・追加します
  3. "mod-jk.conf"のURLマッピングは"workers.properties"のワーカーリストの定義に合わせます
  4. "workers.properties"の"lbfactor"の値はmod_jk2の場合と逆で、値が大きいほうがリクエストも多く受け付けるので注意します
  5. "server.xml"の「Cluster」要素のコメントをはずし、有効にします
  6. "server.xml"の「Engine」要素のjvmRoute属性を作成し、固有のIdを指定します
表4:Tomcatクラスタの設定のポイント

最後に

ざっとTomcatのクラスタリングの概念と設定についてご説明しましたが、いかがでしたでしょうか。実際にやってみないとなかなか具体的な動きがつかめないかもしれませんので、是非一度ご自分の環境でお試しいただければわかりやすいかと思います。

次回はJBossのクラスタリングについて解説をします。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る