そもそもPALポータルをクラスタのGlassFishで試したいというのが目的なのだけど、その前にそもそも普通にGlassFishでクラスタ設定ができることを確認する。とりあえず、手順は https://glassfish.dev.java.net/javaee5/build/GlassFish_LB_Cluster.html にあるから、そんな感じで設定する。今回は、CentOS5に入れてみた。
Sun Java System Webserver 6.1 をダウンロード
http://www.sun.com/download/products.xml?id=434aec1d
Sun Java System Webserver 6.1 をインストール
(CentOS5 だと compat-libstdc++-296 が必要)
$ mkdir sun-webserver61 $ cd sun-webserver61/ $ tar zxvf /tmp/sun-webserver61-rh72.tar.gz $ su # ./setup # /opt/SUNWwbsvr/https-admserv/start # exit $ cd ..
GlassFish をダウンロード
https://glassfish.dev.java.net/downloads/v2ur1-b09d.html
GlassFish をインストール
$ java -Xmx256m -jar /tmp/glassfish-installer-v2ur1-b09d-linux.jar $ cd glassfish/ $ ant -f setup-cluster.xml
Load Balancer plugin を GlassFish に入れる
http://download.java.net/javaee5/external/Linux/aslb/jars/aslb-9.1-MS4-b1.jar
$ mkdir lib/lbplugin $ pushd lib/lbplugin $ jar xvf /tmp/aslb-9.1-MS4-b1.jar $ unzip SUNWaslb.zip $ unzip SUNWaspx.zip $ rm *.zip $ chmod -R 755 lib $ popd
GlassFish HTTP load balancing 用 SJSWS 6.1 のインストールと設定
$ vi ./samples/quickstart/clusterjsp/lbplugin.sh asDir=<GlassFish のディレクトリ(つまり、現在のディレクトリ)> wsInstanceDir=/opt/SUNWwbsvr/https-<admservではない方>/ os=linux ... #echo "s/\//\\\\\\\\\//g" > aslb.tmp1.sed echo "s/\//\\\\\//g" > aslb.tmp1.sed ... #echo "s/\//\\\\\\\\\//g" > aslb1.tmp1.sed echo "s/\//\\\\\//g" > aslb1.tmp1.sed ... $ su # sh ./samples/quickstart/clusterjsp/lbplugin.sh # exit
GlassFish V2 domain の起動
$ ./bin/asadmin start-domain
クラスタの作成
$ pushd samples/quickstart/clusterjsp $ ../../../bin/asant setup-one-machine-cluster
クラスタの起動
$ ../../../bin/asant start_cluster
(エラーが出たけど、再度やったら、警告が出つつ起動した。まぁ、起動しているからとりあえず進む。)
Load Balancer Plugin の設定
$ su # vi /opt/SUNWwbsvr/https-<admservではない方>/config/loadbalancer.xml # exit
ブラウザで Sun Java System Webserver 6.1 の Server Manager にアクセスして、Apply ボタンで変更を適用する。そんで、そのサーバーを起動する。
clusterjsp サンプルアプリを配備
$ ../../../bin/asant deploy $ cd ../../../
clusterjsp サンプルアプリを表示
クッキーを共有していない 2 つのブラウザを使って、http://<サーバー名>/clusterjsp/ にアクセスする。すると、”Served From Server instance”に異なるインスタンス名を見ることができる。Sun Java System Webserver がラウンドロビンで切り替えてる。
In-memory Replication の確認
一応、clusterjsp で適当にセッションも追加しておく。そして、instance-ONE を使っているなら、instance-ONE を止める。
$ ./bin/asadmin stop-instance instance-ONE
止まったら、”RELOAD PAGE”ボタンをクリックする。すると、インスタンスが切り替わり、セッションも維持しているのが確認できる。
っという感じで、スクリプトをいじる必要があったり、クラスタ起動時に警告が出ていたけど、まぁ、一応できた。