Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性 (HA) 管理ガイド

ノードエージェントとドメイン管理サーバーとの同期化

設定データは、ドメイン管理サーバーのリポジトリ (中央リポジトリ) に格納されると同時に、ノードエージェントのローカルマシンにもキャッシュされるため、これら 2 つは同期化する必要があります。キャッシュの同期化は、明示的なユーザーアクションが行われるたびに、管理ツールによって実行されます。

この節では、次のトピックについて説明します。

ノードエージェントの同期化

はじめてノードエージェントが起動すると、中央リポジトリの最新情報の要求をドメイン管理サーバー (DAS) に送信します。ノードエージェントが DAS に正常に接続され、設定情報を取得すると、ノードエージェントは DAS にバインドされます。


注 –

デフォルトでは、asadmin start-node-agent コマンドを使用すると、DAS と同期化せずに、リモートサーバーインスタンスが自動的に起動します。DAS によって管理されている中央リポジトリと同期化しているリモートサーバーインスタンスを起動する場合は、asadmin start-node-agent コマンドの --startinstances=false オプションを指定します。次に、asadmin start-instance コマンドを使用してリモートサーバーインスタンスを起動します。


DAS にプレースホルダノードエージェントを作成した場合、ノードエージェントがはじめて起動するときに、ノードエージェントは DAS の中央リポジトリから設定を取得します。最初の起動時に、DAS が実行されていないため、ノードエージェントが DAS に到達できない場合、ノードエージェントは停止し、バインドされないままの状態になります。

ドメインのノードエージェントの設定が変更された場合、ノードエージェントを実行するローカルマシンのノードエージェントと自動的に通信します。

DAS のノードエージェント設定を削除すると、ノードエージェントは次に同期するときに停止し、ノードエージェント自体が削除待ちとしてマーク付けされます。ローカルの asadmin delete-node-agent コマンドを使用して、ノードエージェントを手動で削除します。

サーバーインスタンスの同期化

管理コンソールまたは asadmin ツールを使用してサーバーインスタンスを明示的に起動する場合、サーバーインスタンスは中央リポジトリと同期化されます。この同期が失敗すると、サーバーインスタンスは起動しません。

ノードエージェントが、管理コンソールまたは asadmin ツールによる明示的な要求なしにサーバーインスタンスを起動する場合、サーバーインスタンスのリポジトリキャッシュは同期しません。サーバーインスタンスは、キャッシュに格納された設定によって実行されます。リモートサーバーインスタンスのキャッシュ内にファイルを追加または削除することはできません。

リモートサーバーインスタンスの設定は、キャッシュとして処理され (ファイルはすべて nodeagents/na1/server1 の下に配置される)、Application Server によって所有されます。極端な例を挙げれば、ユーザーがリモートサーバーインスタンスのすべてのファイルを削除し、ノードエージェントを再起動すると、リモートサーバーインスタンス (server1 など) は再作成され、必要なファイルはすべて同期化されます。

次のファイルおよびディレクトリは Application Server によって同期が保たれます。

表 7–1 リモートサーバーインスタンス間で同期化されるファイルとディレクトリ

ファイルまたはディレクトリ 

説明 

applications

配備されているすべてのアプリケーション。このディレクトリ (およびサブディレクトリ) の中で、サーバーインスタンスから参照されるアプリケーションに基づいて同期化される部分。ノードエージェントはアプリケーションを参照しないので、どのアプリケーションも同期化しません。 

config

ドメイン全体に対する設定ファイルを格納します。このディレクトリ内のファイルは、実行時の一時ファイル (admchadmsnsecure.seed、. timestamp__timer_service_shutdown__.dat など) を除いて、すべて同期化されます。

config/config_name

config_name という名前の設定を使用してすべてのインスタンスによって共有されるファイルを格納するためのディレクトリ。domain.xml で定義されるすべての設定に対して、このようなディレクトリが 1 つ存在することになります。このディレクトリ内のすべてのファイルが、config_name を使用しているサーバーインスタンスと同期化されます。

config/config_name/lib/ext

Java 拡張クラスを (zip または jar アーカイブとして) ドロップできるフォルダ。これは、config_name という名前の設定を使用して、サーバーインスタンスに配備されたアプリケーションによって使用されます。これらの jar ファイルは、Java 拡張メカニズムを使用してロードされます。

docroot 

HTTP ドキュメントルート。既定の設定では、ドメイン内のすべてのサーバーインスタンスが同じ docroot を使用します。仮想サーバーの docroot プロパティーについては、サーバーインスタンスが別の docroot を使用するように設定する必要があります。 

generated 

Java EE アプリケーションやモジュール用に生成されたファイル。たとえば、EJB スタブ、コンパイル済みの JSP クラス、セキュリティーポリシーファイルなど。このディレクトリは、applications ディレクトリと一緒に同期化されます。したがって、サーバーインスタンスによって参照されるアプリケーションに対応するディレクトリのみが同期化されます。 

lib、lib/classes 

ドメイン全体に配備されたアプリケーションによって使用される共通の Java クラスファイルまたは jar および zip アーカイブをドロップできるフォルダ。これらのクラスは、Application Server のクラスローダーを使用してロードされます。クラスローダーによるロード順序は次のとおりです。lib/classeslib/*.jar lib/*.zip

lib/ext 

ドメイン全体に配備されたアプリケーションによって使用される Java 拡張クラスを (jar または zip アーカイブとして) ドロップできるフォルダ。これらの jar ファイルは、Java 拡張メカニズムを使用してロードされます。 

ライブラリファイルの同期化

アプリケーションの --libraries 配備時間属性を使用して、アプリケーションの実行時の依存関係を指定することができます。

ライブラリをドメイン全体で使用できるようにするには、JAR ファイルを domain-dir/lib または domain-dir/lib/classes に配置することができます。詳細については、『Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide』「Using the Common Classloader」を参照してください。通常この方法は、JDBC ドライバや、ドメイン内のすべてのアプリケーションによって共有されているその他のユーティリティーライブラリに対してあてはまります。

クラスタ全体またはスタンドアロンのサーバー全体で使用する場合は、jar ファイルを domain-dir/domain1/config/xyz-config/lib ディレクトリにコピーします。次に、それらの jar ファイルを、xyz-configclasspath-suffix または classpath-prefix 要素に追加します。これによって、xyz-config を使用して、すべてのサーバーインスタンスの jar ファイルが同期化されます。

要約すると、次のようになります。

一意の設定と設定管理

設定ファイル (domains/domain1/config の下) は、ドメイン全体にわたって同期化されます。スタンドアロンのサーバーインスタンス (server1) によって使用される server1-config 用に server.policy をカスタマイズする場合は、変更後の server.policy ファイルを domains/domain1/config/server1-config ディレクトリの下に配置します。

変更後の server.policy ファイルは、スタンドアロンのサーバーインスタンス server1 に対してのみ同期化されます。jvm-option を更新することも忘れないでください。次に例を示します。<java-config> ... <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server1-config/server.policy</jvm-options></java-config>

大きなアプリケーションの同期化

同期化の必要な大きなアプリケーションが使用環境に含まれる場合、または使用できるメモリーが制限されている場合は、JVM オプションを調整してメモリーの使用を制限できます。この調整によって、メモリー不足によるエラーを受信する可能性は低くなります。インスタンス同期化 JVM ではデフォルトの設定が使用されますが、JVM オプションを設定してそれらを変更することもできます。

INSTANCE-SYNC-JVM-OPTIONS プロパティーを使用して、JVM オプションを設定します。このプロパティーを設定するコマンドは次のとおりです。

asadmin set 
domain.node-agent.node_agent_name.property.INSTANCE-SYNC-JVM-OPTIONS="JVM_options"

次に例を示します。

asadmin set 
domain.node-agent.node0.property.INSTANCE-SYNC-JVM-OPTIONS="-Xmx32m -Xss2m"

この例では、ノードエージェントは node0、JVM オプションは -Xmx32m -Xss2m です。

詳細については、http://java.sun.com/docs/hotspot/VMOptions.htmlを参照してください。


注 –

ノードエージェントの設定にプロパティーが追加されたり変更されてもノードエージェントは自動的に同期化されないため、INSTANCE-SYNC-JVM-OPTIONS プロパティーの変更後、ノードエージェントを再起動してください。


doNotRemoveList フラグの使用

Application Server によって同期化されたディレクトリ (applications、generated、docroot、config、lib) 内のファイルを、アプリケーションによって保存または読み込む必要のある場合は、doNotRemoveList フラグを使用します。この属性は、ファイルまたはディレクトリのカンマ区切りリストをとります。アプリケーション依存ファイルは、DAS によって管理される中央リポジトリに存在していない場合でも、サーバーの起動時には削除されません。中央リポジトリに同じファイルが存在する場合は、同期化の途中で上書きされます。

INSTANCE-SYNC-JVM-OPTIONS プロパティーを使用して、doNotRemoveList 属性に渡します。

次に例を示します。

<node-agent name="na1" ...>

...

<property name="INSTANCE-SYNC-JVM-OPTIONS" value="-Dcom.sun.appserv.doNotRemoveList=applications/j2ee-modules/<webapp_context>/logs,generated/mylogdir"/>

</node–agent>