Tomcat ロードバランシング設定手順
環境
以下2台の環境で行った.
Server1
OS:RedHat Linux
Apache:2.0.54
Tomcat:5.5.9
Apache/Tomcat Connector:mod_jk 1.2.14
JDK:j2sdk1.5.0_04
Server1
OS:RedHat Linux
Apache:2.0.54
Tomcat:5.5.9
Apache/Tomcat Connector:mod_jk 1.2.14
JDK:j2sdk1.5.0_04
Server2
OS:Windows XP SP1
Tomcat:5.5.9
JDK:j2sdk1.5.0_04
OS:Windows XP SP1
Tomcat:5.5.9
JDK:j2sdk1.5.0_04
Linux上でApacheを稼動させ,Linux/Windows上で稼動する2台のTomcatにバランシングするように設定.
設定方法
既にApache/Tomcatがインストールされていることを前提とする.各プロダクトのインストール方法はApache+Tomcatの連携手順を参考のこと.
workers.properties
# Worler List
#
worker.list=loadbalancer
#
worker.list=loadbalancer
#
# First Server Configuration
# Servername:Server1
#
worker.lb1.type=ajp13
worker.lb1.host=localhost
worker.lb1.port=8090
worker.lb1.lbfactor=1
# First Server Configuration
# Servername:Server1
#
worker.lb1.type=ajp13
worker.lb1.host=localhost
worker.lb1.port=8090
worker.lb1.lbfactor=1
#
# Second Server Configuration
# Servername:Server2
#
worker.lb2.type=ajp13
worker.lb2.host=${server2_ip_address}
worker.lb2.port=8091
worker.lb2.lbfactor=2
# Second Server Configuration
# Servername:Server2
#
worker.lb2.type=ajp13
worker.lb2.host=${server2_ip_address}
worker.lb2.port=8091
worker.lb2.lbfactor=2
#
# Loadbalancer worker
#
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=lb1,lb2
# Loadbalancer worker
#
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=lb1,lb2
注意したいのが,"worker.list".以前は,ここにロードバランスで使用するworker名を列挙していたのだが,
現在はbalancerのworker名のみ記述するように変更になったようだ.
なお,mod_jk1.2.7以降balanced_workersディレクティブは,balance_workersディレクティブに変更されている.
また,workerで使用するホスト名の指定も可能な限りIPアドレスで指定する方が良い.(DNSのlookupを行った場合,
レスポンスにかなり影響が出る."localhost"はDNSのlookupを行わないため問題ない)
現在はbalancerのworker名のみ記述するように変更になったようだ.
なお,mod_jk1.2.7以降balanced_workersディレクティブは,balance_workersディレクティブに変更されている.
また,workerで使用するホスト名の指定も可能な限りIPアドレスで指定する方が良い.(DNSのlookupを行った場合,
レスポンスにかなり影響が出る."localhost"はDNSのlookupを行わないため問題ない)
httpd.conf
JkMount /servlets-examples/* loadbalancer
JkMount /jsp-examples/* loadbalancer
JkMount /servlets-examples/* loadbalancer
JkMount /jsp-examples/* loadbalancer
使用するworkerをloadbalancerのものに変更.
server.xml
Server1,Server2のserver.xmlのJKConnector portの部分をそれぞれ修正し,workers.propertiesの各workerのport番号と一致させる.
Server1,Server2のserver.xmlのJKConnector portの部分をそれぞれ修正し,workers.propertiesの各workerのport番号と一致させる.
Apache/Tomcatを再起動.
ちゃんとバランシングされているかどうかを確認するため,各サーバのコンテンツファイルにマーキングして確認すると良い.
Windows/Linuxでバランシングすると,2:1の割合でWindowsのサーバに振り分けられる...現在解析中.
→どうやら,"lbfactor"の値に応じて振り分けられるみたい.今回はLinux側1,Windows側2と設定していたため,2:1の割合でバランシングされている模様.
でも,両方とも同じ値にしてもラウンドロビンでバランシングしてくれない...バグ?もうちょっと調べます.
ちゃんとバランシングされているかどうかを確認するため,各サーバのコンテンツファイルにマーキングして確認すると良い.
Windows/Linuxでバランシングすると,2:1の割合でWindowsのサーバに振り分けられる...現在解析中.
→どうやら,"lbfactor"の値に応じて振り分けられるみたい.今回はLinux側1,Windows側2と設定していたため,2:1の割合でバランシングされている模様.
でも,両方とも同じ値にしてもラウンドロビンでバランシングしてくれない...バグ?もうちょっと調べます.