ここでは、以下について説明します。
IJServerクラスタの複数プロセスでの運用について
IJServerクラスタに対して複数のサーバーインスタンスを登録すると、複数のJava VMプロセスを一括で起動・停止できます。
サーバーインスタンスは、実際に生成されるJava VMプロセスと対応しているため、IJServerクラスタを起動するとサーバーインスタンスごとにJava VMプロセスが生成されます。
プロセスIDとサーバーインスタンス名
それぞれのサーバーインスタンスは異なるプロセスIDとサーバーインスタンス名を持っており、ユーザはこれらの情報を使用して各プロセスを識別します。一方、ユーザアプリケーションや定義情報はIJServerクラスタ単位で同一のものを参照します。
IJServerクラスタを複数のインスタンスで起動したときの構成について、以下に説明します。
項目 | 構成 | 説明 |
---|---|---|
プロセスID | インスタンス単位 |
|
インスタンス名 | インスタンス単位 |
|
設定情報 | IJServerクラスタ単位 | 設定情報は、IJServerクラスタ単位で同一の設定を参照します。 |
配備済みアプリケーション | IJServerクラスタ単位 | 配備済みアプリケーションは、IJServerクラスタ単位で同一のアプリケーションを参照します。 |
ログ | インスタンス単位 | ログ出力ディレクトリ、およびログファイルは、サーバーインスタンスごとに作成されます。 |
カレントディレクトリ | インスタンス単位 | カレントディレクトリは、サーバーインスタンスごとに作成されます。 |
注意
IJServerクラスタ運用中に設定を更新した場合、更新した内容は停止しているサーバーインスタンスに反映され、すでに起動しているサーバーインスタンスには反映されません。すでに起動されているサーバーインスタンスに対し、更新内容が反映されているかどうかは、サーバーインスタンスの状態で判断できます。
サーバーインスタンスの状態がrequired restartの場合、設定更新内容は反映されていません。IJServerクラスタに属するすべてのサーバーインスタンスに対して定義内容を反映させるためには、IJServerクラスタの再起動、または、すべてのサーバーインスタンスの再起動を実施してください。
ユーザアプリケーションからは以下のプロパティによりIJServerクラスタ名とサーバーインスタンス名を取得できます。
com.sun.aas.clusterName
com.sun.aas.instanceName
本機能により、IJServerクラスタを複数サーバーインスタンスで運用する際にアプリケーションからプロセスを識別できます。
例えば、業務データをログファイルに出力する場合、アプリケーションからサーバーインスタンス名を取得してファイル名に付加すると、プロセスごとに異なるファイルにデータを出力できます。
例
サーバーインスタンス名取得の実装例
String instanceName = |
プロセスID保存ファイル
IJServerクラスタの起動時、サーバーインスタンスのJava VMプロセスのプロセスIDが以下のファイルに出力されます。
このファイルは、IJServerクラスタを停止した際に削除されますが、サーバーインスタンスのJava VMプロセスが異常終了した場合は、ファイルが残存します。
Java EE 共通ディレクトリ/nodeagents/ijna/サーバーインスタンス名/current/latest/.__com_sun_appserv_pid