Archive for 2月, 2010
GlassFish クラスタとクラスタインスタンス管理(作成、削除、起動、停止)
ここでは管理ツールを使用しクラスタの管理を行う方法について紹介します.
クラスタの作成
クラスタ構成を作成するためにはcreate-clusterコマンドを使用します.コマンド引数にクラスタ名を指定してクラスタを作成します.
| asadmin create-cluster cluster1 コマンド create-cluster は正常に実行されました。 |
また,管理コンソールから左ペインの「クラスタ」を選択し右ペインの「新規…」ボタンを押すことによって作成することができます.

クラスタの作成
クラスタサーバインスタンスの作成
クラスタに所属するサーバインスタンスを作成するためには,create-instanceコマンドを実行します.コマンド引数にインスタンスを配置するノードエージェント名とクラスタ名を指定してインスタンスを作成します.
| dashost > asadmin create-instance –nodeagent nodeagent1 –cluster cluster1 instance1 コマンド create-instance は正常に実行されました。 dashost > asadmin create-instance –nodeagent nodeagent2 –cluster cluster1 instance2 コマンド create-instance は正常に実行されました |
また,クラスタに所属するサーバインスタンスは「クラスタ」作成のウィザードから「作成するサーバインスタンス(2)」のテーブルから,「新規…」ボタンを押すことによって作成することができます.この時ノードエージェントの選択コンボボックスからサーバインスタンスが稼働するノードエージェントを選択します.

クラスタインスタンスの作成
クラスタの一覧表示
ドメイン内に存在するクラスタの一覧を表示するためにはlist-clustersコマンドを使用します.またコマンドを実行すると一覧表示の他クラスタの稼働状態も表示します.
| dashost > asadmin list-clusters cluster2 実行していません cluster1 実行しています コマンド list-clusters は正常に実行されました。 |
また,管理コンソールから左ペインの「クラスタ」を選択して確認できます.

クラスタの一覧表示
クラスタの起動
クラスタの起動はstart-clusterコマンドを使用します.コマンド引数にクラスタ名を指定して起動します.
| dashost > asadmin start-cluster cluster2 クラスタ化されたインスタンス instance3 の起動に成功しました。 クラスタ化されたインスタンス instance4 の起動に成功しました。 コマンド start-cluster は正常に実行されました。 |
また,管理コンソールから左ペインの「クラスタ」を選択し右ペイン中より対象のクラスタにチェックを付け「クラスタの起動」ボタンを押すことによって作成することができます.

クラスタの起動
クラスタの停止
クラスタの停止はstop-clusterコマンドを実行します.コマンド引数にクラスタ名を指定して停止します.
| dashost > asadmin stop-cluster cluster1 クラスタ化されたインスタンス instance1 の停止に成功しました。 クラスタ化されたインスタンス instance2 の停止に成功しました。 コマンド は正常に実行されました。 |
また,管理コンソールから左ペインの「クラスタ」を選択し右ペイン中より対象のクラスタにチェックを付け「クラスタの停止」ボタンを押すことによってクラスタを停止することができます.

クラスタの停止
クラスタの削除
クラスタを削除するためには,クラスタに所属している全てのインスタンスを停止/削除した後に削除を行います.
まず,クラスタの一覧とクラスタに所属するインスタンスを表示します.
| dashost > asadmin list-clusters cluster2 実行していません cluster1 実行していません コマンド list-clusters は正常に実行されました。 dashost > asadmin list-instances instance1 実行していません instance2 実行していません instance3 実行していません instance4 実行していません コマンド list-instances は正常に実行されました。 |
次に,cluster1に属するinstance1,instance2を削除します.
| dashost > asadmin delete-instance instance1 コマンド delete-instance は正常に実行されました。 dashost > asadmin delete-instance instance2 コマンド delete-instance は正常に実行されました。 |
最後にcluster1を削除します.
| dashost > asadmin delete-cluster cluster1 コマンド delete-cluster は正常に実行されました。 |
また,管理コンソールから左ペインの「クラスタ」を選択し右ペイン中より対象のクラスタにチェックを付け「削除」ボタンを押すことによってクラスタを削除することができます.管理コンソールから削除を実行すると,クラスタ内に属する全てのインスタンスも同時に削除する事ができます.

クラスタの削除
GlassFish スタンドアローンインスタンス管理(作成、削除、起動、停止)
スタンドアローンサーバインスタンスの作成
スタンドアローンサーバインスタンスを追加するためにはcreate-instanceコマンドを実行します.サーバインスタンスが稼働するノードエージェント名を指定して作成します.複数のインスタンスを作成する際は,必ずノードエージェントの指定が必要です.そこで,開発者プロファイルを利用している場合,もしくはノードエージェントを作成していない場合は,新たにサーバインスタンスを作成することができませんので,ご注意ください.
|
dashost > asadmin create-instance –nodeagent nodeagent1 instance1 コマンド create-instance は正常に実行されました |
上記のようにサーバインスタンスで使用する各種ポート番号を明示的に指定せずにサーバインスタンスを作成する場合は,極力既存の全てのサーバインスタンスを起動している状態で作成作業を行ってください.ポート番号を指定せずに実行した場合,コマンド内部で自動的に未使用のポート番号を探し出して新規インスタンス用に割り当てます.他のサーバインスタンスが停止している状態でコマンドを実行した場合,他で使用しているポート番号と競合する可能性があり,正常にサーバインスタンスが起動できない場合があります.作成するインスタンスで使用する各種ポート番号を指定したい場合は,下記のように–systempropertiesを付加して各種ポート番号を指定する事もできます.
|
dashost > asadmin create-instance –user clusterAdmin –host sw-103 –port 5048 –nodeagent nodeagent1 –systemproperties HTTP_LISTENER_PORT=5180:HTTP_SSL_LISTENER_PORT=51443:IIOP_LISTENER_PORT=5138:IIOP_SSL_LISTENER_PORT=5137:IIOP_SSL_MUTUALAUTH_PORT=5139:JMX_SYSTEM_CONNECTOR_PORT=5140 instance1 コマンド create-instance は正常に実行されました。 |
また,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択し右ペインの「新規…」ボタンを押すことによって新規インスタンスを追加することができます.

新規スタンドアローンインスタンスの追加
サーバインスタンスの一覧表示
サーバインスタンスの一覧を確認するためにはlist-instancesコマンドを使用します.コマンドを実行すると一覧表示の他インスタンスの稼働状態も表示します.
|
dashost > asadmin list-instances instance1 実行しています instance2 実行していません コマンド list-instances は正常に実行されました。 |
また,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択して確認できます.

インスタンスの一覧表示
サーバインスタンスの起動
サーバインスタンスの起動はstart-instanceコマンドを使用します.実行時にインスタンス名を指定して起動します.
|
dashost > asadmin start-instance instance2 コマンド start-instance は正常に実行されました。 |
また,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択し右ペインの「起動」ボタンを押すことによってインスタンスを起動することができます.

サーバインスタンスの起動
もしくは,管理コンソールから左ペインから対象の「スタンドアロンインスタンス」を選択し右ペインの「インスタンスの起動」ボタンを押すことによってインスタンスを起動することができます.

サーバインスタンスの起動
サーバインスタンスの停止
サーバインスタンスの停止はstop-instanceコマンドを実行します.コマンド引数にインスタンス名を指定して停止します.
|
dashost > asadmin stop-instance instance1 コマンド stop-instance は正常に実行されました |
また,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択し右ペインの「停止」ボタンを押すことによってインスタンスを停止することができます.

サーバインスタンスの停止
もしくは,直接左ペインから対象の「スタンドアロンインスタンス」を選択して右ペインの「インスタンスの停止」ボタンを押すことによってインスタンスを停止することができます.

サーバインスタンスの停止
サーバインスタンスの削除
インスタンスの削除はdelete-instanceコマンドを実行します.コマンド引数にインスタンス名を指定して削除します.
|
dashost > asadmin delete-instance –user clusterAdmin –host sw-103 –port 5048 instance1 コマンド delete-instance は正常に実行されました。 |
また,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択し右ペインの「削除」ボタンを押すことによってインスタンスを削除することができます.

サーバインスタンスの削除
GlassFish ノードエージェント管理(作成、削除、起動、停止、ログ設定)
ノードエージェントの作成
ノードエージェントを作成するためには,ドメイン管理サーバ上で create-node-agent-config コマンドを実行しノードエージェント(参照情報のみ)を作成します.下記の例では2つのノードエージェントを作成しています.
| dashost > asadmin create-node-agent-config nodeagent1 コマンド create-node-agent-config は正常に実行されました。 dashost > asadmin create-node-agent-config nodeagent2 コマンド create-node-agent-config は正常に実行されました |
次にノードエージェントを稼働させるマシン上でそれぞれ create-node-agent コマンドを実行します.この時ドメイン管理サーバ上で指定したノードエージェント名と同一のエージェント名を指定する必要があります.
| nodeagent1 > asadmin create-node-agent –user clusterAdmin –host dashost –port 5048 –savemasterpassword=true nodeagent1 コマンド create-node-agent は正常に実行されました。 |
| nodeagent2 > asadmin create-node-agent –user clusterAdmin –host dashost –port 5048 –savemasterpassword=true nodeagent2 コマンド create-node-agent は正常に実行されました。 |
便宜上ノードエージェントを稼働させるマシン上で create-node-agent コマンドを実行すると,「参照情報」と,「ノードエージェントの実体」の両方が同時に生成されます.しかし内部的には参照情報の設定とノードエージェントの実体は別々に作成されていることに注意してください.
このように,参照情報とノードエージェントの作成が別々に行われる理由は,ノードエージェントをオフラインで管理ができるようにするためです.例えば,実体であるノードエージェントが停止状態でも,ドメイン管理サーバ上で管理しているノードエージェントの参照情報に対してインスタンスを追加することができます.そしてノードエージェントの実体を起動した時にドメイン管理サーバで保持するノードエージェントの参照(設定)情報と同期をとりインスタンスの実体が生成されます.
管理コンソールからは,ドメイン管理サーバで管理する参照情報のみ作成することができます.参照情報を作成した後,別途ノードエージェントが稼働するマシン上でノードエージェントの実体を作成してください.
管理コンソールの左ペインから「ノードエージェント」を選択し、右ペインより「新規…」ボタンを押すことによってノードエージェントの参照情報を作成することができます.

ノードエージェントの参照情報の作成
ノードエージェントの一覧表示
ノードエージェントの一覧を確認するためにはlist-node-agentsコマンドを使用します.コマンドを実行すると一覧表示の他ノードエージェントの稼働状態も表示します.
| dashost > asadmin list-node-agents nodeagent1 実行しています nodeagent2 実行していません コマンド list-node-agents は正常に実行されました。 |
また,管理コンソールからは,左ペインの「ノードエージェント」を選択して確認できます.

ノードエージェントの一覧表示
ノードエージェントの起動
ノードエージェントを起動するためには,ノードエージェントが稼働するマシン上で start-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 は正常に実行されました。 |
ノードエージェントの停止
ノードエージェントを停止するためには,ノードエージェントが稼働するマシン上で stop-node-agent コマンドを実行します.
| nodeagent1 > asadmin stop-node-agent nodeagent1 コマンド stop-node-agent は正常に実行されました |
ノードエージェントのログ設定
ノードエージェントのログに関する設定を行う前に,現在設定されているログの設定情報を get コマンドを実行して確認します.
| dashost > asadmin get “domain.node-agent.nodeagent1.log-service.*” domain.node-agent.nodeagent1.log-service.alarms = false domain.node-agent.nodeagent1.log-service.file = ${com.sun.aas.instanceRoot}/logs/server.log domain.node-agent.nodeagent1.log-service.log-filter = domain.node-agent.nodeagent1.log-service.log-handler = domain.node-agent.nodeagent1.log-service.log-rotation-limit-in-bytes = 500000 domain.node-agent.nodeagent1.log-service.log-rotation-timelimit-in-minutes = 0 domain.node-agent.nodeagent1.log-service.log-to-console = false domain.node-agent.nodeagent1.log-service.retain-error-statistics-for-hours = 5 domain.node-agent.nodeagent1.log-service.use-system-logging = false |
ここで例えば、set コマンドを実行しログローテーションのファイルサイズを 500Kb から 1Mb に変更してみます。
下記を実行してください.
| dashost > asadmin set domain.node-agent.nodeagent1.log-service.log-rotation-limit-in-bytes=1000000 domain.node-agent.nodeagent1.log-service.log-rotation-limit-in-bytes = 1000000 |
上記の設定内容を確認するため get コマンドを実行します.
| dashost > asadmin get domain.node-agent.nodeagent1.log-service.log-rotation-limit-in-bytes domain.node-agent.nodeagent1.log-service.log-rotation-limit-in-bytes = 1000000 |
また,ノードエージェントに関する各種設定は,管理コンソールからも行えます.

ノードエージェントの各種設定
ノードエージェントの削除
ノードエージェントを削除する前に,ノードエージェント上で稼働している全てのインスタンス,全てのアプリケーションを停止していることを確認してください.ノードエージェント上にリソースが残っている場合,ノードエージェントの削除に失敗します.
全てのリソースを削除した後に,ノードエージェントが稼働するマシン上で delete-node-agent コマンドを実行し実体を削除します.下記のコマンドを実行するとファイルやディレクトリを全て削除します.
| nodeagent1 > asadmin delete-node-agent nodeagent1 コマンド delete-node-agent は正常に実行されました。 |
次に、delete-node-agent-configコマンドを実行し,ドメイン管理サーバ上で保持するノードエージェントの参照情報を削除します.
| dashost > asadmin delete-node-agent-config –user clusterAdmin –host dashost –port 5048 nodeagent1 コマンド delete-node-agent-config は正常に実行されました。 |
ノードエージェントの参照情報は管理コンソールからも削除できます.管理コンソールの左ペインから「ノードエージェント」を選択し,右ペインより削除対象のノードエージェントにチェックを付け,削除ボタンを押す事により削除できます.

ノードエージェントの参照情報の削除
GlassFish サーバインスタンス
サーバインスタンス
サーバインスタンスはエンドユーザ向けにサービスを提供するJava EE 5の 仕様に完全準拠したJava EEのプロセスです.1つのドメ イン内には複数のサーバインスタンスを作成する事ができます.また物理的にハードウェアが異なる環境上でインスタンスを作成する事もできます.ドメイン内 で複数のサーバインスタンスを作成する場合,それぞれのサーバインスタンスを識別するために,異なる名前を設定する必要があります.
サーバインスタンスは下記の2種類のいずれかの方法で作成できます.
- クラスタに所属しないインスタンス
- クラスタに所属しないインスタンス
クラスタについては別途,詳細に説明しますが,複数のサーバインスタンスを作成する環境では,クラスタへの所属の有無に応じて,アプリケーションの配備やリソース設定等の管理方法が大幅に異なってきます.具体的に はクラスタに属する全てのインスタンスは,クラスタに対する設定情報が各インスタンスに完全に引き継がれるため,たった1度のクラスタに対する操作で全て のインスタンスに対して反影されます.このようにクラスタに所属するインスタンスは,同じアプリケーションを負荷分散や高化用性を実現するために複数台の マシンで実行したいような場合に有効です.一方,クラスタに所属しないインスタンスは,各インスタンス間で設定情報を独立に設定するため,リソース設定を 個別に管理したい場合,単一のアプリケーションを別のJava VMプ ロセスで稼働させたい場合,もしくは異なるアプリケーションをそれぞれ別のJava VMの プロセスで稼働させたいような場合に有効です.
サーバインスタンスのアーキテクチャを「図5:サーバインスタンスのアーキテク チャ」に示します.のようにプロセス内にEJBコンテナやWebコンテナ等を含み,各種クライアントからの要求を受け 付けます.

図 5:サーバインスタンスのアー キテクチャ
サーバインスタンス単位,もしくはクラスタ構成単位に「図6: インスタンス毎の設定項目」に示す項目の設定が可能です.

図 6:インスタンス毎の設定項目
GlassFish ドメイン管理(作成、削除、起動、停止)
ドメインの作成
ドメインを作 成するためには create-domain コマンドを 実行して作成します.下記にプロファイルごとのドメイン作成方法を示します.
開発者 用プロファイルを使用したドメインの作成方法
デフォルトで 作成されるドメイン(domain1)以外に開発者用プロファイ ルを利用した新規ドメイン(devDomain)を作成する方法を下記 に示します.
| dashost > asadmin create-domain –profile developer –adminport 14848 –instanceport 10080 –savemasterpassword=true –savelogin=true devDomain Admin のポート 14848 を使用しています。 HTTP Instance のポート 10080 を使用しています。 JMS のデフォルトポート 7676 を使用しています。 IIOP のデフォルトポート 3700 を使用しています。 HTTP_SSL のデフォルトポート 8181 を使用しています。 IIOP_SSL のデフォルトポート 3820 を使用しています。 IIOP_MUTUALAUTH のデフォルトポート 3920 を使用しています。 JMX_ADMIN のデフォルトポート 8686 を使用しています。 コマンド行または環境で の指定どおりにプロファイル developer を使用してドメインを作成しています。 指定されたロケール [ja_JP] のファイルが [/sun/glassfish-v2.1.1/lib/install/templates/locales/ja_JP/index.html] に見つかりませんでした。デフォルト (en_US) の index.html を使用します。 使用するセキュリティーストア: JKS ドメイン devDomain が作成されました。 このドメイン [devDomain] の管理ユーザー名 [devAdmin] に関連するログイン情報が [/export/home/appserv/.asadminpass] に正常に格納されました。 このファイルが保護されたままであることを確認します。このファイルに格納された情報 は、このドメインを管理するために asadmin コマンドによって使用されます dashost > cat .asadminpass # Do not edit this file by hand. Use “asadmin login” command instead. asadmin://devAdmin@localhost:14848 YWRtaW5hZG1pbg== |
クラスタプロファイルを使用したドメインの作成方法
クラスタプロファイルを使用したドメインの作成方法を下記に示します.下記の例では,ベースとなるポート番号(portbase)を指定して実行します.このオプションは 指定したポート番号を基に自動的に各種ポート番号を割り当てドメインを作成します.ポート番号の把握が容易になるため,複数ドメインを構築する場合などに 適しています.
| dashost > asadmin create-domain –user clusterAdmin –profile cluster –portbase 5000 –savemasterpassword=true –savelogin=true clusterDomain (省略) ドメイン clusterDomain が作成されました。 |
上記はいずれも —savemasterpassword,–savelogin を有効にして設定を行いました.これらのオプションを指定してドメインを作成すると, 管理者のパスワード,管理者のパスワードがローカルファイルシステム(.asadminpass/master-password)に保存され,次回コマン ド実行時に管理者パスワードの入力を省略できます。一方 –savemasterpassword,–savelogin を指定せずに作成したドメインは asadmin コマンドの実行時に毎回管理者パスワードを問い合わせされます.
不正使用を防ぎたい場合は,毎回パスワードの入力を求めるように–savemasterpassword,–saveloginの 設定を無効にし,環境変数も設定しないようにしてください.
ドメインの一覧表示
作成されているドメインの一覧を表示するためにはlist-domainsコ マンドを実行します.コマンドを実行すると一覧表示以外にドメインの稼働状態も確認できます.
| dashost > asadmin list-domains devDomain 実行していません clusterDomain 実行しています コマンド list-domains は正常に実行されました。 |
ドメインとドメイン管理サーバインスタンスの起動
ドメイン管理サーバを起動するためには,start-domainコマンドを実行します.
| 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 ]。 ドメインはアプリケーションサーバークラスタおよびその他のスタンドアロンインスタン スをサポートします。 |
ドメインとドメイン管理サーバインスタンスの停止
ドメイン管理サーバを停止するためには,stop-domainコマンドを実行します.
| dashost > asadmin stop-domain clusterDomain ドメイン clusterDomain が停止しました |
開発者プロファイルを使用して作成したドメインの場合,管理コンソールの左ペインから「アプリケーションサーバ」を選択し右ペインの「一般」タブか ら「インスタンスの停止」ボタンを押すことによってドメイン管理サーバのインスタンスを停止する事ができます.

図 7:開発者プロファイルを利用 したドメイン管理サーバの停止方法
クラスタプロファイルを使用して作成したドメインの場合,管理コンソールから左ペインの「スタンドアロンインスタンス」を選択し右ペインの「一般」 タブから「インスタンスの停止」ボタンを押すことによってドメイン管理サーバのインスタンスを停止する事ができます.

図 8:クラスタプロファイルを利 用したドメイン管理サーバの停止方法
クラスタプロファイルへの変更方法
開発者プロファイルで作成したドメインをクラスタプロファイルに変更することができます.クラスタプロファイルへの変更は、asadminコマンドは利用できず,GUIの管理コンソールを使用した場合のみ可能です.
クラスタプロファイルへ変更するためには,管理コンソールの左ペインから「アプリケーションサーバ」を選択し右ペインの「一般」タブから「クラスタ サポートを追加…」ボタンを押すことによってクラスタ 構成を組むことのできるクラスタプロファイルへ変更できます.

図 9:クラスタプロファイルへの 変更方法
ドメインの削除
ドメインを削除する前に,ドメインが管理する全てのノードエージェント,全てのインスタンス,全てのアプリケーションが停止/削除されていることを確認して下さい.ドメイン上の各種リ ソースが残っている場合,削除に失敗します.
ドメインを削除するためには,delete-domainコマンドを実行します.
| dashost > asadmin delete-domain devDomai |
GlassFish ドメインとドメイン管理サーバ
ドメインとは
「ドメイン」とは,アプリケーションサーバの管理を行う上で必要なプロセスや,設定情報等をグループ化した管理用の構成単位です. ドメインは「ドメイン管理サーバ」,「サーバインスタンス」,「ノードエージェント」,「各種リソース(JDBC, JMS, JNDI)」等のさまざまなコンポー ネントや設定情報から構成されています.GlassFishをインストールすると, デフォルトで一つのドメイン(domain1)を生成しますが,必要に応 じて複数のドメインを作成することができます.管理を行うためには,サーバ管理者は,管理者ユーザ名,管理者パスワード,証明書データベースの管理用パス ワードを入力したのち管理を行います.複数のドメインを作成する場合,それぞれのドメインに対して個別に管理者ユーザ名,管理者パスワード,認証用データ ベース管理用パスワードを設定する必要があります.
複数のドメインの作成は,ASP (Application Service Provide) サービスの提供や SaaS(Software as a Service), またクラウドといったサービスにおいて,サービス提供単位,組織単位毎に独立して管理を行いたい場合等に適しています.各ドメイン間を独立して管理でき各 種設定情報はドメイン間では共有されないためこのような環境で安全に利用できます。

図 1:複数ドメインの構成例
| 補足:GlassFish v2.1 では 単一ドメインにおいて,単一のサーバ管理者が必要でしたが,GlassFish v3で は単一ドメインに対して,複数の管理者を設定できるようになります.これにより各管理者に対してあらかじめ権限を設定しておく事で複数の管理者で安心して 管理ができるようになります. |
ドメイン管理サーバ
ドメイン管理サーバは,ドメインを管理するための管理機能アプリケーションを含んだ,Java EE 5仕 様完全準拠のサーバインスタンス(※1)です.このドメイン管理サーバは,GlassFishのインストール時に作成される唯一のサー バインスタンスで,Java EEアプリケーションを配備して 稼働させる事もできるため,デフォルトサーバと呼ぶこともあります.通常開発時はこのデフォルトサーバのインスタンスに対してアプリケーションを配備した り,デバッグ等を行います.また本番環境において,複数のサーバインスタンスでサービスを提供している場合,一度このデフォルトサーバに対してアプリケー ションを配備し,動作確認後問題がない場合に本番環境を有効にするといった運用にも使うことができます(※2).
このドメイン管理サーバは,サーバ管理者の認証を行った後,ドメイン内のすべての管理,たとえばアプリケーションの配備やリソース設定,サーバイン スタンスの起動/停止等といった管理機能を提供します.
また,物理的に異なるハードウェア上のリソースも管理できます.
各ドメインは必ず一つのドメイン管理サーバのインスタンスを持ち,各ドメイン管理サーバには任意のネットワークポート番号を設定します.基本的に(※3)全ての管理操作はドメイン管理サーバが稼働している状態で行 いますので,ドメイン管理サーバが稼働していない状態では各種設定変更を行うことはできません.
※1 サーバインスタンスの詳細は別途紹介します.
※2 配備済みのアプリケーション設定で「ターゲットの管理」から利用可能 対象のインスタンス/クラスタを設定できます.
※3 一部の管理操作(インスタンスの起動,停止等)はドメイン管理サーバ が起動していない状態でも実行できます.

開発者ドメイン
図 2:開発時におけるドメインと ドメイン管理サーバの構成
サーバ管理者がドメインの管理を行うために,GlassFishで はいくつかの管理ツールを容易しています。代表的な管理操作はコマンドラインツール,もしくはWebベー スのGUI管理コンソールを使用して行います. また,サーバ管理者が独自に管理機能を拡張したい場合,AMX (AppServer Management Extensions)(※4)と呼ぶJMX MBeansベー スの管理拡張用APIを提供していますので,AMX APIを実装した独自管理機能を通じて管理すること もできます.
※4 AMX (Appserver Management Extensions)
https://glassfish.dev.java.net/javaee5/amx/
| #asadmin help #asadmin command_name [–help | ?] |
asadminで指定可能なコマンド一覧はhelpコマンドを実行することで確認できます.また、各種 コマンドの引数の詳細は,コマンド入力後 –help を付加して実行する事で確認で きます。

図 3:管理コンソールの表示例
ドメイン管理サーバ導入の利点は,セキュアな環境を構築したい場合に便利です.たとえば,ドメインを管理するための管理サービスとエンドユーザに対 して提供するサービスを独立して運用/管理ができるため,安心して管理を行うこ とができるようになります.

図 4:セキュアなサーバ管理が可 能なドメイン構成例
GlassFish プロファイル
今日は GlassFish 管理の基本概念について紹介します.まず,GlassFishを管理する上で,プロファイルと呼ばれる種類が存在する事を理解してください。また選択するプロファイルに応じて管理できる内容が異なることにも注意してください.GlassFish v2.x で提供される各プロファイルの差異を「表1:各プロファイルで使用できる機能」に記載します.種類としては「開発者プロファイル」,「クラスタプロファイル」,「エンタープライズプロファイル」の3種類が存在しています.この内で「エンタープライズプロファイル」は,オープンソースコミュニティ上のサイトでは提供されず,Sunから提供される製品「Sun GlassFish Enterprise Server v2.1.1 with HADB」を入手した場合のみ利用可能です.この製品以外は,「開発者プロファイル」もしくは「クラスタプロファイル」の何れかを利用する事ができます.たとえばインストール後も必要に応じて,「開発者プロファイル」から「クラスタプロファイル」へアップグレードすることも可能です.
| 製品名/機能差異 | 開発者プロファイル | クラスタプロファイル | エンタープライズプロファイル |
| セキュリティストア | JKS(Java Key Store) 証明書データベース:keystore.jks,cacerts.jks 証明書データベースの管理にkeytoolを使用 |
JKS(Java Key Store) 証明書(鍵)データベース:keystore.jks,cacerts.jks 証明書データベースの管理にkeytoolを使用 |
NSS
(Network Security Services) |
| 高速起動 | 可能 | 不可 | 不可 |
| クラスタ化 | 不可 | 可能 | 可能 |
| セキュリティマネージャ | 無効 | 有効 | 有効 |
| セッションレプリケーション | 不可 | インメモリレプリケーション | HADB |
| 負荷分散 | 不可 | 可能 | 可能 |
| ノードエージェント | 不可 | 可能 | 可能 |
| オープンソース 版の入手先 | https://glassfish.dev.java.net/
GlassFish v2.1.1 設定時setup.xmlを使用 |
https://glassfish.dev.java.net/
GlassFish v2.1.1 設定時setup-cluster.xmlを使用 |
入手不可(商用版のみ) |
| 製品版の入手先 | http://www.sun.com/appserver
Sun GlassFish Enterprise Server v2.1.1 |
http://www.sun.com/appserver
Sun GlassFish Enterprise Server v2.1.1 |
http://www.sun.com/appserver
Sun GlassFish Enterprise Server v2.1.1 with HADB |
表 1:各プロファイルで使用できる機能
システムを構築する環境で,どのプロファイルを選択すればよいかは下記の基準に従って選択して下さい.
- 開発者プロファイル:このプロファイルは開発環境に適しています.再起動等が頻繁に発生する開発環境においては高速起動が有効になっていますので統合開発環境との連携に有効です.
- クラスタプロファイル:このプロフィルは複数台のハードウェアでサービスを提供する,クラスタ環境の構築時に有効です.セッション高可用性の実現にはインメモリレプリケーションを使用するため,HADBの利用に比べパフォーマンスがよく,かんたんにクラスタ環境の構築,高可用性環境を構築できます.
- エンタープライズプロファイル:ミッションクリティカルな環境においては,HADBは最適です.HADBは99.999%の高可用性を実現するために専用のデータベース内にセッション情報を格納します.HADB内で冗長構成が取られているため,インメモリレプリケーションの構成に比べより安心して利用することができます.
GlassFish v3.x に関する補足:
GlassFIsh v3 からは上記のプロファイルの概念が若干変わってきます.GlassFish v3 では Java EE 6 で提供される Web Profile と Enterprise Platform 版のいずれかを入手することができます.GlassFish v2.1 でいう所のクラスタ機能は GlassFish v3.x の最初のリリースである GlassFish v3.0 では提供されず、GlassFish v3.1 以降で利用可能になる予定です.Web Profile, Enterprise Platform で提供される機能一覧を下記に示します.
| Java EE Standard | Java Specification Request (JSR) | Sun GlassFish Enterprise Server v3 Full Platform Profile | Sun GlassFish Enterprise Server v3 Web Profile |
|---|---|---|---|
| Java Platform, Enterprise Edition 6 | JSR 316 | 可能 | 可能 |
| Java Servlet Technology 3.0 | JSR 315 | 可能 | 可能 |
| JavaServer Pages 2.2 | JSR 245 | 可能 | 可能 |
| Expression Language 2.2 | JSR 245 | 可能 | 可能 |
| Debugging Support for Other Languages 1.0 | JSR 45 | 可能 | 可能 |
| Standard Tag Library for JavaServer Pages 1.2 | JSR 52 | 可能 | 可能 |
| JavaServer Faces 2.0 | JSR 314 | 可能 | 可能 |
| Common Annotations for the Java Platform 1.1 | JSR 250 | 可能 | 可能 |
| Java Transaction API 1.1 | JSR 907 | 可能 | 可能 |
| Java Persistence API 2.0 | JSR 317 | 可能 | 可能 |
| Enterprise JavaBeans 3.1 Lite | JSR 318 | 可能 | 可能 |
| Managed Beans 1.0 | JSR 316 | 可能 | 可能 |
| Interceptors 1.1 | JSR 318 | 可能 | 可能 |
| Dependency Injection for Java 1.0 | JSR 330 | 可能 | 可能 |
| Enterprise JavaBeans 3.1 Full API | JSR 318 | 可能 | 可能 |
| Contexts and Dependency Injection for Java EE 1.0 | JSR 299 | 可能 | 可能 |
| Java API for RESTful Web Service (JAX-RS) 1.1 | JSR 311 | 可能 | 可能 |
| Bean Validation 1.0 | JSR 303 | 可能 | 可能 |
| Java EE Connector Architecture 1.6 | JSR 322 | 可能 | 不可 |
| Java API for XML-Based Web Services (JAX-WS) 2.2 | JSR 224 | 可能 | 不可 |
| Java Architecture for XML Binding (JAXB) 2.2 | JSR 222 | 可能 | 不可 |
| Implementing Enterprise Web Services 1.3 | JSR 109 | 可能 | 不可 |
| Web Services Metadata for the Java Platform 2.1 | JSR 181 | 可能 | 不可 |
| Java Message Service API 1.1 | JSR 914 | 可能 | 不可 |
| JavaMail 1.4 | JSR 919 | 可能 | 不可 |
| Java Authorization Contract for Containers 1.4 | JSR 115 | 可能 | 不可 |
| Java Authentication Service Provider Interface for Containers 1.1 | JSR 196 | 可能 | 不可 |
| Java EE Application Deployment 1.2 | JSR 88 | 可能 | 不可 |
| J2EE Management 1.1 | JSR 77 | 可能 | 不可 |
| Java API for XML-Based Remote Procedure Calls (JAX-RPC) 1.1 | JSR 101 | 可能 | 不可 |
| Java API for XML-Based Registries (JAXR) 1.0 | JSR 93 | 可能 | 不可 |
GlassFish ドメイン管理の基本
さて、ブログサイトを移動して初エントリですが、実は昨年
GlassFish に関する本を出版するかもしれないということで、
出版用に書きためた物があります。それを、そのまま削除するのも
もったいないので、こちらに数回に分けて投稿する事にしました。
まず、はじめに GlassFish のドメイン管理を行う前に事前に準備します。
-
ホスト名とインストール場所について
-
アプリケーションサーバ実行ユーザの作成
-
管理操作を容易にする環境変数の設定
-
管理ツールの紹介
-
管理コンソール
GUIの管理コンソールを使用してGlassFishの管理を行うことができます.管理コンソールは洗練されたデザインであるため,初めてGlassFishを扱うサーバ管理者も感覚的に管理操作ができるため非常に便利です.

-
asadminコマンドユーティリティ
asadmin コマンドユーティリティは,GUIベースの管理コンソールが提供する管理機能のほとんどを行うことができる便利なユーティリティコマンドです.このコマンドを把握するとスクリプトを書いて管理の自動化を行ったり,ブラウザを開かずに管理ができるためちょっとした管理にもとても便利です.asadminユーティリティの使用方法は,–helpを付加して確認します.実行すると利用可能なコマンドの一覧を表示します.
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ユーティリティのコマンドの中でもget,setコマンドを使用すると現在設定されている内容の参照や更新ができます.下記の例ではアスタリスク(*)を指定し全ての設定情報を参照しています.また特定のプロパティに対して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 -
以降で紹介するホスト名は下記の通りです.それぞれのホストで実行するコマンドを区別するため,コマンド実行時はコマンドプロンプトを付加します.たとえば 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を利用していますが,紙面の都合上認証局サーバの構築方法は省略します.
ドメイン管理サーバと全てのノードエージェント上で実行ユーザとグループを作成します。
| # 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 |
あらかじめ環境変数に,管理者ユーザ名,パスワードなどを設定しておくことでコマンド入力引数を省略できます.下記の設定をドメイン管理サーバ,ノードエージェントの全てで設定してください.
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 |
