 |

| | Javaアプリケーションサーバのクラスタリング機能比較 | 第2回:Tomcatのクラスタ設定 著者:サンモアテック 津田 新吾 2005/10/31
|
|
|
| 前のページ 1 2 3 4 次のページ |
 |
| クラスタリングの設定方法 |
ここからはTomcatをクラスタで動作させるための設定を行っていきます。2台のサーバを用意し、それぞれにTomcatがインストールされているとします。さらにApacheとmod_jkでロードバランスの設定が施されているもう1台のサーバもあるとします。なお以降の説明では、Tomcatのインストールされているディレクトリを「$CATALINA_HOME」とします。
|
| Tomcat本体の設定 |
それではTomcat本体の設定を行います。
Tomcatには設定ファイルがいくつかありますが、ここで変更を加えるのは"server.xml"($CATALINA_HOME/conf/server.xml)のみです。まず"server.xml"の「Cluster」要素がコメントアウトされているのを有効にします。
コメントアウトをはずす部分
|
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true">
<Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4" mcastPort="45564" mcastFrequency="500" mcastDropTime="3000"/>
<Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/>
<Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="pooled"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> </Cluster> |
 |
今回はどちらのTomcatでも"mcastAddr"と"mcastPort"はこのままの同じ値とします。また、同じセッションIDの処理を同じサーバで処理させるようにするスティッキーセッションを有効にするためのTomcat側の設定も行います。
以下のように1台目のTomcatは「jvmRoute="tomcat1"」とし、2台目は「jvmRoute="tomcat2"」とします。
1台目の"server.xml"
|
<!-- Define the top level container in our container hierarchy --> <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat1"> |
 |
2台目の"server.xml"
|
<!-- Define the top level container in our container hierarchy --> <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat2"> |
 |
| Apache側の設定 |
ApacheではTomcatと連携させるためにmod_jkが必要となります。通常はTomcatサイトなどから入手して用いますが、以下では例としてLinuxで"mod_jk.so"をビルドする場合をあげます。
- tarコマンドでファイルの解凍(以下、解凍先を"$CONNECTOR_HOME"とします)
- カレントディレクトリを"$CONNECTOR_HOME/jk/native"に変更
- "./buildconf.sh"を実行
- "./configure --with-apxs=$APACHE_HOME/bin/apxs"を実行
- makeを実行すると、"$CONNECTOR_HOM/jk/native/apache-XX"(XXはApacheのバージョン)に"mod_jk.so"が作成される
- "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 |
 |
前のページ 1 2 3 4 次のページ
|

|
 |

| 著者プロフィール 株式会社サンモアテック 津田 新吾 技術開発事業部。 某電線メーカーでカーナビの経路案内・経路計算などの組込みソフトウェア開発を10年近く経験。その後現在の(株)サンモアテックに入社。以来、携帯Javaでの業務支援システムやオープンソースのエンタープライズ適用、Webサービスなど主にサントリーグループ向けの新技術開発に従事している。
|
|
 |
|