JK2を利用すると、複数のTomcatホストに対してリクエストを割り振ることで、
ロードバランシングを手軽に実装することが可能になります(右図)。
この形で気になるのがセッショントラッキング(セッション情報の追跡)がどうなるのかですが、
JK2はそれもちゃんと考慮してくれています。
workers2.propertiesファイルでは2つのチャンネルを定義しています。
そしてそれらを同一のgroupとして定義します。
ここでもデフォルト値lbを使っています。
新たなグループを定義したい場合は、[lb:グループ名]というように、
lbワーカを定義して下さい。
lb_factor[注]というのは負荷係数を意味します。
例の場合は、yoshino:hikaru が 2:1 の割合になるようリクエストを振り分けます。
定義した値と逆になることに注意して下さい。
気になるセッショントラッキングですが、これにはtomcatId属性が使われます。
ここで定義した値と同じものを、それぞれのホストにあるserver.xmlの<Engine>要素の
jvmRoute属性に設定します。
こうすることでセッションIDの末尾に「.yoshino」という文字列が付加され、
それをキーにしてリクエストごとにセッションの追跡が行われます。
|
ロードバランシング |
 |
workers2.properties |
# ${APACHE2_HOME}/conf/workers2.properties
# ロードバランシングの設定例
# ログファイルの設定
[logger.file:0]
level=ERROR
file=${serverRoot}/logs/jk2.log
# ロードバランスグループ
[lb:lb]
# ホスト佳乃
[channel.socket:yoshino:8009]
info=Server Yoshino
host=yoshino.ytp.ne.jp
tomcatId=yoshino
lb_factor=1
## port=8009
## group=lb
# ホストひかる
[channel.socket:hikaru:8009]
info=Server Hikaru
host=hikaru.ytp.ne.jp
tomcatId=hikaru
lb_factor=2
## port=8009
## group=lb
# lbワーカグループで使うコンテキスト
[uri:/examples/*]
info=Map the Tomcat examples
## group=lb
# ステータス監視ワーカの設定
[status:]
[uri:/jkstatus/*]
group=status:
# 共有メモリ
[shm:]
# 使わない
disabled=1
|
server.xml |
★ホスト佳乃
<Engine name="Standalone" defaultHost="localhost"
jvmRoute="yoshino">
★ホストひかる
<Engine name="Standalone" defaultHost="localhost"
jvmRoute="hikaru">
|
|