勉強会

会社で新人やインターン(今までアルバイトと呼んでいましたがインターンに変更した)の人々のスキルアップのために週一くらいで勉強会を実施している。まぁ、アルゴリズムとかデータ構造回りをテーマにしたいと考えているけど、普通に講義っぽくするとつまらないので(というか、私自身のモチベーションが上がらない・・・)、Java(JDKね)のソースコードを通して学習しようという感じにしている(JDK6のソースとかも普通にダウンロードできるしね)。なかなか時間が取れず、そこまで見ることがなかったので、いろいろと見ると、こまごまとした発見があって面白い。と言う感じで、地道に継続して、みんなでスキルアップを目指そうっと。

GlassFishとApacheの連携(1台クラスタ版)

単純なApacheと連携やクラスタの設定は以前書いてものを参照してもらうとして、GlassFishのクラスタ構成でApacheとmod_jkでつなぐのを試す。

mod_jkの設定

# vi /etc/httpd/conf.d/jk.conf
LoadModule    jk_module  modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile     /var/log/httpd/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat     "%w %V %T"
JkShmFile "/tmp/jk-runtime-status"
JkMount /clusterjsp/* loadbalancer
# vi /etc/httpd/conf/workers.properties
worker.list=loadbalancer
worker.loadbalancer.balance_workers=worker1,worker2
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=8010
worker.worker2.lbfactor=1
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300
worker.loadbalancer.type=lb
# exit

ドメインとノードエージェントを起動して、パラメータ設定

$ ./bin/asadmin start-domain
$ ./bin/asadmin create-jvm-options --target cluster1 "-DjvmRoute=\${AJP_INSTANCE_NAME}"
$ ./bin/asadmin create-jvm-options --target cluster1 "-Dcom.sun.enterprise.web.connector.enableJK=\${AJP_PORT}"
$ ./bin/asadmin create-system-properties --target instance-ONE AJP_INSTANCE_NAME=instanceONE
$ ./bin/asadmin create-system-properties --target instance-ONE AJP_PORT=8009
$ ./bin/asadmin create-system-properties --target instance-TWO AJP_INSTANCE_NAME=instanceTWO
$ ./bin/asadmin create-system-properties --target instance-TWO AJP_PORT=8010
$ ./bin/asadmin stop-domain
$ ./bin/asadmin start-domain
$ ./bin/asadmin start-node-agent --syncinstances=true cluster1-nodeagent

1台でインスタンスが 2 つあるため、設定が面倒。Webの管理ツールでインスタンスのプロパティをみるとエラーが出るのでこのやり方が正解なのか不明。バグの可能性もあるけど、そこまで見てない。そもそも、こんな構成にするなということもあるかも。

Apacheの起動

$ su
# /etc/init.d/httpd restart