Posts tagged ‘Load Balancer’

GlassFishのロードバランサプラグインで Apache と動作確認 Part2 (GlassFish 設定編)

GlassFishのロードバランサプラグインで Apache と連携 Part1 (Apache 設定編)
に引き続きGlassFish の設定と動作確認をしてみます。

GlassFish の設定と動作確認

実際に GlassFish 上でクラスタ構成を設定し、動作を確認してみましょう。

ドメインの起動

Part 1 で作成したドメインを起動してください。

dashost > asadmin start-domain clusterDomain
ドメイン clusterDomain を起動しています。お待ちください。
デフォルトのログの場所は /export/home/appserv/domains/clusterDomain/logs/server.log です。
出力を /export/home/appserv/domains/clusterDomain/logs/server.log にリダイレクトしています
ドメイン clusterDomain が起動しました。
ドメイン [clusterDomain] はその設定で [Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs)] を実行しています。ログは [/export/home/appserv/domains] にあります。
管理コンソールは [http://localhost:5048] で使用できます。
“asadmin” コマンドにも同じポート [5048] を使用します。
ユーザーの Web アプリケーションは次の URL で使用できます:
[http://localhost:5080 https://localhost:5081 ]。
次の web-contexts を使用できます:
[/web1 /__wstx-services ]。
標準の JMX クライアント (JConsole など) はドメイン管理のために JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://dashost:5086/jmxrmi] に接続できます。
ドメインは少なくとも次のポートで接続を待機しています:
[5080 5081 5048 5037 5038 5039 5086 ]。
ドメインはアプリケーションサーバークラスタおよびその他のスタンドアロンインスタンスをサポートします。


ノードエージェントの作成

次に、ドメインに所属するノードエージェントを2つ作成してください。
それぞれのノードエージェントが稼働するマシン上でコマンドを実行してください。
nodeagent1 の作成と起動

nodeagent1 > asadmin create-node-agent nodeagent1
コマンド create-node-agent は正常に実行されました。
nodeagent1 > asadmin start-node-agent nodeagent1
出力を /export/home/appserv/nodeagents/nodeagent1/agent/logs/server.log にリダイレクトしています
アプリケーション出力を /export/home/appserv/nodeagents/nodeagent1/agent/logs/server.log にリダイレクトします
コマンド start-node-agent は正常に実行されました。


nodeagent2 の作成と起動

nodeagent2 > asadmin create-node-agent nodeagent2
コマンド create-node-agent は正常に実行されました。
nodeagent2 > asadmin start-node-agent nodeagent2
出力を /export/home/appserv/nodeagents/nodeagent2/agent/logs/server.log にリダイレクトしています
アプリケーション出力を /export/home/appserv/nodeagents/nodeagent2/agent/logs/server.log にリダイレクトします
コマンド start-node-agent は正常に実行されました。


クラスタとインスタンスの作成

ドメイン管理サーバでクラスタを1つ作成してください。
クラスタ作成後、各ノードエージェント上にそれぞれ1つずつ
クラスタに所属するインスタンスを作成してください。

dashost > asadmin create-cluster cluster1
コマンド create-cluster は正常に実行されました。
dashost > asadmin create-instance –nodeagent nodeagent1 –cluster cluster1 instance1
コマンド create-instance は正常に実行されました。
dashost > asadmin create-instance –nodeagent nodeagent2 –cluster cluster1 instance2
コマンド create-instance は正常に実行されました


クラスタの起動

作成したクラスタを起動してみましょう。

dashost > asadmin start-cluster cluster1
クラスタ化されたインスタンス instance1 の起動に成功しました。
クラスタ化されたインスタンス instance2 の起動に成功しました。
コマンド start-cluster は正常に実行されました。


サンプルアプリケーションのデプロイ

次に、作成したクラスタに対してサンプルのアプリケーションをデプロイします。

dashost > asadmin deploy –target cluster1 –availabilityenabled=true
/sun/glassfish-v2.1.1/samples/quickstart/clusterjsp/clusterjsp.ear

コマンド deploy は正常に実行されました。


ロードバランサプラグインの設定と設定ファイルのエクスポート

続いて、ロードバランサの設定を作成しデプロイしたアプリケーションに対して
負荷分散を行う設定をします。

dashost > asadmin create-http-lb-config –target cluster1 lb-config
コマンド create-http-lb-config は正常に実行されました。
dashost > asadmin enable-http-lb-server cluster1
コマンド enable-http-lb-server は正常に実行されました。
dashost > asadmin enable-http-lb-application –name clusterjsp cluster1
コマンド enable-http-lb-application は正常に実行されました。
dashost > asadmin create-http-health-checker –interval 10 –config lb-config cluster1
コマンド create-http-health-checker は正常に実行されました。
dashost > asadmin export-http-lb-config –config lb-config /tmp/loadbalancer.xml
生成されたファイルの場所: /tmp/loadbalancer.xml
コマンド export-http-lb-config は正常に実行されました。


ここで,出力されたloadbalancer.xmlファイルを Apache 上にコピーする事で
負荷分散機能を利用することができるようになります。
しかし、手動でファイルをコピーする方法は古い方法ですので、
手動でファイルをコピーするのではなく、下記の方法を利用してください。

apache > cp /tmp/loadbalancer.xml /usr/local/apache2.2.14/conf/loadbalancer.xml


autoapplyenabled機能の有効化

下記コマンドを実行すると Web Server にログインして loadbalancer.xml を
直接編集したり、手動でコピーしなくても、asadmin コマンドから直接
設定変更内容を更新する事ができるようになります.

dashost > asadmin create-http-lb –target cluster1 –autoapplyenabled=true –devicehost apache.japan.sun.com –deviceport 443 lb-config
コマンド create-http-lb は正常に実行されました。
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。
dashost >


apply-http-lb-changes を実行すると、直ちに loadbalancer.xml が
更新されるようになります。
Apache 上で更新された loadbalancer.xml は下記の通りです。

apache > cat /usr/local/apache2.2.14/conf/loadbalancer.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE loadbalancer PUBLIC “-//Sun Microsystems Inc.//DTD Sun Java System Application Server 9.1//EN” “sun-loadbalancer_1_2.dtd”>
<loadbalancer>
<cluster name=”cluster1″ policy=”round-robin”>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent1.japan.sun.com:38080 https://nodeagent1.japan.sun.com:38181&#8243; name=”instance1″ weight=”100″/>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent2.japan.sun.com:38080 https://nodeagent2.japan.sun.com:38181&#8243; name=”instance2″ weight=”100″/>
<web-module context-root=”/clusterjsp” disable-timeout-in-minutes=”30″ enabled=”true”/>
<health-checker interval-in-seconds=”30″ timeout-in-seconds=”10″ url=”/”/>
</cluster>
<property name=”response-timeout-in-seconds” value=”60″/>
<property name=”reload-poll-interval-in-seconds” value=”60″/>
<property name=”https-routing” value=”false”/>
<property name=”require-monitor-data” value=”false”/>
<property name=”active-healthcheck-enabled” value=”false”/>
<property name=”number-healthcheck-retries” value=”3″/>
<property name=”rewrite-location” value=”true”/>
<property name=”rewrite-cookies” value=”false”/>
</loadbalancer>
<!–
This file was generated on: [Fri Dec 25 18:00:39 JST 2009].
Debugging Tips:
By default, instances and web-modules are not enabled.
Please enable them manually if you have not done that using asadmin.
–>
apache >


動作確認1: 高可用性のテスト

ブラウザから Apache の稼働するマシンへアクセスしてください。

ブラウザで Apache が稼働するマシンへ接続

http://apache.japan.sun.com/clusterjsp/

Served From Server instance: instance1


表示された画面から”Served From Server instance“のエントリを
確認してください。この例ではinstance1でアプリケーションが
稼働していることが分かります。

続いて、
Enter session attribute data:
にセッション情報を追加してください。

セッション情報を追加した後、稼働中のサーバインスタンス(instance1)
を停止します。

dashost > asadmin stop-instance instance1
コマンド stop-instance は正常に実行されました.


ブラウザをリロードするか,[Reload Page]ボタンを押してください。
“Served From Server instance:”のエントリが instance1からinstance2に
変更されているかと思います。また同時にセッション情報も引き継がれていること
が確認できるかと思います。
ここまでくれば、高可用性テストは完了です。

動作確認2:ドメイン管理サーバから Apache の負荷分散設定を変更するテスト

ここでは、asadmin コマンドだけを使って Apache が稼働するシステムに
ログインすることなく、負荷分散設定を変更するテストを行います。
まず、ドメイン管理サーバから instance2 に対するリクエストを送信しないように
設定します。

dashost > asadmin set “cluster1.server-ref.instance2.lb-enabled=false”
cluster1.server-ref.instance2.lb-enabled = false
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。


コマンドを実行すると、loadbalancer.xml の instance2 に該当する
設定箇所が変更されます。 (enabled が false)

apache > cat loadbalancer.xml|grep nodeagent2
<instance disable-timeout-in-minutes=”30″ enabled=”false”
listeners=”http://nodeagent2.japan.sun.com:38080
https://nodeagent2.japan.sun.com:38181&#8243; name=”instance2″ weight=”100″/>


instance2 に対する負荷分散を再会させたい場合,下記を実行してください。

dashost > asadmin set “cluster1.server-ref.instance2.lb-enabled=true”
cluster1.server-ref.instance2.lb-enabled = true
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。


再度、Apache の loadbalancer.xml を確認してみます。
instance2 に該当する設定箇所の enabled が true に変更されている事を確認できます。

apache > cat loadbalancer.xml | grep nodeagent2
<instance disable-timeout-in-minutes=”30″ enabled=”true”
listeners=”http://nodeagent2.japan.sun.com:38080
https://nodeagent2.japan.sun.com:38181&#8243; name=”instance2″ weight=”100″/>


動作確認3:新規インスタンス追加時の負荷分散振り先の追加テスト

最後に、インスタンスを追加してクラスタ構成を変更し負荷分散の対象を増やすテストを行います。
まず、クラスタに対して新規インスタンスを追加して起動してください。
起動したのち、apply-http-lb.-changes を実行してください。
コマンドを実行すると、負荷分散の振り先が追加されます。

dashost > asadmin create-instance –nodeagent nodeagent1 –cluster cluster1 instance3
HTTP_LISTENER_PORT の代わりに 38,081 を使用します。
HTTP_SSL_LISTENER_PORT の代わりに 38,182 を使用します。
IIOP_SSL_LISTENER_PORT の代わりに 33,821 を使用します。
JMS_PROVIDER_PORT の代わりに 37,677 を使用します。
IIOP_LISTENER_PORT の代わりに 33,701 を使用します。
JMX_SYSTEM_CONNECTOR_PORT の代わりに 38,687 を使用します。
IIOP_SSL_MUTUALAUTH_PORT の代わりに 33,921 を使用します。
コマンド create-instance は正常に実行されました。
dashost > asadmin create-instance –nodeagent nodeagent2 –cluster cluster1 instance4
HTTP_LISTENER_PORT の代わりに 38,081 を使用します。
HTTP_SSL_LISTENER_PORT の代わりに 38,182 を使用します。
IIOP_SSL_LISTENER_PORT の代わりに 33,821 を使用します。
JMS_PROVIDER_PORT の代わりに 37,677 を使用します。
IIOP_LISTENER_PORT の代わりに 33,701 を使用します。
JMX_SYSTEM_CONNECTOR_PORT の代わりに 38,687 を使用します。
IIOP_SSL_MUTUALAUTH_PORT の代わりに 33,921 を使用します。
コマンド create-instance は正常に実行されました。
dashost > asadmin start-instance instance3
コマンド start-instance は正常に実行されました。
dashost > asadmin start-instance instance4
コマンド start-instance は正常に実行されました。
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。


コマンドを実行後、loadbalancer.xml を確認してみましょう。
追加したインスタンスに対する振り先設定が追加されています。

apache > cat loadbalancer.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE loadbalancer PUBLIC “-//Sun Microsystems Inc.//DTD Sun Java System Application Server 9.1//EN” “sun-loadbalancer_1_2.dtd”>
<loadbalancer>
<cluster name=”cluster1″ policy=”round-robin”>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent1.japan.sun.com:38080 https://nodeagent1.japan.sun.com:38181&#8243; name=”instance1″ weight=”100″/>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent2.japan.sun.com:38080 https://nodeagent2.japan.sun.com:38181&#8243; name=”instance2″ weight=”100″/>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent1.japan.sun.com:38081 https://nodeagent1.japan.sun.com:38182&#8243; name=”instance3″ weight=”100″/>
<instance disable-timeout-in-minutes=”30″ enabled=”true” listeners=”http://nodeagent2.japan.sun.com:38081 https://nodeagent2.japan.sun.com:38182&#8243; name=”instance4″ weight=”100″/>
<web-module context-root=”/clusterjsp” disable-timeout-in-minutes=”30″ enabled=”true”/>
<health-checker interval-in-seconds=”30″ timeout-in-seconds=”10″ url=”/”/>
</cluster>
<property name=”response-timeout-in-seconds” value=”60″/>
<property name=”reload-poll-interval-in-seconds” value=”60″/>
<property name=”https-routing” value=”false”/>
<property name=”require-monitor-data” value=”false”/>
<property name=”active-healthcheck-enabled” value=”false”/>
<property name=”number-healthcheck-retries” value=”3″/>
<property name=”rewrite-location” value=”true”/>
<property name=”rewrite-cookies” value=”false”/>
</loadbalancer>
<!–
This file was generated on: [Fri Dec 25 18:22:35 JST 2009].
Debugging Tips:
By default, instances and web-modules are not enabled. Please enable them manually if you have not done that using asadmin.
–>
apache >

※ 新しく追加したインスタンスの設定が enabled=”false”になっている場合、
別途、下記コマンドを実行し有効にしてください。

dashost > asadmin set “cluster1.server-ref.instance3.lb-enabled=true”
dashost > asadmin set “cluster1.server-ref.instance4.lb-enabled=true”
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。


このように、ロードバランサプラグインを利用し、自動適用の設定を行うと、
アプリケーションサーバ側のクラスタ内の変更に対して、前段の Web サーバ側に
一切ログインせずに、振り先を自由に変更できるため、導入時には若干面倒ですが、運用時はとても楽になります。

また、お気づきの事と思いますが1度設定を行うと、Apache のサーバにログインする必要がないばかりか、負荷分散設定を変更した際に、Apache の再起動なども必要としていないことがわかるかと思います。
これは、loadbalancer.xml の更新をチェックする内部プログラムが別途稼働しており、更新があった場合に、動的に設定を有効にする仕組みが導入されているためです。これで、Web サーバ側の管理が随分楽になるのではないかと思います。
ぜひ、上記を参考にお試しください。

最後に、今回は GlassFish のロードバランサプラグインを Apache にインストールしていますが、Sun Java System Web Server でも autoapply の機能は使うことができますのでご安心ください。

追記:
正直、ちょっと面倒という方は、Sun GlassFish Enterprise Server with HADB を使ってみるのもいいかもしれません、with HADB 版ではインストーラからロードバランサプラグインのインストールもかんたんにできるようになっていますので、試す価値はあるかもしれません。
with HADB 版を利用しない場合は、上記の方法をご利用ください。

広告

2009年12月25日 at 5:52 AM 2件のコメント

GlassFishのロードバランサプラグインで Apache と連携 Part1(Apache 設定編)

今日は Apache と GlassFish の連携を行いたい方にGlassFish のロードバランサプラグインを使った連携方法について紹介します。GlassFish のロードバランサプラグインを使うと、運用がとても楽になります。

例えば、GlassFish 側で提供しているサービスを停止したい場合、
GlassFish 側で設定を無効にした後、Apache にログインして設定を
しなおさなくても、設定変更を Apache 側に送信することができるように
なります。例えば、インスタンスを4つもつクラスタで、一つずつ
インスタンスを再起動して、ローリングアップグレードを行う場合を
考えてみましょう。負荷分散設定を無効にして、Web サーバ側の
設定変更を下記のたった2つのコマンドを実行するだけでよくなります。

GlassFish のロードバランサプラグインを使わない場合は、Apache が
稼働するマシンにログインして mod_proxy 等の設定を手動で変更して
などの作業を行っていたかと思いますが、ロードバランサプラグインを
使用するともうそのような面倒なことはしなくてよくなります。

dashost > asadmin set “cluster1.server-ref.instance2.lb-enabled=false”
cluster1.server-ref.instance2.lb-enabled = false
dashost > asadmin apply-http-lb-changes lb-config
コマンド apply-http-lb-changes は正常に実行されました。

この環境を作る手間は大変ですが、運用がかなり楽になりますので、
ぜひ、お試しください。また、下記の手順は全て asadmin のコマンドを
使用して設定していますので、設定が複雑と思われるかもしれませんが、
基本的には、下記の手順に従い設定すれば環境が構築できるかと思いますので、
ぜひチャレンジしてみてください。また慣れれば大きなパワーを発揮する
asadmin もぜひこの機会にお試しください。

必要なソフトウェア:
● apache2.2.14
● OpenSSL/0.9.8k  Install:
インストール場所:/usr/local/ssl
● GlassFish:
インストール場所:/sun/glassfish-v2.1.1
http://www.sun.com/appserver より入手
● GlassFish LB Plugin (aslb-9.1.1-b**.jar)の入手先
http://download.java.net/javaee5/external/SunOS/aslb/jars/ (Solaris SPARC用)
http://download.java.net/javaee5/external/SunOS_X86/aslb/jars/(Solarix x86用)
http://download.java.net/javaee5/external/Linux/aslb/jars/ (Linux 用)
http://download.java.net/javaee5/external/WINNT/aslb/jars/ (Windows 用)

必要なシステム:
今回の説明で登場するマシンの役割とホスト名、また各ホストで実行する際の
コマンドプロンプトを紹介します。複数のマシンがでてきますので、実行時
わかりやすくするため、プロンプトを変えて表示していますので、プロンプトを
確認し、どこで実行されているかを確認してください。

役割 ホスト名 実行プロンプト
ドメイン管理サーバ: dashost.japan.sun.com dashost >
認証局(CA) : ca-admin.japan.sun.com ca-admin >
Apache Web サーバ: apache.japan.sun.com apache >
ノードエージェント1: nodeagent1.japan.sun.com nodeagent1 >
ノードエージェント2: nodeagent2.japan.sun.com nodeagent2 >

環境変数 (das/nodeagent1/nodeagent2 全てのマシンで下記を設定):

下記の環境変数はドメイン管理サーバ、各ノードエージェントで全て同じ設定を
してください。

dashost > vi .tcshrc
set path=(/usr/sfw/bin /sun/glassfish-v2.1.1/bin /usr/jdk/jdk1.6.0_17/bin $path)
setenv LD_LIBRARY_PATH “/sun/glassfish-v2.1.1/lib:/sun/glassfish-v2.1.1/lib/plug
in/lib:/usr/sfw/lib:/lib:/usr/lib”
setenv JAVA_HOME /usr/jdk/jdk1.6.0_17
setenv AS_ADMIN_USER clusterAdmin
setenv AS_ADMIN_PASSWORDFILE /export/home/appserv/.passwordfile
setenv AS_ADMIN_HOST dashost.japan.sun.com
setenv AS_ADMIN_PORT 5048

パスワードファイル(das/nodeagent1/nodeagent2 全てのマシンで下記を設定):
また、管理者のパスワードの毎回の入力を省略するため、あらかじめパスワードを
設定しておきます。AS_ADMIN_PASSWORD は GUI のログイン画面等で入力する
パスワードで AS_ADMIN_MASTERPASSWORDは SSL の証明書データベースを
操作する際に使用するパスワードです。

dashost > vi .passwordfile
AS_ADMIN_PASSWORD=adminadmin
AS_ADMIN_MASTERPASSWORD=changeit

Apache 2.2.14 のコンパイル

SSL と マルチコア対応のオプションを有効にして make します。

apache > ./configure –with-ssl=/usr/local/ssl –prefix=/usr/local/apache2.2.14 –enable-ssl –enable-so –with-included-apr

apache > make
apache > make install

Apache のサーバ名を編集

apache >vi /usr/local/apache2.2.14/conf/httpd.conf
ServerName apache.japan.sun.com

Apache の動作確認

Apache を起動し、ヘッダの内容を確認してみましょう。

apache > /usr/local/apache2.2.14/bin/apachectl start

TELNET による接続確認と Server ヘッダの内容確認

apache > telnet localhost 80
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: apache.japan.sun.com

HTTP/1.1 200 OK
Date: Fri, 25 Dec 2009 05:53:39 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8k
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: “f580c-2c-3e9564c23b600”
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

<html><body><h1>It works!</h1></body></html>

他の設定を行うため、一時的に Apache を停止しておきます。

apache > /usr/local/apache2.2.14/bin/apachectl stop

クラスタ対応の GlassFish 新規ドメインの作成とサーバ証明書の抽出

次に、クラスタに対応した新規ドメインを作成します。

dashost > asadmin create-domain –portbase=5000 –profile=cluster clusterDomain
Admin のポート 5048 を使用しています。
HTTP Instance のポート 5080 を使用しています。
JMS のポート 5076 を使用しています。
IIOP のポート 5037 を使用しています。
HTTP_SSL のポート 5081 を使用しています。
IIOP_SSL のポート 5038 を使用しています。
IIOP_MUTUALAUTH のポート 5039 を使用しています。
JMX_ADMIN のポート 5086 を使用しています。
コマンド行または環境で の指定どおりにプロファイル cluster を使用してドメインを作成しています。
指定されたロケール [ja_JP] のファイルが [/sun/glassfish-v2.1.1/lib/install/templates/locales/ja_JP/index.html] に見つかりませんでした。デフォルト (en_US) の index.html を使用します。
使用するセキュリティーストア: JKS
ドメイン clusterDomain が作成されました。
dashost >

次に GlassFish ドメイン管理サーバのサーバ証明書を抽出します.
この際,管理ガイドには certutil コマンドを使用した例が
記載されておりますが,certutil コマンドは GlassFish
with HADB のインストーラを使用してインストールした場合のみ
利用可能です.そこで HADB を使用しないインストーラを
使用する場合は,JavaSE 付属の keytool を使用して証明書をエクスポートします.

dashost > cd domains/clusterDomain/config/
dashost > keytool -export -rfc -alias s1as -keystore keystore.jks -file sjas.crt
キーストアのパスワードを入力してください: [changeit]
証明書がファイル <sjas.crt> に保存されました。
dashost >

Apache の SSL 設定とLB プラグインの設定

ロードバランサモジュールの設定
Apache の httpd.conf に対してロードバランサプラグインが使用する
モジュールを読み込ませる設定を行います。

apache > vi /usr/local/apache2.2.14/conf/httpd.conf

……
##BEGIN EE LB Plugin Parameters
LoadFile /usr/lib/libCstd.so.1
LoadModule apachelbplugin_module  /usr/local/apache2.2.14/modules/mod_loadbalancer.so
#AddModule apachelbplugin_module
<IfModule apachelbplugin_module>
config-file  /usr/local/apache2.2.14/conf/loadbalancer.xml
locale en
</IfModule>
##END EE LB Plugin Parameters

GlassFish のサーバ証明書のコピーとシリアル番号の確認
GlassFish でエクスポートしたサーバ証明書 (sjsas.crt) を Apache の
証明書管理ディレクトリにコピーします。
コピーした後、GlassFish のサーバ証明書の内容を確認してみましょう。

ここで,GlassFish のサーバ証明書からシリアル番号(下記では:4b345534)
を覚えておいてください。

apache > mkdir /usr/local/apache2.2.14/conf/ssl.crt
DAS で取得した自己署名サーバ証明書(sjsas.crt)を事前に FTP 等で Apache の稼働するサーバへ転送
apache > mv sjsas.crt /usr/local/apache2.2.14/conf/ssl.crt/
apache > cd /usr/local/apache2.2.14/conf/ssl.crt/
apache > keytool -printcert -file sjsas.crt
所有者: CN=dashost, OU=Sun GlassFish Enterprise Server, O=Sun Microsystems, L=Santa Clara, ST=California, C=US
発行者: CN=dashost, OU=Sun GlassFish Enterprise Server, O=Sun Microsystems, L=Santa Clara, ST=California, C=US
シリアル番号: 4b345534
有効期間の開始日: Fri Dec 25 15:01:24 JST 2009 終了日: Mon Dec 23 15:01:24 JST 2019
証明書のフィンガープリント:
MD5: 84:FD:B4:E9:B7:EF:88:F2:04:B0:20:23:9D:D9:A5:9E
SHA1: DC:48:8E:C4:A2:AB:C2:AF:FC:8B:C5:54:59:F5:39:14:0D:82:E3:BE
署名アルゴリズム名: SHA1withRSA
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA EA 09 87 42 BC D8 04 C3 88 B1 8E 93 2D 0A 3A ….B……..-.:
0010: 74 3B 19 07 t;..
]
]
apache >

Apache SSL設定に対する LB プラグイン設定追加

下記に示す、<Location /lbconfigupdate>から始まる
数行をコピーし、それ以外の箇所を適切に編集してください。
ここで1点注意して頂きたいのはシリアル番号の入力箇所です。
上記で確認したシリアル番号は小文字で表示されていますが,

下記のApache の httpd-ssl.conf ファイル中には全て大文字に変換して
記載してください.
(例:4b345534 → 4B345534 に変更)

apache > vi /usr/local/apache2.2.14/conf/extra/httpd-ssl.conf

<VirtualHost apache.japan.sun.com:443> <—- 修正
ServerName apache.japan.sun.com:443 <—- 修正
ServerAdmin admin-webserver@Sun.COM <—- 修正

下記の行をファイルの最後に追加
<Location /lbconfigupdate>
SSLVerifyClient require
SSLVerifyDepth 1
SSLRequireSSL
SSLCACertificateFile /usr/local/apache2.2.14/conf/ssl.crt/sjsas.crt
SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
and %{SSL_CLIENT_S_DN_O} eq “Sun Microsystems” \
and %{SSL_CLIENT_S_DN_OU} eq “Sun GlassFish Enterprise Server” \
and %{SSL_CLIENT_M_SERIAL} eq “4B345534” )
</Location>

<Location /getmonitordata>
SSLVerifyClient require
SSLVerifyDepth 1
SSLRequireSSL
SSLCACertificateFile /usr/local/apache2.2.14/conf/ssl.crt/sjsas.crt
SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
and %{SSL_CLIENT_S_DN_O} eq “Sun Microsystems” \
and %{SSL_CLIENT_S_DN_OU} eq “Sun GlassFish Enterprise Server” \
and %{SSL_CLIENT_M_SERIAL} eq “4B345534” )
</Location>

※ 注意:ここでは GlassFish のインストール時に自動的に
作成されるデフォルトのサーバ証明書を使った時の例を記載
しています。仮に GlassFish のドメイン管理サーバのサーバ
証明書を入れ替えている場合は、必要におうじて、SSL_CLIENT_S_DN_O
、SSL_CLIENT_S_DN_OU等のエントリも修正してください。

次に httpd-ssl.conf を有効にします。
httpd.conf ファイルを修正してください。 (SSL の有効化)

apache > vi /usr/local/apache2.2.14/conf/httpd.conf

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf   <——-コメントアウト

次に httpd-mpm.conf を有効にします。
httpd.conf ファイルを修正してください。(マルチプロセッサ対応)

apache > vi /usr/local/apache2.2.14/conf/httpd.conf

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf   <——-コメントアウト

次に Apache の起動時に読み込むライブラリパスを追加してください。

apache > vi /usr/local/apache2.2.14/bin/envvars
LD_LIBRARY_PATH=”/usr/local/apache2.2.14/lib:

/usr/local/apache2.2.14/modules:/usr/lib/mps:$LD_LIBRARY_PATH”

OpenSSL でプライベート認証局(CA)の構築
認証局(CA) の構築の準備 (openssl.cnfの編集)をします。
設定ファイル中から下記の行を編集してください。

[ usr_cert ]

basicConstraints=CA:TRUE <—FALSEから変更

プライベートの認証局(CA) の構築

ca-server > ./misc/CA.pl -newca
CA certificate filename (or enter to create)

Making CA certificate …
Generating a 1024 bit RSA private key
….++++++
…………………………………………………++++++
writing new private key to ‘./demoCA/private/cakey.pem’
Enter PEM pass phrase:[password]
Verifying – Enter PEM pass phrase:[password]
—–

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Setagaya Yoga
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sun Microsystems
Organizational Unit Name (eg, section) []:Software Practice
Common Name (eg, YOUR name) []:ca-server.sun.com
Email Address []:caadmin@Sun.COM

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/local/ssl/openssl.cnf

Enter pass phrase for ./demoCA/private/cakey.pem:[password]
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
cd:ea:db:f4:c8:e3:93:84
Validity
Not Before: Nov  9 04:40:09 2009 GMT
Not After : Nov  8 04:40:09 2012 GMT
Subject:
countryName               = JP
stateOrProvinceName       = Tokyo
organizationName          = Sun Microsystems
organizationalUnitName    = Software Practice
commonName                = ca-server.sun.com
emailAddress              = caadmin@Sun.COM
X509v3 extensions:
X509v3 Subject Key Identifier:
1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
X509v3 Authority Key Identifier:
keyid:1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
DirName:/C=JP/ST=Tokyo/O=Sun Microsystems/OU=Software Practice/CN=ca-server.sun.com/emailAddress=caadmin@Sun.COM
serial:CD:EA:DB:F4:C8:E3:93:84

X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Nov  8 04:40:09 2012 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

Apache 用のサーバ証明書の作成(CSRの作成)
まず、Apache 上で秘密鍵を生成します。

apache > mkdir /usr/local/apache2.2.14/conf/ssl.key
apache > cd /usr/local/apache2.2.14/conf/ssl.key
apache > openssl genrsa -des3 -out apache.japan.sun.com.key 2048
Generating RSA private key, 2048 bit long modulus
……………………+++
…….+++
e is 65537 (0x10001)
Enter pass phrase for apache.japan.sun.com.key:[password]
Verifying – Enter pass phrase for apache.japan.sun.com.key:[password]
apache > ls
apache.japan.sun.com.key

Apache 上で認証局(CA)に提出する CSR の作成
認証局に提出する CSR を生成します。

apache >openssl req -new -key apache.japan.sun.com.key -subj “/emailAddress=webmaster@japan.sun.com/CN=apache.japan.sun.com/OU=Software Practice/O=Sun Microsystems/L=Setagaya/ST=Tokyo/C=JP” -out apache.japan.sun.com.csr
Enter pass phrase for apache.japan.sun.com.key:[password]

apache > pwd
/usr/local/apache2.2.14/conf/ssl.key
apache > ls
apache.japan.sun.com.csr apache.japan.sun.com.key

認証局(CA) でサーバ証明書の署名の準備
認証局(CA) の設定を変更し、サーバ証明書を署名する準備をします。

ca-admin > vi openssl.cnf

[ usr_cert ]
basicConstraints=CA:FALSE <—TRUEから変更
nsCertType = server <———- コメントアウト

認証局(CA) で Apache のサーバ証明書を署名
Apache 上で生成した CSR を認証局(CA)で署名を行います。
認証局(CA) が稼働するマシンまで Apache 上で生成した
CSR ファイルを FTP 等でコピーしてください。

ca-server > openssl ca -config ./openssl.cnf -in

./apache.japan.sun.com.csr -keyfile ./demoCA/private/cakey.pem
-cert ./demoCA/cacert.pem -out apache.japan.sun.com.signed-server-cert

Using configuration from ./openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
cd:ea:db:f4:c8:e3:93:93
Validity
Not Before: Dec 25 06:58:47 2009 GMT
Not After : Dec 25 06:58:47 2010 GMT
Subject:
countryName               = JP
stateOrProvinceName       = Tokyo
organizationName          = Sun Microsystems
organizationalUnitName    = Software Practice
commonName                = apache.japan.sun.com
emailAddress              = webmaster@japan.sun.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
1E:1F:C2:95:F6:29:2C:53:54:27:32:66:FF:59:60:FA:E1:3B:C5:19
X509v3 Authority Key Identifier:
keyid:1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
Certificate is to be certified until Dec 25 06:58:47 2010 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
ca-server >

認証局(CA)から取得した、署名済みサーバ証明書を証明書ディレクトリへコピー

認証局で署名された署名済みのサーバ証明書を Apache まで FTP 等でコピーして
下さい。ファイルを転送後、Apache の証明書管理ディレクトリ(ssl.crt)へ
コピーします。

apache > mv apache.japan.sun.com.signed-server-cert

/usr/local/apache2.2.14/conf/ssl.crt/

署名済みサーバ証明書の内容を確認
署名済みのサーバ証明書の内容を確認しておきます。

apache > cat apache.japan.sun.com.signed-server-cert

Certificate:
Data:
Version: 3 (0x2)
Serial Number:
cd:ea:db:f4:c8:e3:93:93
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice,
CN=ca-server.sun.com/emailAddress=caadmin@Sun.COM
Validity
Not Before: Dec 25 06:58:47 2009 GMT
Not After : Dec 25 06:58:47 2010 GMT
Subject: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice,
CN=apache.japan.sun.com/emailAddress=webmaster@japan.sun.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:c9:a1:75:01:3b:44:d8:2e:bb:ff:97:fa:c0:09:
96:d0:ae:9f:92:3a:d8:f0:7c:77:bf:2b:8d:82:14:
3e:14:ec:26:01:ab:68:ca:6a:ab:1a:e6:37:08:89:
2a:73:83:d6:61:7e:0c:37:4c:9c:35:38:e4:20:a8:
25:df:60:cd:7c:ea:17:7c:1d:5b:9f:0b:40:3a:d7:
fc:2e:e4:af:66:62:c3:fd:46:a7:31:11:68:96:f4:
cb:c3:7d:81:bd:37:b8:53:ef:cc:68:78:51:9d:a2:
48:f5:80:4e:d6:49:3b:8b:0d:db:81:8e:58:fd:2c:
bf:47:90:87:6d:40:e6:dd:8c:63:c2:bd:62:d4:aa:
70:4a:b0:91:ec:61:d4:b5:18:ea:b6:2b:47:83:68:
72:f7:01:d6:ad:aa:44:85:34:8a:f6:9d:99:25:57:
02:32:02:02:8d:2c:98:bc:99:cb:ac:ce:a5:b3:27:
46:ca:4c:ee:af:41:14:8f:9c:62:fc:06:20:c3:88:
53:f1:b2:3a:6e:7c:75:4b:8f:da:83:8a:34:d4:29:
40:6d:ad:85:e5:c8:6e:f8:21:8c:7c:ec:3c:00:b6:
07:e1:97:78:48:04:82:80:19:28:28:12:04:9c:b1:
f6:4f:38:44:74:41:98:ab:e6:5f:8d:c2:84:a6:a8:
4e:8d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
1E:1F:C2:95:F6:29:2C:53:54:27:32:66:FF:59:60:FA:E1:3B:C5:19
X509v3 Authority Key Identifier:
keyid:1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
Signature Algorithm: sha1WithRSAEncryption
2c:49:f2:d9:90:a8:1d:a5:0d:3b:14:1c:ef:1c:b2:5d:35:66:
2f:9f:ca:b1:56:9f:6d:5f:84:70:66:bf:44:da:6e:c4:c9:08:
81:d1:f7:6e:d0:6c:35:5d:45:5a:52:1c:6c:5f:d0:24:fa:15:
c2:88:a9:64:b7:15:e5:ec:d3:a7:2e:53:90:c0:d1:16:fc:cc:
58:a1:65:08:c9:4c:34:38:e2:57:3f:b6:e8:db:f8:92:62:c2:
fd:59:81:7d:d7:aa:1a:43:20:1b:b7:18:09:97:06:47:d9:3a:
09:14:bb:63:18:0f:15:81:a2:0d:89:cc:32:f9:57:88:78:6f:
72:d8
-----BEGIN CERTIFICATE-----
MIIDvzCCAyigAwIBAgIJAM3q2/TI45OTMA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3Rl
bXMxGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2
ZXIuc3VuLmNvbTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NMB4XDTA5
MTIyNTA2NTg0N1oXDTEwMTIyNTA2NTg0N1owgZsxCzAJBgNVBAYTAkpQMQ4wDAYD
VQQIEwVUb2t5bzEZMBcGA1UEChMQU3VuIE1pY3Jvc3lzdGVtczEaMBgGA1UECxMR
U29mdHdhcmUgUHJhY3RpY2UxHTAbBgNVBAMTFGFwYWNoZS5qYXBhbi5zdW4uY29t
MSYwJAYJKoZIhvcNAQkBFhd3ZWJtYXN0ZXJAamFwYW4uc3VuLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMmhdQE7RNguu/+X+sAJltCun5I62PB8
d78rjYIUPhTsJgGraMpqqxrmNwiJKnOD1mF+DDdMnDU45CCoJd9gzXzqF3wdW58L
QDrX/C7kr2Ziw/1GpzERaJb0y8N9gb03uFPvzGh4UZ2iSPWATtZJO4sN24GOWP0s
v0eQh21A5t2MY8K9YtSqcEqwkexh1LUY6rYrR4NocvcB1q2qRIU0ivadmSVXAjIC
Ao0smLyZy6zOpbMnRspM7q9BFI+cYvwGIMOIU/GyOm58dUuP2oOKNNQpQG2theXI
bvghjHzsPAC2B+GXeEgEgoAZKCgSBJyx9k84RHRBmKvmX43ChKaoTo0CAwEAAaOB
jzCBjDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAsBglghkgBhvhCAQ0E
HxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFB4fwpX2
KSxTVCcyZv9ZYPrhO8UZMB8GA1UdIwQYMBaAFB24TDDMoTWycjWgisz6+RecxNJK
MA0GCSqGSIb3DQEBBQUAA4GBACxJ8tmQqB2lDTsUHO8csl01Zi+fyrFWn21fhHBm
v0TabsTJCIHR927QbDVdRVpSHGxf0CT6FcKIqWS3FeXs06cuU5DA0Rb8zFihZQjJ
TDQ44lc/tujb+JJiwv1ZgX3XqhpDIBu3GAmXBkfZOgkUu2MYDxWBog2JzDL5V4h4
b3LY
-----END CERTIFICATE-----

PEM 形式の署名済みサーバ証明書を作成

—–BEGIN CERTIFICATE—– から —–END CERTIFICATE—– までを
コピーし PEM 形式のファイルを作成してください。

apache > vi apache.japan.sun.com.signed-server-cert.pem

-----BEGIN CERTIFICATE-----
MIIDvzCCAyigAwIBAgIJAM3q2/TI45OTMA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3Rl
bXMxGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2
ZXIuc3VuLmNvbTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NMB4XDTA5
MTIyNTA2NTg0N1oXDTEwMTIyNTA2NTg0N1owgZsxCzAJBgNVBAYTAkpQMQ4wDAYD
VQQIEwVUb2t5bzEZMBcGA1UEChMQU3VuIE1pY3Jvc3lzdGVtczEaMBgGA1UECxMR
U29mdHdhcmUgUHJhY3RpY2UxHTAbBgNVBAMTFGFwYWNoZS5qYXBhbi5zdW4uY29t
MSYwJAYJKoZIhvcNAQkBFhd3ZWJtYXN0ZXJAamFwYW4uc3VuLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMmhdQE7RNguu/+X+sAJltCun5I62PB8
d78rjYIUPhTsJgGraMpqqxrmNwiJKnOD1mF+DDdMnDU45CCoJd9gzXzqF3wdW58L
QDrX/C7kr2Ziw/1GpzERaJb0y8N9gb03uFPvzGh4UZ2iSPWATtZJO4sN24GOWP0s
v0eQh21A5t2MY8K9YtSqcEqwkexh1LUY6rYrR4NocvcB1q2qRIU0ivadmSVXAjIC
Ao0smLyZy6zOpbMnRspM7q9BFI+cYvwGIMOIU/GyOm58dUuP2oOKNNQpQG2theXI
bvghjHzsPAC2B+GXeEgEgoAZKCgSBJyx9k84RHRBmKvmX43ChKaoTo0CAwEAAaOB
jzCBjDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAsBglghkgBhvhCAQ0E
HxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFB4fwpX2
KSxTVCcyZv9ZYPrhO8UZMB8GA1UdIwQYMBaAFB24TDDMoTWycjWgisz6+RecxNJK
MA0GCSqGSIb3DQEBBQUAA4GBACxJ8tmQqB2lDTsUHO8csl01Zi+fyrFWn21fhHBm
v0TabsTJCIHR927QbDVdRVpSHGxf0CT6FcKIqWS3FeXs06cuU5DA0Rb8zFihZQjJ
TDQ44lc/tujb+JJiwv1ZgX3XqhpDIBu3GAmXBkfZOgkUu2MYDxWBog2JzDL5V4h4
b3LY
-----END CERTIFICATE-----

Apache の SSL の設定
Apache の SSL 設定ファイル(httpd-ssl.conf)を編集し
署名済みサーバ証明書(PEM形式)と秘密鍵ファイルを指定してください。

apache > vi /usr/local/apache2.2.14/conf/extra/httpd-ssl.conf

下記の行をそれぞれ編集
SSLCertificateFile “/usr/local/apache2.2.14/conf/ssl.crt/apache.japan.sun.com.signed-server-cert.pem”

SSLCertificateKeyFile “/usr/local/apache2.2.14/conf/ssl.key/apache.japan.sun.com.key”

GlassFish ロードバランサプラグインの設定
必要なソフトウェアに記載した URL から入手したロードバランサ
プラグインを GlassFish のドメイン管理サーバとApache にそれぞれ
コピーしてください。

ファイルをコピー後、それぞれアーカイブを展開してください。

dashost > mkdir /tmp/AS_LB
dashost > cp /aslb-9.1.1-b13.jar /tmp/AS_LB/
dashost > cd /tmp/AS_LB/
dashost > jar xvf aslb-9.1.1-b13.jar
SUNWaslb.zip が抽出されました.
SUNWaspx.zip が抽出されました.
BinariesLicense が展開されました.

dashost > ls
BinariesLicense     SUNWaslb.zip        SUNWaspx.zip        aslb-9.1.1-b13.jar

dashost > mkdir /sun/glassfish-v2.1.1/lib/plugin
dashost > cp *.zip /sun/glassfish-v2.1.1/lib/plugin/
dashost > cd /sun/glassfish-v2.1.1/lib/plugin/
dashost > unzip SUNWaslb.zip
Archive:  SUNWaslb.zip
creating: lib/
creating: lib/dtds/
inflating: lib/dtds/sun-loadbalancer_1_0.dtd
inflating: lib/dtds/sun-loadbalancer_1_1.dtd
inflating: lib/dtds/sun-loadbalancer_1_2.dtd
creating: lib/install/
creating: lib/install/templates/
inflating: lib/install/templates/loadbalancer.xml.example
inflating: lib/install/templates/ReadMe.UserDefinedLB
inflating: lib/install/templates/roundrobin.c
inflating: lib/install/templates/loadbalancer.h
dashost > unzip SUNWaspx.zip
Archive:  SUNWaspx.zip
inflating: lib/libxerces-c.so
inflating: lib/libsupport.so
inflating: lib/libnsprwrap.so
inflating: lib/libns-httpd40.so
inflating: lib/libnsfc.so
inflating: lib/libnstp.so
inflating: lib/libdirmon4.so
inflating: lib/libnstime.so
inflating: lib/libgetprop.so
inflating: lib/liblibsi18n.so
inflating: lib/libares3.so
inflating: lib/libssldap50.sov
inflating: lib/liblibdbm.so
inflating: lib/libldap50.so
inflating: lib/libicuuc.so.2
inflating: lib/libicui18n.so.2
inflating: lib/libicudata.so.2
inflating: lib/libsasl.so
inflating: lib/libprldap50.so
creating: lib/webserver-plugin/
creating: lib/webserver-plugin/solaris/
creating: lib/webserver-plugin/solaris/sjsws/
creating: lib/webserver-plugin/solaris/sjsws/errorpages/
inflating: lib/webserver-plugin/solaris/sjsws/errorpages/default-error.html
inflating: lib/webserver-plugin/solaris/sjsws/errorpages/sun-http-lberror.html
inflating: lib/webserver-plugin/solaris/sjsws/libpassthrough.so
inflating: lib/webserver-plugin/solaris/sjsws/LBPluginDefault_root.res
inflating: lib/webserver-plugin/solaris/sjsws/LBPlugin_root.res
creating: lib/webserver-plugin/solaris/apache2/
creating: lib/webserver-plugin/solaris/apache2/errorpages/
inflating: lib/webserver-plugin/solaris/apache2/errorpages/default-error.html
inflating: lib/webserver-plugin/solaris/apache2/errorpages/sun-http-lberror.html
inflating: lib/webserver-plugin/solaris/apache2/mod_loadbalancer.so
inflating: lib/webserver-plugin/solaris/apache2/secmod.db
inflating: lib/webserver-plugin/solaris/apache2/cert8.db
inflating: lib/webserver-plugin/solaris/apache2/key3.db
inflating: lib/webserver-plugin/solaris/apache2/LBPluginDefault_root.res
inflating: lib/webserver-plugin/solaris/apache2/LBPlugin_root.res
creating: lib/webserver-plugin/solaris/apache2.2/
creating: lib/webserver-plugin/solaris/apache2.2/errorpages/
inflating: lib/webserver-plugin/solaris/apache2.2/errorpages/default-error.html
inflating: lib/webserver-plugin/solaris/apache2.2/errorpages/sun-http-lberror.html
inflating: lib/webserver-plugin/solaris/apache2.2/mod_loadbalancer.so
inflating: lib/webserver-plugin/solaris/apache2.2/secmod.db
inflating: lib/webserver-plugin/solaris/apache2.2/cert8.db
inflating: lib/webserver-plugin/solaris/apache2.2/key3.db
inflating: lib/webserver-plugin/solaris/apache2.2/LBPluginDefault_root.res
inflating: lib/webserver-plugin/solaris/apache2.2/LBPlugin_root.res

ロードバランサの設定ファイルをテンプレートディレクトリにコピー

dashost > mv /sun/glassfish-v2.1.1/lib/plugin/lib/install/templates/loadbalancer.xml.example /sun/glassfish-v2.1.1/lib/plugin/lib/install/templates/loadbalancer.xml

Apache 上で LB プラグインを展開し,設定ファイルやモジュールを
Apache の関連ディレクトリにコピーしてください。

apache > mkdir /tmp/AS_LB
apache > cp /aslb-9.1.1-b13.jar /tmp/AS_LB/
apache > cd /tmp/AS_LB/
apache > jar xvf aslb-9.1.1-b13.jar

SUNWaslb.zip が抽出されました.
SUNWaspx.zip が抽出されました.
BinariesLicense が展開されました.

apache > ls
BinariesLicense     SUNWaslb.zip        SUNWaspx.zip        aslb-9.1.1-b13.jar

apache > unzip SUNWaslb.zip
apache > unzip SUNWaspx.zip


apache > mkdir /usr/local/apache2.2.14/modules/resource
apache > mkdir /usr/local/apache2.2.14/modules/errorpage
apache > cp /tmp/AS_LB/lib/webserver-plugin/solaris/apache2.2/LBPluginDefault_root.res
/usr/local/apache2.2.14/modules/resource/

apache > cp /tmp/AS_LB//lib/webserver-plugin/solaris/apache2/LBPlugin_root.res
/usr/local/apache2.2.14/modules/resource/

apache > cp /tmp/AS_LB/lib/webserver-plugin/solaris/apache2.2/mod_loadbalancer.so
/usr/local/apache2.2.14/modules/

apache > cp /tmp/AS_LB/lib/lib*.so* /usr/local/apache2.2.14/modules/
apache > cp /tmp/AS_LB/lib/webserver-plugin/solaris/apache2.2/errorpages/*
/usr/local/apache2.2.14/modules/errorpage/

apache > cp /tmp/AS_LB/lib/plugin/lib/install/templates/loadbalancer.xml.example
/usr/local/apache2.2.14/conf/loadbalancer.xml

apache > cp /tmp/AS_LB/lib/plugin/lib/dtds/sun* /usr/local/apache2.2.14/conf/
apache > mkdir /usr/local/apache2.2.14/sec_db_files
apache > cp /tmp/AS_LB/lib/webserver-plugin/solaris/apache2.2/*.db /usr/local/apache2.2.14/sec_db_files/

Apache 設定ディレクトリのオーナ変更

Apache の設定ディレクトリ (conf) に起動ユーザ(daemon)がアクセス
できるようにオーナを変更してください。

apache > chown -R daemon /usr/local/apache2.2.14/conf/

Apache の再起動
上記で Aapche 側の設定は完了です。Apache を起動してみましょう。

apache > /usr/local/apache2.2.14/bin/apachectl start
Apache/2.2.14 mod_ssl/2.2.14 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server apache.japan.sun.com:443 (RSA)
Enter pass phrase: [password]

OK: Pass Phrase Dialog successful.

※ 起動時パスワード入力を求めない方法もありますが、その設定方法は
別途 openssl コマンドを調べて設定してください。)

認証局(CA) 証明書を GlassFish へインポート
Apache 側ではプライベートの認証局(CA)によって署名された
サーバ証明書を正しく設定しましたが、
Apache 側で設定したサーバ証明書が信頼できる証明書か
GlassFish 側ではわからないため、信頼できる証明書であることを
証明する認証局(CA)の証明書をGlassFish 側にインポートする必要が
あります。

# cat /usr/local/ssl/demoCA/cacert.pem

Certificate:
  Data:
      Version: 3 (0x2)
      Serial Number:
          cd:ea:db:f4:c8:e3:93:84
      Signature Algorithm: sha1WithRSAEncryption
      Issuer: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice,
CN=ca-server.sun.com/emailAddress=caadmin@Sun.COM
      Validity
          Not Before: Nov  9 04:40:09 2009 GMT
          Not After : Nov  8 04:40:09 2012 GMT
      Subject: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice,
CN=ca-server.sun.com/emailAddress=caadmin@Sun.COM
      Subject Public Key Info:
          Public Key Algorithm: rsaEncryption
          RSA Public Key: (1024 bit)
              Modulus (1024 bit):
                  00:b6:ee:98:16:65:fb:da:94:48:67:71:00:3b:66:
                  81:6f:09:46:5a:e2:46:6c:0e:80:ea:18:ca:b8:9f:
                  6b:26:73:ee:da:36:48:1d:3d:fa:09:3b:6a:5a:b3:
                  10:5c:f5:bc:50:36:8d:46:6e:e1:7f:2f:79:63:0f:
                  fc:f2:c5:be:68:f0:3d:55:ed:49:b9:37:1d:e4:56:
                  a2:c8:a7:6f:48:1e:e3:db:17:d7:f3:65:18:e7:bd:
                  d3:01:90:cf:17:22:df:43:ba:57:c1:65:1e:8d:5b:
                  5a:df:69:fd:24:97:67:32:c0:b5:29:fd:63:90:2e:
                  d4:69:69:18:73:b8:80:be:21
              Exponent: 65537 (0x10001)
      X509v3 extensions:
          X509v3 Subject Key Identifier:
              1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
          X509v3 Authority Key Identifier:
              keyid:1D:B8:4C:30:CC:A1:35:B2:72:35:A0:8A:CC:FA:F9:17:9C:C4:D2:4A
              DirName:/C=JP/ST=Tokyo/O=Sun Microsystems/OU=Software
Practice/CN=ca-server.sun.com/emailAddress=caadmin@Sun.COM
              serial:CD:EA:DB:F4:C8:E3:93:84
          X509v3 Basic Constraints:
              CA:TRUE
  Signature Algorithm: sha1WithRSAEncryption
      32:8b:2a:63:52:72:41:30:cc:b2:eb:5e:59:60:cd:e8:39:46:
      19:dd:48:30:2c:e9:e8:b3:fa:c6:18:2a:2f:f4:22:1c:c6:22:
      c7:f0:f7:17:73:72:17:45:88:11:14:3a:88:35:18:52:a9:f0:
      eb:8e:de:18:3f:d7:33:e1:09:84:6c:da:b2:f7:03:f1:ae:37:
      b8:1c:f6:19:53:e0:0a:12:b3:7b:5a:dd:39:f1:d2:85:49:e0:
      3e:5a:9d:89:b0:38:b0:76:80:11:cb:83:b0:fe:3f:ed:92:15:
      68:3a:6d:3b:13:77:cc:4d:b1:1d:4b:8d:9d:b6:41:e5:06:07:
      52:af
-----BEGIN CERTIFICATE-----
MIIDmTCCAwKgAwIBAgIJAM3q2/TI45OEMA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3Rl
bXMxGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2
ZXIuc3VuLmNvbTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NMB4XDTA5
MTEwOTA0NDAwOVoXDTEyMTEwODA0NDAwOVowgZAxCzAJBgNVBAYTAkpQMQ4wDAYD
VQQIEwVUb2t5bzEZMBcGA1UEChMQU3VuIE1pY3Jvc3lzdGVtczEaMBgGA1UECxMR
U29mdHdhcmUgUHJhY3RpY2UxGjAYBgNVBAMTEWNhLXNlcnZlci5zdW4uY29tMR4w
HAYJKoZIhvcNAQkBFg9jYWFkbWluQFN1bi5DT00wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBALbumBZl+9qUSGdxADtmgW8JRlriRmwOgOoYyrifayZz7to2SB09
+gk7alqzEFz1vFA2jUZu4X8veWMP/PLFvmjwPVXtSbk3HeRWosinb0ge49sX1/Nl
GOe90wGQzxci30O6V8FlHo1bWt9p/SSXZzLAtSn9Y5Au1GlpGHO4gL4hAgMBAAGj
gfgwgfUwHQYDVR0OBBYEFB24TDDMoTWycjWgisz6+RecxNJKMIHFBgNVHSMEgb0w
gbqAFB24TDDMoTWycjWgisz6+RecxNJKoYGWpIGTMIGQMQswCQYDVQQGEwJKUDEO
MAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxGjAYBgNV
BAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2ZXIuc3VuLmNv
bTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NggkAzerb9Mjjk4QwDAYD
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAyiypjUnJBMMyy615ZYM3oOUYZ
3UgwLOnos/rGGCov9CIcxiLH8PcXc3IXRYgRFDqINRhSqfDrjt4YP9cz4QmEbNqy
9wPxrje4HPYZU+AKErN7Wt058dKFSeA+Wp2JsDiwdoARy4Ow/j/tkhVoOm07E3fM
TbEdS42dtkHlBgdSrw==
-----END CERTIFICATE-----

上記のファイルの—–BEGIN CERTIFICATE—–から
—–END CERTIFICATE—– までをコピーして保存してください。
コピーをドメイン管理サーバ(DAS)へ転送してください。

dashost > vi /tmp/cacert.pem

-----BEGIN CERTIFICATE-----
MIIDmTCCAwKgAwIBAgIJAM3q2/TI45OEMA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3Rl
bXMxGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2
ZXIuc3VuLmNvbTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NMB4XDTA5
MTEwOTA0NDAwOVoXDTEyMTEwODA0NDAwOVowgZAxCzAJBgNVBAYTAkpQMQ4wDAYD
VQQIEwVUb2t5bzEZMBcGA1UEChMQU3VuIE1pY3Jvc3lzdGVtczEaMBgGA1UECxMR
U29mdHdhcmUgUHJhY3RpY2UxGjAYBgNVBAMTEWNhLXNlcnZlci5zdW4uY29tMR4w
HAYJKoZIhvcNAQkBFg9jYWFkbWluQFN1bi5DT00wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBALbumBZl+9qUSGdxADtmgW8JRlriRmwOgOoYyrifayZz7to2SB09
+gk7alqzEFz1vFA2jUZu4X8veWMP/PLFvmjwPVXtSbk3HeRWosinb0ge49sX1/Nl
GOe90wGQzxci30O6V8FlHo1bWt9p/SSXZzLAtSn9Y5Au1GlpGHO4gL4hAgMBAAGj
gfgwgfUwHQYDVR0OBBYEFB24TDDMoTWycjWgisz6+RecxNJKMIHFBgNVHSMEgb0w
gbqAFB24TDDMoTWycjWgisz6+RecxNJKoYGWpIGTMIGQMQswCQYDVQQGEwJKUDEO
MAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxGjAYBgNV
BAsTEVNvZnR3YXJlIFByYWN0aWNlMRowGAYDVQQDExFjYS1zZXJ2ZXIuc3VuLmNv
bTEeMBwGCSqGSIb3DQEJARYPY2FhZG1pbkBTdW4uQ09NggkAzerb9Mjjk4QwDAYD
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAyiypjUnJBMMyy615ZYM3oOUYZ
3UgwLOnos/rGGCov9CIcxiLH8PcXc3IXRYgRFDqINRhSqfDrjt4YP9cz4QmEbNqy
9wPxrje4HPYZU+AKErN7Wt058dKFSeA+Wp2JsDiwdoARy4Ow/j/tkhVoOm07E3fM
TbEdS42dtkHlBgdSrw==
-----END CERTIFICATE-----

認証局(CA) の証明書を cacerts.jks と keystore.jks へインポート
PEM 形式の認証局の署名書を GlassFish のサーバ証明書データベース(cacerts.jks)と
鍵データベース(keystore.jks)へインポートしてください。

dashost > cd domains/clusterDomain/config/
dashost > keytool -import -trustcacerts -v -keystore cacerts.jks
-alias PrivateCACert -file /tmp/cacert.pem

キーストアのパスワードを入力してください: [changeit]

所有者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
発行者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
シリアル番号: cdeadbf4c8e39384
有効期間の開始日: Mon Nov 09 13:40:09 JST 2009 終了日: Thu Nov 08 13:40:09 JST 2012
証明書のフィンガープリント:
MD5:  7C:21:2B:4A:DF:A4:5D:BF:78:1D:56:22:54:3F:4E:48
SHA1: 00:3C:55:1E:34:60:FC:77:24:38:7E:64:39:C4:38:48:79:92:2F:31
署名アルゴリズム名: SHA1withRSA
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
[EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com, OU=Software Practice,
O=Sun Microsystems, ST=Tokyo, C=JP]
SerialNumber: [    cdeadbf4 c8e39384]
]
この証明書を信頼しますか? [no]:  yes
証明書がキーストアに追加されました。
[cacerts.jks を格納中]

dashost > keytool -import -trustcacerts -v -keystore keystore.jks
-alias PrivateCACert -file /tmp/cacert.pem

キーストアのパスワードを入力してください: [changeit]

所有者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
発行者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
シリアル番号: cdeadbf4c8e39384
有効期間の開始日:: Mon Nov 09 13:40:09 JST 2009 終了日: Thu Nov 08 13:40:09 JST 2012
証明書のフィンガープリント:
MD5:  7C:21:2B:4A:DF:A4:5D:BF:78:1D:56:22:54:3F:4E:48
SHA1: 00:3C:55:1E:34:60:FC:77:24:38:7E:64:39:C4:38:48:79:92:2F:31
署名アルゴリズム名: SHA1withRSA
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
[EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP]
SerialNumber: [    cdeadbf4 c8e39384]
]
この証明書を信頼しますか? [no]:  yes
証明書がキーストアに追加されました。
[keystore.jks を格納中]

dashost >

認証局(CA) 証明書のインポート後の確認

正しく認証局(CA)の証明書がインポートできているかを確認するため、
keytool を使って確認してください。

dashost > keytool -list -v -alias PrivateCACert -keystore cacerts.jks
キーストアのパスワードを入力してください:

別名: PrivateCACert
作成日: 2009/12/25
エントリのタイプ: trustedCertEntry
所有者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
発行者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
シリアル番号: cdeadbf4c8e39384
有効期間の開始日: Mon Nov 09 13:40:09 JST 2009 終了日: Thu Nov 08 13:40:09 JST 2012
証明書のフィンガープリント:
MD5:  7C:21:2B:4A:DF:A4:5D:BF:78:1D:56:22:54:3F:4E:48
SHA1: 00:3C:55:1E:34:60:FC:77:24:38:7E:64:39:C4:38:48:79:92:2F:31
署名アルゴリズム名: SHA1withRSA
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
[EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP]
SerialNumber: [    cdeadbf4 c8e39384]
]

dashost > keytool -list -v -alias PrivateCACert
-keystore keystore.jks

キーストアのパスワードを入力してください:

別名: PrivateCACert
作成日: 2009/12/25
エントリのタイプ: trustedCertEntry
所有者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
発行者: EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP
シリアル番号: cdeadbf4c8e39384
有効期間の開始日: Mon Nov 09 13:40:09 JST 2009 終了日: Thu Nov 08 13:40:09 JST 2012
証明書のフィンガープリント:
MD5:  7C:21:2B:4A:DF:A4:5D:BF:78:1D:56:22:54:3F:4E:48
SHA1: 00:3C:55:1E:34:60:FC:77:24:38:7E:64:39:C4:38:48:79:92:2F:31
署名アルゴリズム名: SHA1withRSA
バージョン: 3
拡張:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 1D B8 4C 30 CC A1 35 B2   72 35 A0 8A CC FA F9 17  ..L0..5.r5......
0010: 9C C4 D2 4A                                        ...J
]
[EMAILADDRESS=caadmin@Sun.COM, CN=ca-server.sun.com,
OU=Software Practice, O=Sun Microsystems, ST=Tokyo, C=JP]
SerialNumber: [    cdeadbf4 c8e39384]
]

上記で Apache 上でのロードバランサ設定は完了です。
次に GlassFish 上で Apache との連携用の設定を行います。

GlassFish の設定は次のエントリに記載しています。

2009年12月25日 at 5:40 AM

御注意:ロードバランサー構築時の問題の解決方法



1点問題を報告します。

私が過去にブログで書いた下記のエントリで、

マルチリンガル版を使用して下記の手順通りに設定して頂くと

正常に動作しないという問題を確認しました。

今日は、その問題の御報告と対処方法について説明します。



ロードバランサプラグインのインストールと設定



私が上記のエントリを書いていた時は、まだマルチリンガル版がリリースされておらず、

英語版(テクニカルプレビュー版)を使用してインストール、設定を行っていたので

実際に上記の通り問題ありませんでした。



今回、御紹介する問題はマルチリンガル版においてのみ発生致します。

そこで、英語版を使用した場合にはこの問題は発生いたしません。



詳細は、下記に記載しております。



https://glassfish.dev.java.net/issues/show_bug.cgi?id=4288



 #このエントリを読んでいただいた日本人の方は是非、

 #注目度を上げるため、投票を行って頂けないでしょうか。

 #当然、私の方から社内から、エンジニアリングチームに対して

 #プッシュを掛けておりますが。(次期バージョンで修正される予定)

 #注目度が高いとそれだけ日本人が望んでいるんだという証になります。



さて、実際の問題についての報告ですが、ロードバランサプラグインを

設定して頂いている環境で、クライアントのブラウザからLBプラグイン

経由でアプリケーションサーバにアクセスをすると、期待するコンテンツが

ブラウザに正常に表示されずバイナリデータをダウンロードするウィンドウが

表示されるという現象が発生する事があります。

この問題は、当初Webサーバ側、もしくはロードバランサプラグイン側の

問題ではないかと思っていたのですが、実は、アプリケーションサーバ側の

問題でした。



アプリケーションサーバ側では、送信されてきたHTTPリクエストに対する

レスポンスを返す際に、下記のようなHTTPヘッダに変な文字列を付け加えて

投げ返すように実装されておりました。



*************************************************

HTTP/1.1 200 ・

HTTP/1.1 302 B・・ユW~W_

HTTP/1.1 401 *

HTTP/1.1 404 掬K樫[

HTTP/1.1 500 ・オ・・鵈

*************************************************



上記は、ヘッダ内のレスポンス応答文字列も日本語化していた

ために発生しているのですが、HTTPヘッダの内容はASCIIテキストで

返さない場合、HTTPクライアントによっては変な挙動を起こしてしまいます。



本問題に対する対処方法についてですが、

各インスタンスのJVMの設定において、「JVM オプションを追加」ボタンを

押下して、”-Duser.language=en”のオプションを追加して頂ければ、

問題を回避できます。







このオプションにつきましては、内部的なログファイルの内容が

英語で表示される等の変更がありますが、基本的にはシステムの運用に対する影響は

少なく、Webの管理画面につきましても、上記の画面を見て頂く通り、ブラウザの

ロケールが日本語環境に設定されている場合、日本語で管理画面が表示されます。



また作成頂いた日本語アプリケーションも問題なく扱える事まで確認しております。





(UTF8確認)



このワークアラウンドを使用して仮に何らかの問題があった場合は、

コメント欄に記載して下さい。



つか、HTTPヘッダまで日本語化してしまっていたなんて。。。(T_T)





追記です(2008/03/13)

********************************************************************************

本問題は、次期バージョンであるSun Java System Application Server 9.1.1で

修正される事が正式に決まりました。ですのでSun Java System Application

Server 9.1.1以降を御使用の方は本ワークアラウンドの適用は行わなくても

よくなります。

********************************************************************************




2008年3月7日 at 3:05 AM


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2017年10月
« 8月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

カテゴリー

Twitter

clustermap

ブログ統計情報

  • 1,005,837 hits

Feeds