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

クラスタリングの設定方法

クラスタリングの設定方法

ここからはTomcatをクラスタで動作させるための設定を行っていきます。2台のサーバを用意し、それぞれにTomcatがインストールされているとします。さらにApacheとmod_jkでロードバランスの設定が施されているもう1台のサーバもあるとします。なお以降の説明では、Tomcat のインストールされているディレクトリを「$CATALINA_HOME」とします。


Tomcat本体の設定

それではTomcat本体の設定を行います。

Tomcatには設定ファイルがいくつかありますが、ここで変更を加えるのは"server.xml"($CATALINA_HOME/conf /server.xml)のみです。まず"server.xml"の「Cluster」要素がコメントアウトされているのを有効にします。

コメントアウトをはずす部分

         managerClassName="org.apache.catalina.cluster.session.DeltaManager"
         expireSessionsOnShutdown="false"
         useDirtyFlag="true">

             className="org.apache.catalina.cluster.mcast.McastService"
        mcastAddr="228.0.0.4"
        mcastPort="45564"
        mcastFrequency="500"
        mcastDropTime="3000"/>

             className="org.apache.catalina.cluster.tcp.ReplicationListener"
        tcpListenAddress="auto"
        tcpListenPort="4001"
        tcpSelectorTimeout="100"
        tcpThreadCount="6"/>

             className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
        replicationMode="pooled"/>

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

                   tempDir="/tmp/war-temp/"
              deployDir="/tmp/war-deploy/"
              watchDir="/tmp/war-listen/"
              watchEnabled="false"/>

今回はどちらのTomcatでも"mcastAddr"と"mcastPort"はこのままの同じ値とします。また、同じセッションIDの処理を同じサーバで処理させるようにするスティッキーセッションを有効にするためのTomcat側の設定も行います。

以下のように1台目のTomcatは「jvmRoute="tomcat1"」とし、2台目は「jvmRoute="tomcat2"」とします。

1台目の"server.xml"



2台目の"server.xml"



 

Apache側の設定

ApacheではTomcatと連携させるためにmod_jkが必要となります。通常はTomcatサイトなどから入手して用いますが、以下では例としてLinuxで"mod_jk.so"をビルドする場合をあげます。

  1. tarコマンドでファイルの解凍(以下、解凍先を"$CONNECTOR_HOME"とします)
  2. カレントディレクトリを"$CONNECTOR_HOME/jk/native"に変更
  3. "./buildconf.sh"を実行
  4. "./configure --with-apxs=$APACHE_HOME/bin/apxs"を実行
  5. makeを実行すると、"$CONNECTOR_HOM/jk/native/apache-XX"(XXはApacheのバージョン)に"mod_jk.so"が作成される
  6. "mod_jk.so"を"modules"(Apache 1.3であればlibexec)ディレクトリにコピー
表2:Linuxでmod_jk.soをビルドする流れ

ファイルの解凍のコマンド

tar zxfv jakarta-tomcat-connectors-current-src.tar.gz

   mod_jkで連携する際に変更、作成が必要なファイルは表3のようになります。

 

設定ファイル 説明 場所 分類
httpd.conf Apacheのメインの設定ファイル $APACHE/conf 変更
mod-jk.conf mod_jkを設定するためのファイル $APACHE/conf 作成
workers.properties Tomcatワーカーを設定するためのファイル $APACHE/conf 作成

表3:mod_jkで連携する際に変更、作成が必要なファイル

mod-jk.confの設定

以下に"mod-jk.conf"の設定例を示します。

"mod-jk.conf"の設定例

#mod_jkモジュールをロード
LoadModule jk_module modules/mod_jk.so

#workers.propertiesファイルを指定
JkWorkersFile conf/workers.properties

#ログファイル
JkLogFile  logs/mod_jk.log
JkLogLevel error

#URLマッピング
JkMount ⁄* loadbalancer

"mod-jk.conf"では、Apacheに"mod_jk.so"をロードするように指示します。また"workers.properties"ファイルを設定ファイルとして用いることやログファイルの指定を行います。

「JKMount」でURLマッピングを行いますが、それは"workers.properties"のワーカーリストの定義である 「worker.list」と合わせておいてください。なお、このファイルを作成せずに"httpd.conf"に含めてしまうことも可能ですが、ここで は別ファイルとして作成します。

 

workers.propertiesの設定

次に"workers.properties"の設定例を示します。

"workers.properties"の設定例

#ワーカーリストの定義
worker.list=loadbalancer # ← mod-jk.conf のURLマッピングとあわせておくこと

# Load-balancingワーカー
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
worker.loadbalancer.sticky_session=1

#tomcat1ワーカー
worker.tomcat1.port=8009
worker.tomcat1.host=server1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

#tomcat2ワーカー
worker.tomcat2.port=8009
worker.tomcat2.host=server2
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

"workers.properties"では「どのサーバにロードバランスするか」の設定を記述します。ここではスティッキーセッションを有効にするために「worker.loadbalancer.sticky_session=1」としています。この「1」は「true」でもかまいません。

また「worker.tomcat1.lbfactor=1」でロードバランスの割合の設定を行っています。"lbfactor"をほかのサーバの 5倍の値で設定すると、ほかのサーバより5倍多くのリクエストを受け付けることになります。これはmod_jk2の時とは逆になりますので、 mod_jk2を使ってこられた方はご注意ください。

最後に、Apacheの設定ファイルである"httpd.conf"に下記の1行を書き加えてください。



Include conf/mod-jk.conf

 

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

人気記事トップ10

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