月曜日 2 01, 2010

ラストエントリー (Moving blog to personal site)


ブログの運用ポリシーが変わることに伴いブログを
お引っ越しすることにいたしました。

基本的に過去のエントリも移行しましたので、仮に blogs.sun.com の
サイトがなくなったとしても過去のコンテンツはみれますので。
ご安心ください。

2005年の11月にブログを初めて 4年で約 300件以上のエントリを書いてきました。
今後は新しいブログへアップデートしていく予定ですので、是非宜しくお願いします。

最後に、
今まで本ブログをみていただいた皆様本当にありがとうございました。

新しいブログ
新しいブログの feed

PS.
Oracle になったという事で最後のエントリでらしいデザインに変更しました。(\^_\^)

水曜日 1 27, 2010

マピオンのエンジニアさんとの対談記事



昨年末、マピオンさんと合同セミナーを開催しました。
イベント後、マピオンのエンジニアの方々と対談を行い、
対談内容が下記にて公開されました。

マピオン開発部門×サンJavaスペシャリスト 特別対談

なぜ、GlassFish を採用したのか、実運用を開始してからの
どのような事を感じていらっしゃるか等、実際に本番環境で
利用しているお客様の生の声が記載されています。
GlassFish の導入をご検討中の方、また Tomcat, JBoss 等
他のオープンソースアプリケーションサーバをご利用中の方は
是非、本資料をご覧ください。

Oracle の今後のソフトウェア戦略について


本日、夜中2時に開催された Oracle の今後の製品戦略について、
特にソフトウェア関連の発表資料の画面ダンプを本ブログにて
公開します。

速報として若干補足します。
今日の発表内で、アプリケーションサーバ、統合開発環境について説明がありました。
GlassFish は今後も Java EE 6 の参照実装として継続的に開発/投資を
継続していき、企業環境における製品として WebLogic を押していきます。
また、統合開発環境においては、NetBeans は今後も投資し Java の軽量な
開発環境として開発/投資をしていきます。JDeveloper は Oracle の戦略的な
開発ツールとして今後も利用されます。さらに Oracle は Eclipse への投資も
引き続き行っていきます。

今まで NetBeans について Oracle から発表が無く不安に思われていた方も
いらっしゃるかと思いますが、今日は NetBeans についても明言され今後も
投資されるので利用者の皆様には安心材料を提供できたかと思います。

この度の発表で Oracle/Sun のソフトウェア製品についてはかなりクリアになったかと
思います。

ソフトウェア関連製品の発表資料(PDF)
WebCast


Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun Software for Oracle Sun

金曜日 12 25, 2009

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" 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" 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" 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" 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" 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" 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" 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" 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 版を利用しない場合は、上記の方法をご利用ください。

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 の設定は次のエントリに記載しています。

火曜日 12 22, 2009

GlassFish v3 の OSGi 対応について


今日は、GlassFish v3 の OSGi 対応について説明します。

セミナー等で登壇する際、GlassFish v2.x と GlassFish v3 は GUI の
管理コンソールや CLI の管理ツールの使用方法はよくにていますが、
内部実装はまったく別物ですと説明しています。
今回、GlassFish v3 で内部実装がどのように変わったかについて説明します。

GlassFish v3 はシステムの柔軟性を高めるためまた実行時のパフォーマンスを
向上させるためにモジュールシステムを採用しました。
GlassFish v2 までは各機能を全て一つにまとめて提供していたため、
EJB が必要のないユーザも、EJB コンテナを含んだ形でインストール/起動を
しなければなりませんでした。また、ユーザが独自に管理ツールを拡張したり
アプリケーションサーバを拡張したりすることは困難でした。
しかし、GlassFish v3 からはモジュールシステムを導入したため、EJB が
必要のないユーザは EJB を起動しないだけでなく、インストールをしないといった
選択肢も選べるようになりました。また必要に応じて独自の管理機能を
実装できるようになったため、アプリケーションサーバの運用がより柔軟に
行えるようになります。
これにより、本番環境でアプリケーションサーバを運用する際、各システムで
必要な機能だけを利用可能にし、メモリ等のリソースの消費量を減らすことができ、
結果としてパフォーマンスを向上させることができるようになります。

モジュールシステムの導入にあたって、GlassFish v3 は OSGi アライアンスの
標準準拠した Apache Felix を利用しています。全ての GlassFish v3 の機能は
Apache Felix のサービスバンドルとして実装されていますので、GlassFish v3
の管理ツールが提供している管理機能以外に、Apache Felix のインタフェースを
通じて、サービスの停止、起動などもできます。
(デフォルトの OSGi ランタイムとして Apache Felix を使用していますが、
他の OSGi ランタイム上で GlassFish を動作させることもできます。
(例:KnopflerFish など)

ここでは、かんたんに OSGi バンドルを生成する方法と
GlassFish v3 への追加方法について示します。

1. OSGi バンドルを作成します。
% vi MyBundle.java
import org.osgi.framework.\*;
public class MyBundle implements BundleActivator {
  // Start the bundle
  public void start(BundleContext context) {
    System.out.println("Started the OSGi Bundle");
  }
  // Stop the bundle
  public void stop(BundleContext context) {
    System.out.println("Stopped the OSGi Bundle");
  }
}


2. マニフェストファイルの作成
% vi MyBundle.mf
Manifest-Version: 1.0
Bundle-Name: MyBundle
Bundle-Activator: MyBundle
Bundle-SymbolicName: MyBundle
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework


3. GlassFish v3 のインストールディレクトリより felix.jar が存在することを確認してください。
(コンパイル時にクラスパスを設定します)
% ls /Applications/GlassFish/glassfishv3-webprofile/glassfish/osgi/felix/bin/ felix.jar


4. ソースコードのコンパイル
上記の felix.jar をクラスパスに追加してコンパイルしてください。
% javac -classpath /Applications/GlassFish/glassfishv3-webprofile/glassfish/osgi/felix/bin/felix.jar MyBundle.java


5. jar アーカイブの生成
% jar cfm MyBundle.jar ./MyBundle.mf ./MyBundle.class


6. OSGi バンドルのインストール
OSGi バンドルは glassfish/modules ディレクトリにコピーします。
% cp MyBundle.jar /Applications/GlassFish/glassfishv3-webprofile/glassfish/modules/


7. GlassFish v3 の起動
% asadmin start-domain domain1
DAS の起動を待機しています .........................................
起動したドメイン: domain1
ドメインの場所: /Applications/GlassFish/glassfishv3-webprofile/glassfish/domains/domain1
ログファイル: /Applications/GlassFish/glassfishv3-webprofile/glassfish/domains/domain1/logs/server.log
ドメインの管理ポート: 4848
コマンド start-domain は正常に実行されました。


8. Apache Felix コンソールへアクセス
6666番ポートへアクセスするとデフォルトで Apache Felix の
コンソールが利用できるようになっています。
% telnet localhost 6666
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '\^]'.

Felix Remote Shell Console:
============================

-> ps (GlassFish v3 で導入されているバンドル一覧)
START LEVEL 1
ID State Level Name
[ 0] [Active ] [ 0] System Bundle (2.0.2)
[ 1] [Active ] [ 1] HK2 OSGi Main Bundle (1.0.0)
[ 2] [Installed ] [ 1] AMX V3 extensions implementation (3.0.0.b74b)
[ 3] [Resolved ] [ 1] org.glassfish.core.glassfish-extra-jre-packages
[ 4] [Installed ] [ 1] Branding Fragment (3.0.0.b74b)
[ 5] [Active ] [ 1] Private APIs of Glassfish V3 (3.0.0.b74b)
[ 6] [Resolved ] [ 1] Inversion of Control / Autodependency mechanism (1.0.0)
….. (中略)
[ 243] [Resolved ] [ 1] ejb-mapping module for cmp (3.0.0.b74b)
[ 244] [Resolved ] [ 1] metro (0)
[ 245] [Installed ] [ 1] MyBundle (1.0.0)
-> start 245
-> stop 245
-> start 245
-> exit
Good Bye!


9. GlassFish v3 のログの確認
独自に作成したバンドルが標準出力に吐き出すログの内容を確認してみましょう。
バンドルの起動、停止を行う度に独自に作成したバンドルからログが出力されている
ことを確認できます。
$ tail -f /Applications/GlassFish/glassfishv3-webprofile/glassfish/domains/domain1/logs/server.log
[#|2009-12-22T14:50:34.366+0900|INFO|glassfishv3.0|javax.enterprise.system.std.com.sun. enterprise.v3.services.impl|_ThreadID=24;_ThreadName=Thread-1;|Started the OSGi Bundle|#]
[#|2009-12-22T14:51:15.594+0900|INFO|glassfishv3.0|javax.enterprise.system.std.com.sun. enterprise.v3.services.impl|_ThreadID=24;_ThreadName=Thread-1;|Stopped the OSGi Bundle|#]
[#|2009-12-22T14:51:21.882+0900|INFO|glassfishv3.0|javax.enterprise.system.std.com.sun. enterprise.v3.services.impl|_ThreadID=24;_ThreadName=Thread-1;|Started the OSGi Bundle|#]



このように、OSGi のモジュールシステムを導入した GlassFish v3 は管理機能の拡張もでき
リソース管理も柔軟にできる新しいアーキテクチャになっています。GlassFish v2.x から
アーキテクチャは大きく変わりますが、その利点は数多くあります。
OSGi 対応した GlassFish v3 をぜひ試してみてください。


備考:
OSGi バンドルは asadmin コマンドで type=osgi を指定してデプロイすることもできます。
% asadmin deploy --type osgi ./MyBundle.jar
Application deployed successfully with name MyBundle.
コマンド deploy は正常に実行されました。

Felix Remote Shell Console:
============================
-> ps
START LEVEL 1
ID State Level Name
[ 0] [Active ] [ 0] System Bundle (2.0.2)
[ 1] [Active ] [ 1] HK2 OSGi Main Bundle (1.0.0)
[ 2] [Active ] [ 1] AMX V3 extensions implementation (3.0.0.b74b)
[ 3] [Resolved ] [ 1] org.glassfish.core.glassfish-extra-jre-packages
[ 4] [Installed ] [ 1] Branding Fragment (3.0.0.b74b)
(....中略)
[ 244] [Resolved ] [ 1] metro (0)
[ 246] [Active ] [ 1] MyBundle (1.0.0)


金曜日 12 18, 2009

GlassFish Administration Book




GlassFish v2.x 系の管理系の本が海外で出版されたようです。

木曜日 12 17, 2009

SDC 連載記事のアーカイブ


以前、GlassFish に関する連載記事を弊社 SDC(sdc.sun.co.jp)のサイトで
行っていましたが、SDC のサイトが何らかの障害?閉鎖?で
アクセスできなくなっておりました。


以前、連載記事のバックアップをしていましたので、
こちらから連載記事をまとめてダウンロードできるようにいたしました。
(若干体裁はずれていますが、内容や画像はそのまま確認できるかと思います。)

jar 版と、tgz 版それぞれ用意いたしましたので、ご希望に応じて
入手してください。

jar アーカイブ版
tgz アーカイブ版

上記ファイルに含まれる連載のコンテンツは下記の通りです。

 第1回:導入編
 第2回:アプリケーションサーバの管理の基本
   第2回:アプリケーションサーバの管理の基本 アップデート情報
 第3回:クラスタと負荷分散 (1)
 第4回:クラスタと負荷分散 (2)
 第5回:インメモリリプリケーションによる高可用性の実現方法


訂正:確認した所すべてのコンテンツは下記に移されておりました。
移動先へのリンク



(伊豆下田)

(箱根の夕暮れ)

木曜日 12 10, 2009

GlassFish v3 インストールビデオ

早速、GlassFish v3 をダウンロードしてインストールしてみました。

MacBook で GlassFish v3 の WebProfile をインストールし日本語
環境にするまでの手順をビデオに撮りましたので、ぜひ参考にしてください。
GlassFish v2 の頃に比べオープンインストーラを使うように
なったので、インストールがとても簡単になっています。

また、GlassFish v3 からは Java SE 6 以上が必須となりますので、
Java SE 6 をお持ちでない方は事前にインストールしてください。
(※ Java SE 5 はノンサポートです。)
Java SE 6 をインストール後、JAVA_HOME の環境変数を設定して
GlassFish v3 のインストールを開始してください。


ビデオはこちらからも確認できます。

このビデオは、全く編集をしていません。(計:8分27秒)
途中 Update Tool の初期化やローカライズパッケージのダウンロードなどで
若干時間が掛かっていますが、これらの処理は恐らくどの環境でも同じかと思います。
待ち時間を除くと手作業は5分も掛かっていなくてとても簡単です。

インストールから、日本語環境の構築までが 8 分でできますので、
時間に余裕がある時にぜひインストールしてみてください。

GlassFish v3 FCS 版が入手可能



つい先ほど(12/10 23時頃)から、GlassFish v3 の FCS 版がダウンロード
できるようになりました。
入手はこちらから
Mac版では、フルバージョンが 70MB、Web Profile 版が 50MB でした。
是非、この新鮮な GlassFish をご賞味あれ!!



About

yosshi

Search

Archives
« 7月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
Today