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

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

さて、それでは実際に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

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30