今回は、GlassFishアプリケーションサーバを高可用性構成で利用するときに
使用すると便利な、ロードバランサプラグインを設定してみましょう。
HADBバンドル版のGlassFish Enterprise
Serverを利用する際は、インストーラにてロードバランサプラグインもインストールされますので、それほど導入に煩雑さはありません。
しかし、コミュニティ版のGlassFishや、HADBの付属しないGlassFish Enterprise
Serverを利用する際は、ロードバランサプラグインを別途ダウンロードしてきて
手動でインストール/設定を行う必要がありました。
このたび、ロードバランサプラグインのインストール/設定をGUI画面で簡単に
実施する為のGlassFish LoadBalancer Configuratorのベータ版がリリース
されたので、インストール/設定を紹介いたします。
今回使用するバイナリは以下のものです。
インストール手順
まず、GlassFishによるクラスタ環境を作成しますので、3つのホスト
(今回はSolarisゾーン)を用意します。
それぞれ、global, node1, node2という名前にしました。
このglobalに、GlassFish Domain管理サーバとロードバランサ用のWeb Server。
node1とnode2には、GlassFishのnodeagent(+インスタンス)をインストールします。
GlassFish DAS(Domain管理サーバ)のインストール
それでは最初にDomain管理サーバをインストールします。
global# pwd
/share
global# ls -l
合計 179851
-rwxr-xr-x 1 root root 91964589 1月 15日 17:18 sges-2_1_1-solaris-i586-ml.bin
global# ./sges-2_1_1-solaris-i586-ml.bin
インストールが完了したら、アプリケーションサーバを起動します。
global# /opt/SUNWappserver/bin/asadmin start-domain domain1
ドメイン domain1 を起動しています。お待ちください。
デフォルトのログの場所は /opt/SUNWappserver/domains/domain1/logs/server.log です。
出力を /opt/SUNWappserver/domains/domain1/logs/server.log にリダイレクトしています
ドメイン domain1 はクライアントの要求を受信する準備ができています。追加のサービスがバックグラウンドで開始されます。
ドメイン [domain1] はその設定で [Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs)] を実行しています。ログは [/opt/SUNWappserver/domains] にあります。
管理コンソールは [http://localhost:4848] で使用できます。
"asadmin" コマンドにも同じポート [4848] を使用します。
ユーザーの Web アプリケーションは次の URL で使用できます:
[http://localhost:8080 https://localhost:8181 ]。
次の web-contexts を使用できます:
[/web1 /__wstx-services ]。
標準の JMX クライアント (JConsole など) はドメイン管理のために JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://global:8686/jmxrmi] に接続できます。
ドメインは少なくとも次のポートで接続を待機しています:
[8080 8181 4848 3700 3820 3920 8686 ]。
ドメインはアプリケーションサーバークラスタおよびその他のスタンドアロンインスタンスをサポートしません。
global#
その後、管理Web画面から、クラスタサポートの追加を実行します。
global# /opt/SUNWappserver/bin/asadmin start-domain domain1
ドメイン domain1 を起動しています。お待ちください。
デフォルトのログの場所は /opt/SUNWappserver/domains/domain1/logs/server.log です。
出力を /opt/SUNWappserver/domains/domain1/logs/server.log にリダイレクトしています
ドメイン domain1 が起動しました。
ドメイン [domain1] はその設定で [Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs)] を実行しています。ログは [/opt/SUNWappserver/domains] にあります。
管理コンソールは [http://localhost:4848] で使用できます。
"asadmin" コマンドにも同じポート [4848] を使用します。
ユーザーの Web アプリケーションは次の URL で使用できます:
[http://localhost:8080 https://localhost:8181 ]。
次の web-contexts を使用できます:
[/web1 /__wstx-services ]。
標準の JMX クライアント (JConsole など) はドメイン管理のために JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://global:8686/jmxrmi] に接続できます。
ドメインは少なくとも次のポートで接続を待機しています:
[8080 8181 4848 3700 3820 3920 8686 ]。
ドメインはアプリケーションサーバークラスタおよびその他のスタンドアロンインスタンスをサポートします。
global#
これでドメイン管理サーバ(DAS)が完成しました。
つづいて、node1, node2にnodeagentをインストールします。
nodeagentのインストールでも、バイナリのインストール自体はDASの時と同じです。
その後、デフォルトでインストールされるDomainを起動させずに削除して、nodeagentの作成を行います。
node1# pwd
/net/global/share
node1# ls -l
合計 179851
-rwxr-xr-x 1 root root 91964589 1月 15日 17:18 sges-2_1_1-solaris-i586-ml.bin
node1# ./sges-2_1_1-solaris-i586-ml.bin
Connecting to X11 server 'localhost:10.0'.
Java Accessibility Bridge for GNOME loaded.
node1# /opt/SUNWappserver/bin/asadmin delete-domain domain1
ドメイン domain1 は削除されました。
node1# /opt/SUNWappserver/bin/asadmin create-node-agent --host global --user admin nodeagent1
管理パスワードを入力してください>
コマンド create-node-agent は正常に実行されました。
node1# /opt/SUNWappserver/bin/asadmin start-node-agent nodeagent1
管理ユーザー名を入力してください>admin
管理パスワードを入力してください>
マスターパスワードを入力してください [デフォルトを使用する場合は Enter キー]:>
出力を /opt/SUNWappserver/nodeagents/nodeagent1/agent/logs/server.log にリダイレクトしています
アプリケーション出力を /opt/SUNWappserver/nodeagents/nodeagent1/agent/logs/server.log にリダイレクトします
コマンド start-node-agent は正常に実行されました。
node1#
node2# pwd
/net/global/share
node2# ls -l
合計 179851
-rwxr-xr-x 1 root root 91964589 1月 15日 17:18 sges-2_1_1-solaris-i586-ml.bin
node2# ./sges-2_1_1-solaris-i586-ml.bin
Connecting to X11 server 'localhost:10.0'.
Java Accessibility Bridge for GNOME loaded.
node2# /opt/SUNWappserver/bin/asadmin delete-domain domain1
ドメイン domain1 は削除されました。
node2# /opt/SUNWappserver/bin/asadmin create-node-agent --host global --user admin nodeagent2
管理パスワードを入力してください>
コマンド create-node-agent は正常に実行されました。
node2# /opt/SUNWappserver/bin/asadmin start-node-agent nodeagent2
管理ユーザー名を入力してください>admin
管理パスワードを入力してください>
マスターパスワードを入力してください [デフォルトを使用する場合は Enter キー]:>
出力を /opt/SUNWappserver/nodeagents/nodeagent2/agent/logs/server.log にリダイレクトしています
アプリケーション出力を /opt/SUNWappserver/nodeagents/nodeagent2/agent/logs/server.log にリダイレクトします
コマンド start-node-agent は正常に実行されました。
node2#
Domain管理サーバとnodeagentが用意できたら、クラスタを作成しましょう。
クラスタ環境が作成できたら、サンプルアプリケーションを配備しておきましょう。
ここで、GlassFish管理画面への接続にSSLを利用する設定をしておきましょう。
global# /opt/SUNWappserver/bin/asadmin stop-domain
ドメイン domain1 が停止しました。
global# /opt/SUNWappserver/bin/asadmin start-domain domain1
ドメイン domain1 を起動しています。お待ちください。
デフォルトのログの場所は /opt/SUNWappserver/domains/domain1/logs/server.log です。
出力を /opt/SUNWappserver/domains/domain1/logs/server.log にリダイレクトしています
ドメイン domain1 が起動しました。
ドメイン [domain1] はその設定で [Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs)] を実行しています。ログは [/opt/SUNWappserver/domains] にあります。
管理コンソールは [https://localhost:4848] で使用できます。
"asadmin" コマンドにも同じポート [4848] を使用します。
ユーザーの Web アプリケーションは次の URL で使用できます:
[http://localhost:8080 https://localhost:8181 ]。
次の web-contexts を使用できます:
[/web1 /__wstx-services ]。
標準の JMX クライアント (JConsole など) はドメイン管理のために JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://global:8686/jmxrmi] に接続できます。
ドメインは少なくとも次のポートで接続を待機しています:
[8080 8181 4848 3700 3820 3920 8686 ]。
ドメインはアプリケーションサーバークラス���およびその他のスタンドアロンインスタンスをサポートします。
global#
今回は、ロードバランサ用にSun Web Server 7をインストールします。
global# pwd
/share/sjsws
global# ls -l
合計 591301
drwxr-xr-x 2 10 143 6 12月 15日 16:42 Legal
-rw-r--r-- 1 10 143 711 12月 15日 16:42 README.txt
drwxr-xr-x 3 10 143 15 12月 15日 18:06 WebServer
-rwxr-xr-x 1 10 143 27024 12月 15日 16:42 setup
-rw-r--r-- 1 root root 302493184 1月 19日 17:23 sjsws-7_0u7-solaris-x86.tar
global# ./setup
後述しますが、ロードバランサの設定においてWeb ServerでSSLを使う事になりますので、
Web Serverのインストールが完了したら、インスタンスのSSL設定を行っておきましょう。
SSLの設定までできたら、Web Serverを起動します。
ロードバランサ用のWeb ServerとGlassFish DASをクライアント認証を利用した
SSL接続を行う設定をする事で、GlassFish DASの画面からWeb Server上の
ロードバランサの設定を自動更新する事が可能になりますので、クライアント認証
を行えるようにDASの証明書を用意します。
global# which keytool
/usr/bin/keytool
global# pwd
/opt/SUNWappserver/domains/domain1/config
global# ls keystore.jks
keystore.jks
global# keytool -export -rfc -alias s1as -keystore ./keystore.jks -file s1as.rfc
キーストアのパスワードを入力してください:
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 警告 警告 警告 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* キーストアに保存された情報の完全性は検証されて \*
\* いません! 完全性を検証するには、キーストアの \*
\* パスワードを入力する必要があります。 \*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 警告 警告 警告 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
証明書がファイルに保存されました。
global# ls s1as.rfc
s1as.rfc
global#
ここまでは、環境の用意でしたが、今回の記事はここからが本番です。
それでは、ロードバランサコンフィグレータを利用してみましょう。
global# pwd
/share/glassfish-lbconfigurator
global# ls
User_Guide.pdf legal
glassfish-lbconfigurator.jar
global# java -jar glassfish-lbconfigurator.jar
Java Accessibility Bridge for GNOME loaded.
global#
これまでの設定でGlassFishからロードバランサの設定を行えるようになりましたので、
早速、ロードバランサを設定してみましょう。
設定が完了しましたので、接続確認してみます。
以上でロードバランサの設定が完了しました。
GlassFish LoadBalancer Configuratorの登場でHADBバンドル版以外の
GlassFishでも比較的容易にロードバランサプラグインの設定が行えるように
なりましたので、興味がある方はぜひ試してみて下さい。
※参考資料