Posts tagged ‘GlassFish’

GlassFish ドメイン管理の基本

さて、ブログサイトを移動して初エントリですが、実は昨年
GlassFish に関する本を出版するかもしれないということで、
出版用に書きためた物があります。それを、そのまま削除するのも
もったいないので、こちらに数回に分けて投稿する事にしました。

まず、はじめに GlassFish のドメイン管理を行う前に事前に準備します。

  1. ホスト名とインストール場所について

  2. 以降で紹介するホスト名は下記の通りです.それぞれのホストで実行するコマンドを区別するため,コマンド実行時はコマンドプロンプトを付加します.たとえば dashost > と記載されたコマンドはドメイン管理サーバ上で実行していることを意味します.

    役割 ホスト名 コマンドプロンプト
    ドメイン管理サーバ dasohst.japan.sun.com dashost >
    ノードエージェント nodeagent1.japan.sun.com nodeagent1 >
    ノードエージェント nodeagent2.japan.sun.com nodeagent2 >
    認証局(CA)サーバ ca-admin.sun.com ca-server >



    ドメイン管理サーバ,ノードエージェントはそれぞれ下記のディレクトリにインストールします.
    GlassFish のインストールは root 権限で行い,インストールしたライブラリ等は全て root 権限のままにします.
    またドメインの実行や管理などは全て一般ユーザ (appserv) で行います.

    /sun/glassfish-v2.1.1



    認証局(CA)サーバはOpenSSL/0.9.8kを利用していますが,紙面の都合上認証局サーバの構築方法は省略します.

  3. アプリケーションサーバ実行ユーザの作成

  4. ドメイン管理サーバと全てのノードエージェント上で実行ユーザとグループを作成します。

    # groupadd -g 300 appserv
    # useradd -u 300 -g appserv -d /export/home/appserv -s /bin/tcsh -m appserv
    64 ブロック

    次に,アプリケーションサーバのデフォルトのドメインディレクトリパスを変更します.この変数を変更すると全てのドメイン管理は指定したディレクトリ配下で行われるようになります.ここで指定したディレクトリは実行ユーザ,実行グループで読み書きができるディレクトリでなければなりません.

    # vi /sun/glassfish-v2.1.1/config/asenv.conf
    AS_DEF_DOMAINS_PATH=”/export/home/appserv/domains”

    上記で指定したディレクトリがない場合は作成してください.

    dashost >cd /export/home/appserv
    dashost > mkdir domains
    dashost > ls -l
    合計 2
    drwxr-xr-x 2 appserv appserv 512 12 月 2日 20:48 domains


  5. 管理操作を容易にする環境変数の設定

  6. あらかじめ環境変数に,管理者ユーザ名,パスワードなどを設定しておくことでコマンド入力引数を省略できます.下記の設定をドメイン管理サーバ,ノードエージェントの全てで設定してください.

    sh 用環境変数の設定例

    PATH=/sun/glassfish-v2.1.1/bin
    JAVA_HOME=/usr/jdk/jdk1.6.0_17
    AS_HOME=/sun/glassfish-v2.1.1
    AS_ADMIN_USER=clusterAdmin
    AS_ADMIN_PASSWORDFILE=~/.passwordfileAS_ADMIN_HOST=dashost.japan.sun.com
    AS_ADMIN_PORT=5048

    csh 用環境変数の設定例

    set path=(/sun/glassfish-v2.1.1/bin $path)
    setenv JAVA_HOME /usr/jdk/jdk1.6.0_17
    setenv AS_HOME /sun/glassfish-v2.1.1
    setenv AS_ADMIN_USER clusterAdmin
    setenv AS_ADMIN_PASSWORDFILE ~/.passwordfile
    setenv AS_ADMIN_HOST dashost.japan.sun.com
    setenv AS_ADMIN_PORT 5048


    AS_ADMIN_PASSWORDFILE で指定するパスワードファイルは任意の場所に置くことができます.パスワードファイルには高い機密性を要する情報が含まれるため,ファイルを隠しファイルにしたり,パーミッションを読み込み可能モードにするなどして管理に十分注意してください.

    パスワードファイル中に記載する AS_ADMIN_PASSWORD は管理サーバにログインする際に使用するパスワードを指定します。また AS_ADMIN_MASTERPASSWORD には SSL のサーバ証明書や認証局証明書を扱う,証明書データベースを操作するために必要なパスワードを指定します.GlassFish はドメインを作成時,自動的で設定ディレクトリ配下に自己署名証明書(ニックネーム:s1as)を作成します.証明書データベースを操作する際にこのパスワードが必要になります.

    ~/.passwordfile の内容

    AS_ADMIN_PASSWORD=adminadmin
    AS_ADMIN_MASTERPASSWORD=changeit

  7. 管理ツールの紹介

    1. 管理コンソール

      GUIの管理コンソールを使用してGlassFishの管理を行うことができます.管理コンソールは洗練されたデザインであるため,初めてGlassFishを扱うサーバ管理者も感覚的に管理操作ができるため非常に便利です.

    2. asadminコマンドユーティリティ

      asadmin コマンドユーティリティは,GUIベースの管理コンソールが提供する管理機能のほとんどを行うことができる便利なユーティリティコマンドです.このコマンドを把握するとスクリプトを書いて管理の自動化を行ったり,ブラウザを開かずに管理ができるためちょっとした管理にもとても便利です.asadminユーティリティの使用方法は,–helpを付加して確認します.実行すると利用可能なコマンドの一覧を表示します.

    3. dashost > asadmin –help
      Administration Commands help(1)
      NAME
      help – displays the asadmin utility commands
      SYNOPSIS
      help [command_name]
      command_name [–help | -?]

      さらに利用可能なコマンド一覧からコマンドを選択し,引数に–help をつけて実行して下さい.実行するとコマンドの詳細なマニュアルが表示されます.

      dashost > asadmin create-domain –help
      Administration Commands create-domain (1)
      NAME
      create-domain – creates a domain with the given name
      SYNOPSIS
      create-domain [–user user] [–passwordfile passwordfile]
      [(–adminport port_number | –portbase portbase)]
      [(–profile developer | cluster | enterprise ] –template domain_template)]
      [–domaindir domain_directory/domains]
      [–instanceport port_number] [–savemasterpassword=false]
      [–domainproperties (name=value)[:name=value]*
      ]
      [–savelogin=false] [–terse=false]
      [–echo=false] [–interactive=true]
      domain_name

      また,asadminユーティリティのコマンドの中でもgetsetコマンドを使用すると現在設定されている内容の参照や更新ができます.下記の例ではアスタリスク(*)を指定し全ての設定情報を参照しています.また特定のプロパティに対してsetコマンドを実行し設定変更を行うことができます.

      dashost > asadmin get “*”
      dashost > asadmin set server-config.http-service.http-listener.admin-listener.server-name=dashost
      server-config.http-service.http-listener.admin-listener.server-name = dashost
      dashost > asadmin get server-config.http-service.http-listener.admin-listener.server-name
      server-config.http-service.http-listener.admin-listener.server-name = dashost



2010年2月2日 at 5:59 午前

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




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

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

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

2010年1月27日 at 2:53 午後

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 午前 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 午前

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)

2009年12月21日 at 10:20 午後

SDC 連載記事のアーカイブ



以前、GlassFish に関する連載記事を弊社 SDC(sdc.sun.co.jp)のサイトで

行っていましたが、SDC のサイトが何らかの障害?閉鎖?で

アクセスできなくなっておりました。





以前、連載記事のバックアップをしていましたので、

こちらから連載記事をまとめてダウンロードできるようにいたしました。

(若干体裁はずれていますが、内容や画像はそのまま確認できるかと思います。)



jar 版と、tgz 版それぞれ用意いたしましたので、ご希望に応じて

入手してください。




jar アーカイブ版



tgz アーカイブ版




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



 第1回:導入編

 第2回:アプリケーションサーバの管理の基本

   第2回:アプリケーションサーバの管理の基本 アップデート情報

 第3回:クラスタと負荷分散 (1)

 第4回:クラスタと負荷分散 (2)

 第5回:インメモリリプリケーションによる高可用性の実現方法






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


移動先へのリンク








(伊豆下田)



(箱根の夕暮れ)


2009年12月16日 at 7:20 午後

Java EE 6 / GlassFish v3 の仮想カンファレンス開催







Java EE 6 / GlassFish v3 に関連した仮想カンファレンス開催が

2009年12月15日 (日本時間:12/16 夜中 AM1:00 から)されます。

各セッションは30分〜1時間で開催される予定です。

日本の方は、真夜中から明け方までになるのでその時間帯で、

見ることはできないと思うのですが、今海外のエンジニアに

録画して後から見れるようにして欲しいと要望をだしていますので、

もし、録画されたらそちらを見てみてください。




詳細はコチラ




● Java EE: The Foundation for Your Business (Keynote)

● Java EE 6: An Overview (Keynote)

● GlassFish v3 – Java EE 6 Reference Implementation & Beyond (Keynote)

● Enterprise Java Beans (EJB) 3.1 Features

● Jersey, JAX-RS and REST with GlassFish v3

● Servlet 3.0

● Java Persistence API (JPA) 2.0

● Java Server Faces (JSF) 2.0

● Web Services in GlassFish

● Context Dependency and Injection (JSR 299)

● OSGi in GlassFish v3

● Dynamic Languages with GlassFish v3

● Tools for GlassFish v3: NetBeans and Eclipse

● Grizzly: NIO & Web Framework. Comet using GlassFish

● Monitoring, Management in GlassFish v3



日本時間では明日には、GlassFish の FCS(First Customer Shipment) 版がいよいよリリースされます。

また、GA(General Availability) 版はクリスマス前にはリリースされるかと思います。

年末まで各種イベントが目白押しですが、Sun の GlassFish ブロガー達が数多くの情報を

発信します。



是非、下記のタグもご参照ください。




http://blogs.sun.com/main/tags/glassfish

2009年12月9日 at 10:43 午後

GlassFish WebStack Enterprise ManagerとGlassFish WebSpace Server





今日のイベントで使用したプレゼン資料と、デモのビデオを

公開します。



プレゼン資料



今日は、本当に色々な事を説明させていただいたのですが、

デモでは GlassFish WebStack の Enterprise Manager と

GlassFish WebSpace Server(ポータルサーバ)のデモを

行いました。

ちなみにデモは MacBook に Virtual Box インストールして

その上で、Solaris x86 をインストールしてデモしています。



GlassFish WebStackのEnterprise Manager は

GlassFish Portfolio のライセンスを Sun から購入して

頂いたお客様だけが使用できるアドバンスドな、

管理 GUI ですが、この管理 GUI から Apache, Tomcat,

MySQL等の起動/停止ができる他、実行時の状況を

確認するための、グラフも表示してくれます。

表示したい項目はリストの中から選択ができますが、

非常に多くの項目を確認することができます。





こちらからも確認できます。



また、GlassFish WebSpace Server は Liferay 5.2 を

ベースにSunが拡張したポータルサーバで、ポータルサーバに

必要な機能はほぼ全てデフォルトでそろっています。

このポータルサーバは、OpenOffice 等のオフィス製品と

連携する事もでき、ポータルサーバ上に作成した、

ファイル共有エリアから、ファイルの取得や保存などの

処理も行えますので、グループでドキュメントの共有を

したい場合などにも便利です。

ポータルサーバにご興味のある方は是非デモをご覧下さい。





こちらからも
確認できます。




最後に、GlassFish v3 も FCS 版が 12/10(日本時間:12/11)でGA版が

クリスマス前にはリリースされる予定です。これに併せて、海外等では

GlassFish v3/Java EE 6 に関連したウェビナーが行われる予定です。

是非、楽しみにしてください。


2009年12月9日 at 2:51 午前

GlassFish v2.1.1の追加機能のメモ

http://wiki.glassfish.java.net/Wiki.jsp?page=PlanForGlassFishV2.1.1



New load-balance option for stateless session beans

A new method for load-balancing stateless EJBs is introduced in GlassFish v2.1.1.

This provides for load-balancing with each request. Per-request load balancing

chooses the first node in the cluster to use on each request.

The old load balancing feature chooses the first node to use when the InitialContext is created;

thereafter each request uses the same node (unless a failure occurs).



Enabling this feature is done by setting a new property in the sun-ejb-jar.xml file:

per-request-load-balancing (boolean). If this property is not set,

the original Load Balance behavior is preserved.



For example:



<sun-ejb-jar>

<enterprise-beans>

<unique-id>1</unique-id>

<ejb>

<ejb-name>TheGreeter</ejb-name>

<jndi-name>greeter</jndi-name>

<per-request-load-balancing>true</per-request-load-balancing>

</ejb>

</enterprise-beans>

</sun-ejb-jar>




After this is set, you must redeploy the EJB(s).



As a verification check, you can verify that this is configured properly

by looking for the following (FINE, in the EJB logger) log message

when the EJB is loaded:



“Setting per-request-load-balancing policyfor EJB <EJBNAME>”



This is only supported for stateless session beans.

Use of per-request-load-balancing with any other bean types will

result in a deployment error.


2009年12月4日 at 12:29 午後

GlassFish 懇親会の場所決定



GlassFish 忘年会(懇親会)の場所が決定しました。

当日の皆様とお会いできるのを楽しみにしています。

場所のチェック



2009年11月28日 at 10:04 午後

Older Posts Newer Posts


Java Champion & Evangelist

Translate

ご注意

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

カレンダー

2025年12月
1234567
891011121314
15161718192021
22232425262728
293031  

カテゴリー

clustermap

ブログ統計情報

  • 1,311,856 hits

Feeds

アーカイブ