リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される作成画面に必要な情報を入力します。すると、次の画面が表示されます。 リソースタイプの作成が完了していなければ、構成画面にはアクセスできません。
起動コマンド — ベースアプリケーションを起動するために任意の UNIX シェルに渡すことができる完全なコマンド行。 このコマンドは必ず指定する必要があります。 このフィールドにコマンドを入力するか、「ブラウズ」ボタンを使用して、アプリケーションを起動するコマンドが記述されているファイルを指定します。
完全なコマンド行には、アプリケーションを起動するのに必要なすべての要素が含まれていなければなりません。たとえば、ホスト名、ポート番号、構成ファイルへのパスなどです。 コマンド行にホスト名を指定する必要があるアプリケーションの場合、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、Agent Builder の $hostnames 変数の使用を参照してください。
コマンドは二重引用符 ("") で囲んではなりません。
ベースアプリケーションが複数の独立したプロセスツリーを持ち、各プロセスツリーが PMF の制御下で独自のタグによって起動される場合、単一のコマンドは指定できません。 代わりに、各プロセスツリーを起動するための個々のコマンドを記述したテキストファイルを作成し、そのファイルへのパスを「起動コマンド」テキストフィールドに指定する必要があります。 このファイルが適切に機能するために必要な特性については、複数の独立したプロセスツリーを持つリソースタイプの作成を参照してください。
停止コマンド —ベースアプリケーションを停止するために任意の UNIX シェルに渡すことができる完全なコマンド行。 このフィールドにコマンドを入力するか、「ブラウズ」ボタンを使用して、アプリケーションを停止するコマンドが記述されているファイルを指定します。 コマンド行にホスト名を指定する必要があるアプリケーションの場合、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、Agent Builder の $hostnames 変数の使用を参照してください。
このコマンドは省略可能です。 停止コマンドを指定しない場合、生成されるコードは 、次に示すように、Stop メソッドでシグナルを使用して、アプリケーションを停止します。
Stop メソッドは SIGTERM を送信してアプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 80% だけ待機して、停止しない場合は終了します。
SIGTERM シグナルが失敗した場合、Stop メソッドは SIGKILL を送信して、アプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 15% だけ待機して、停止しない場合は終了します。
SIGKILL シグナルが失敗した場合、Stop メソッドは 失敗します。タイムアウト値の残りの 5% はオーバーヘッドとなります。
停止コマンドは、アプリケーションが完全に停止するまで戻らないことに注意してください。
検証コマンド —定期的に実行され、アプリケーションの状態を検査して、0 (正常) から 100 (致命的な障害) の範囲の終了状態を戻すコマンド。 このコマンドは省略可能です。 このフィールドにコマンドの完全パスを入力するか、「ブラウズ」ボタンを使用して、アプリケーションを検証するコマンドが記述されているファイルを指定します。
通常は、単にベースアプリケーションのクライアントを指定します。 検証コマンドを指定しない場合、生成されるコードは、リソースが使用するポートへの接続と切断を試みます。接続と切断に成功すれば、アプリケーションの状態が正常であると判断します。 検証コマンドを使用できるのはネットワーク対応アプリケーションだけです。 Agent Builder は常に検証コマンドを生成しますが、非ネットワーク対応アプリケーションでは検証コマンドを無効にします。
検証コマンド行にホスト名を指定する必要があるアプリケーションでは、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、Agent Builder の $hostnames 変数の使用を参照してください。
タイムアウト (コマンドごと) —各コマンドのタイムアウト値 (秒単位)。 新しい値を指定するか、Agent Builder が提供するデフォルト値を受け入れます。起動コマンドと停止コマンドのデフォルト値は 300 秒です。検証コマンドのデフォルト値は 30 秒です。
多くのアプリケーション (特に、ネットワーク対応アプリケーション) では、アプリケーションが通信し、顧客の要求に対してサービスを提供するホスト名をコマンド行に指定して、アプリケーションに渡す必要があります。 そのため、多くの場合、ホスト名は、構成画面において、ターゲットリソースタイプの起動、停止、および検証コマンドに指定する必要があるパラメータです。 ただし、アプリケーションが通信するホスト名はクラスタに固有です。つまり、ホスト名は、リソースがクラスタ上で動作するときに決定され、Agent Builder でリソースタイプコードを生成するときに決定することはできません。
この問題を解決するために、Agent Builder は $hostnames 変数を提供します。この変数を使用すると、起動、停止、および検証コマンドのコマンド行にホスト名を指定できます。 $hostnames 変数を指定する方法は、実際のホスト名を指定する方法と同じです。たとえば、次のようになります。
/opt/network_aware/echo_server -p port_no -l $hostnames |
ターゲットリソースタイプのリソースがあるクラスタ上で動作するとき、(リソースの Network_resources_used リソースプロパティで) そのリソースに構成されている LogicalHostname または SharedAddress ホスト名が $hostnames 変数の値に置き換えられます。
Network_resources_usedプロパティに複数のホスト名を構成している場合、すべてのホスト名をコンマで区切って $hostnames 変数に指定します。
Agent Builder は、複数の独立したプロセスツリーを持つアプリケーション用のリソースタイプを作成できます。 プロセスツリーが独立しているということは、PMF が各プロセスツリーを個別に監視および起動することを意味しています。 PMF は独自のタグを使用して各プロセスツリーを起動します。
複数の独立したプロセスツリーを持つリソースタイプを Agent Builder で作成できるのは、生成されるソースコードとして C を指定する場合だけです。Agent Builder を使用して ksh または GDS 用にこれらのリソースタイプを作成することはできません。 ksh または GDS 用にこれらのリソースタイプを作成するには、手動でそれらのコードを作成する必要があります。
複数の独立したプロセスツリーを持つベースアプリケーションの場合、1 つのコマンド行だけでアプリケーションを起動することはできません。 代わりに、アプリケーションの各プロセスツリーを起動するコマンドへの完全パスを行ごとに記述したテキストファイルを作成します。 このファイルには空白行を含めることはできません。 そして、このファイルへのパスを構成画面の「起動コマンド」テキストフィールドに指定します。
このファイルに実行権が設定されていないことを確認する必要があります。これにより、Agent Builder は、このファイルが複数のプロセスツリーを起動するためのものであり、単に複数のコマンドが記述されている実行可能スクリプトではないことを認識できます。 このテキストファイルに実行権を与えた場合、リソースはクラスタ上で問題なく動作するように見えますが、すべてのコマンドが 1 つの PMF タグ下で起動されるため、PMF は各プロセスツリーを個別に監視および再起動することはできません。