この節では、Agent Builder の使用方法と、Agent Builder を使用する前に行なっておく作業について説明します。また、リソースタイプコードを生成した後で、Agent Builder を活用する方法についても説明します。
Agent Builder を使用する前に、アプリケーションが高可用性またはスケーラビリティを備えるための要件を満たしているかどうかを判定します。この分析はアプリケーションの実行時特性だけに基づくものなので、Agent Builder はこの分析を行うことができません。詳細については、「アプリケーションの適合性の分析」を参照してください。
Agent Builder は必ずしもアプリケーション用の完全なリソースタイプを作成できるわけではありませんが、ほとんどの場合、Agent Builder は、少なくとも部分的なソリューションを提供します。たとえば、より複雑なアプリケーションでは、Agent Builder がデフォルトで生成しないコード、つまり、プロパティの妥当性検査を追加したり、Agent Builder がエクスポーズしないパラメータを調節したりするためのコードを追加しなければならない場合もあります。このような場合、生成されたコードまたは RTR ファイルを修正する必要があります。Agent Builder は、このような柔軟性を提供するように設計されています。
Agent Builder は、ソースファイル内において独自のリソースタイプコードを追加できる場所にコメント文を埋め込みます。ソースコードを修正した後、Agent Builder が生成した Makefile を使用すれば、ソースコードを再コンパイルし、リソースタイプパッケージを生成し直すことができます。
Agent Builder が生成したリソースタイプコードを使用せずに、リソースタイプコードを完全に作成し直す場合でも、Agent Builder が生成した Makefile やディレクトリ構造を使用すれば、独自のリソースタイプ用の Solaris パッケージを作成できます。
Agent Builder を別途インストールする必要はありません。これは、Sun Cluster ソフトウェアの標準インストールの一環としてデフォルトでインストールされる SUNWscdev パッケージに含まれています。詳細については、『Sun Cluster 3.0 12/01 ソフトウェアのインストール』を参照してください。Agent Builder を使用する前に、次のことを確認してください。
Java が $PATH 変数に含まれているかどうか。Agent Builder は Java (Java Development Kit バージョン 1.2.2_05a 以降) に依存するため、Java が $PATH に存在しない場合、scdsbuilder はエラーメッセージを戻します。
Solaris 8 以降の「Developer System Support」ソフトウェアグループがインストールされているかどうか。
Tcc コンパイラが $PATH 変数に含まれているかどうか。Agent Builder は $PATH 変数内で最初に現れる cc を使用して、リソースタイプの C バイナリコードを生成するコンパイラを識別します。cc が $PATH に存在しない場合、Agent Builder は C コードを生成するオプションを無効にします。詳細については、「Create 画面の使用」を参照してください。
Agent Builder では、標準の cc コンパイラ以外のコンパイラも使用できます。このためには、$PATH において、cc から別のコンパイラ (gcc など) にシンボリックリンクを作成します。もう 1 つの方法は、Makefile におけるコンパイラ指定を変更して (現在は、CC=cc)、別のコンパイラへの完全パスを指定します。たとえば、Agent Builder が生成する Makefile において、CC=cc を CC=pathname/gcc に変更します。この場合、Agent Builder を直接実行することはできません。代わりに、make や make pkg コマンドを使用して、データサービスコードとパッケージを生成する必要があります。
Agent Builder を起動するには、scdsbuilder(1HA) コマンド を使用します。
% /usr/cluster/bin/scdsbuilder |
図 8-1 のような、Agent Builder の初期画面が表示されます。
GUI バージョンにアクセスできない場合は、コマンド行インタフェースバージョンの Agent Builder を使用できます。詳細については、「コマンド行バージョンの Agent Builder の使用」を参照してください。
Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。
Create 画面-この画面では、作成するリソースタイプについての基本的な情報を提供します。たとえば、リソースタイプの名前や、生成されるファイル用のインストールディレクトリを入力します。また、作成するリソースの種類 (スケーラブルまたはフェイルオーバー) 、ベースアプリケーションがネットワーク対応かどうか (つまり、ネットワークを使用してクライアントと通信するかどうか)、生成するコードのタイプ (C または ksh) も指定できます。この画面に必要な情報をすべて入力し、「Create」を選択すると、対応する出力が生成されます。この後、Configure 画面に進むことができます。
Configure 画面-この画面では、アプリケーションを起動するコマンドを提供する必要があります。オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。これらのコマンドを指定しない場合、生成される出力コードは、シグナルを使用してアプリケーションを停止し、デフォルトの検証メカニズムを使用してアプリケーションを検証します。検証コマンドについては、「Configure 画面の使用」を参照してください。また、この画面では、上記の各コマンドのタイムアウト値も変更できます。
既存のリソースタイプのインストールディレクトリから Agent Builder を起動する場合、Agent Builder は Create と Configure 画面を既存のリソースタイプの値に初期化します。
Agent Builder の画面上にあるボタンやメニューの使用方法については、「ナビゲーション」を参照してください。
コマンド行バージョンの Agent Builder では、グラフィカルユーザーインタフェースと同様に、2 段階の入力手順が必要です。ただし、GUI に情報を入力するのではなく、2 つのコマンド、scdscreate(1HA) と scdsconfigure(1H) にパラメータを渡します。詳細については、各コマンドのマニュアルページを参照してください。
リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される Create 画面に必要な情報を入力します。図 8-2 に、各フィールドに情報を入力した後の Create 画面を示します。
Create 画面には、次のフィールド、ラジオボタン、およびチェックボックスがあります。
Vendor Name - リソースタイプのベンダーを識別する名前。通常、ベンダーの略号を指定します。ベンダーを一意に識別する名前であれば、どのような名前でも有効です。英数字文字だけを使用します。
Resource Type Name - リソースタイプ名。英数字文字だけを使用します。
ベンダー名とリソースタイプ名の両方で、リソースタイプの完全な名前が形成されます。完全な名前は 9 文字を超えてはなりません。
Install Directory - Agent Builder は、このディレクトリの下に、ターゲットリソースタイプ用のすべてのファイルを格納するディレクトリ構造を作成します。1 つのインストールディレクトリには 1 つのリソースタイプしか作成できません。Agent Builder は、このフィールドを Agent Builder が起動されたディレクトリのパスで初期化します。ただし、別のディレクトリ名を入力したり、「Browse」ボタンを使用して異なるディレクトリを指定することもできます。
Agent Builder は、インストールディレクトリの下にリソースタイプ名を持つサブディレクトリを作成します。たとえば、ベンダー名が SUNW で、リソースタイプ名が ftp である場合、Agent Builder はこのサブディレクトリに SUNWftp という名前を付けます。
Agent Builder は、ターゲットリソースタイプのすべてのディレクトリとファイルをこのサブディレクトリの下に置きます(「ディレクトリ構造」を参照)。
Failover or Scalable - ターゲットリソースタイプがフェイルオーバーまたはスケーラブルのどちらであるかを指定します。
Network Aware - ベースアプリケーションがネットワーク対応かどうかを指定します。つまり、アプリケーションがネットワークを使用してクライアントと通信するかどうかを指定します。ネットワーク対応であれば、チェックボックスにチェックマークを入れます。非ネットワーク対応であれば、チェックボックスをそのままにします。ksh コードの場合、アプリケーションはネットワーク対応でなければなりません。たとえば、「Ksh」ボタンにチェックマークを入れると、Agent Builder は Network Aware チェックボックスにチェックマークを入れ、チェックボックスをグレー表示にします。
C or Ksh - 生成されるソースコードの言語を指定します。このオプションは、どちらか 一方しか指定できません。ただし、Agent Builder を使用すれば、ksh 用に生成されたコードでリソースタイプを作成しておき、その後、同じ情報を再利用して、C 言語のコードを作成できます。詳細については、「既存のリソースタイプのクローンの作成」を参照してください。
cc コンパイラが $PATH に存在しない場合、Agent Builder は「C」オプションボタンをグレー表示し、「Ksh」ボタンにチェックマークを入れます。異なるコンパイラを指定する方法については、「Agent Builder のインストールと構成」の最後にある注を参照してください。
必要な情報を入力した後、「Create」ボタンをクリックします。画面の一番下にある「Output Log」には、Agent Builder が行ったアクションが表示されます。「Edit」メニューの「Save Output Log」コマンドを使用すれば、出力ログ内の情報を保存できます。
終了したら、Agent Builder は成功メッセージまたは警告メッセージを表示します。警告メッセージは Create 段階が完了しなかったことを示します。その場合は、出力ログの情報から原因を調べます。
Agent Builder が成功メッセージを表示した場合、「Next」ボタンをクリックすると、Configure 画面に進むことができます。Configure 画面では、リソースタイプの生成を完結することができます。
完全なリソースタイプを生成するには、2 段階の作業が必要ですが、最初の段階 (つまり、Create) が完了した後に Agent Builder を終了しても、入力した情報や Agent Builder で作成した内容が失われることはありません。詳細については、「完成した作業内容の再利用」を参照してください。
Configure 画面 (図 8-3 を参照) は、Agent Builder の Create 画面でリソースタイプの作成が完了し、「Next」ボタンを押した後に表示されます。リソースタイプの作成が完了していなければ、Configure 画面にはアクセスできません。
Start Command - ベースアプリケーションを起動するために任意の UNIX シェルに渡すことができる完全なコマンド行。このコマンドは必ず指定する必要があります。このフィールドにコマンドを入力するか、「Browse」ボタンを使用して、アプリケーションを起動するコマンドが記述されているファイルを指定します。
完全なコマンド行には、アプリケーションを起動するのに必要なすべての要素が含まれていなければなりません。たとえば、ホスト名、ポート番号、構成ファイルへのパスなどです。コマンド行にホスト名を指定する必要があるアプリケーションの場合、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、「Agent Builder の $hostnames 変数の使用」を参照してください。
コマンドは二重引用符 ("") で囲んではなりません。
ベースアプリケーションが複数の独立したプロセスツリーを持ち、各プロセスツリーが PMF の制御下で独自のタグによって起動される場合、単一のコマンドは指定できません。代わりに、各プロセスツリーを起動するための個々のコマンドを記述したテキストファイルを作成し、そのファイルへのパスを Start Command テキストフィールドに指定する必要があります。このファイルが適切に機能するために必要な特性については、「複数の独立したプロセスツリーを持つリソースタイプの作成」を参照してください。
Stop Command -ベースアプリケーションを停止するために任意の UNIX シェルに渡すことができる完全なコマンド行。このフィールドにコマンドを入力するか、「Browse」ボタンを使用して、アプリケーションを停止するコマンドが記述されているファイルを指定します。コマンド行にホスト名を指定する必要があるアプリケーションの場合、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、「Agent Builder の $hostnames 変数の使用」を参照してください。
このコマンドは省略可能です。停止コマンドを指定しない場合、生成されるコードは 、次に示すように、STOP メソッドでシグナルを使用して、アプリケーションを停止します。
STOP メソッドは SIGTERM を送信してアプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 80% だけ待機して、停止しない場合は終了します。
SIGTERM シグナルが失敗した場合、STOP メソッドは SIGKILL を送信して、アプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 15% だけ待機して、停止しない場合は終了します 。
SIGKILL シグナルが失敗した場合、STOP メソッドは 失敗します(タイムアウト値の残りの 5% はオーバーヘッドとなります)。
停止コマンドは、アプリケーションが完全に停止するまで戻らないことに注意してください。
Probe Command -定期的に実行され、アプリケーションの状態を検査して、0 (正常) から 100 (致命的な障害) の範囲の終了状態を戻すコマンド。このコマンドは省略可能です。このフィールドにコマンドの完全パスを入力するか、「Browse」ボタンを使用して、アプリケーションを検証するコマンドが記述されているファイルを指定します。
通常は、単にベースアプリケーションのクライアントを指定します。検証コマンドを指定しない場合、生成されるコードは、リソースが使用するポートへの接続と切断を試みます。接続と切断に成功すれば、アプリケーションの状態が正常であると判断します。検証コマンドを使用できるのはネットワーク対応アプリケーションだけです。Agent Builder は常に検証コマンドを生成しますが、非ネットワーク対応アプリケーションでは検証コマンドを無効にします。
コマンド行にホスト名を指定する必要があるアプリケーションの場合、Agent Builder が定義する $hostnames 変数を使用できます。詳細については、「Agent Builder の $hostnames 変数の使用」を参照してください。
Timeout (コマンドごと) -各コマンドのタイムアウト値 (秒単位)。新しい値を指定するか、Agent Builder が提供するデフォルト値を受け入れます。起動コマンドと停止コマンドのデフォルト値は 300 秒です。検証コマンドのデフォルト値は 30 秒です。
多くのアプリケーション (特に、ネットワーク対応アプリケーション) では、アプリケーションがリッスンし顧客の要求に対してサービスを提供するホスト名をコマンド行に指定して、アプリケーションに渡す必要があります。そのため、多くの場合、ホスト名は、Configure 画面において、ターゲットリソースタイプの起動、停止、および検証コマンドに指定する必要があるパラメータです。ただし、アプリケーションがリッスンするホスト名はクラスタに固有です。つまり、ホスト名は、リソースがクラスタ上で動作するときに決定され、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 は独自のタグを使用して各プロセスツリーを起動します。
複数の独立したプロセスツリーを持つベースアプリケーションの場合、1 つのコマンド行だけでアプリケーションを起動することはできません。代わりに、アプリケーションの各プロセスツリーを起動するコマンドへの完全パスを行ごとに記述したテキストファイルを作成します。このファイルには空白行を含めることはできません。そして、このファイルへのパスを Configure 画面の Start Command テキストフィールドに指定します。
また、このテキストファイルに実行権が設定されていないことを確認する必要があります。これにより、Agent Builder は、このファイルが複数のプロセスツリーを起動するためのものであり、単に複数のコマンドが記述されている実行可能スクリプトではないことを認識できます。このテキストファイルに実行権を与えた場合、リソースはクラスタ上で動作するように見えますが、すべてのコマンドが 1 つの PMF タグ下で起動されるため、PMF は各プロセスツリーを個別に監視および再起動することはできません。
Agent Builder を使用すると、次に示すように、完成した作業内容を再利用できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成できます。
Agent Builder が生成したソースコードを編集して、そのコードを再コンパイルすれば、新しいパッケージを作成できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成するには、次の手順に従います。
既存のリソースタイプを Agent Builder にロードします。これは、次の 2 つの方法で行えます。
Create 画面でインストールディレクトリを変更します。
ディレクトリを選択するときは、「Browse」ボタンを使用する必要があります。つまり、新しいディレクトリ名を入力するだけでは十分ではありません。ディレクトリを選択した後、Agent Builder は「Create」ボタンを有効に戻します。
必要な変更を行います。
この手順は、リソースタイプ用に生成されたコードのタイプを変更するときに使用できます。たとえば、最初は ksh バージョンのリソースタイプを作成していたが、後で C バージョンのリソースタイプが必要になった場合などです。この場合、既存の ksh バージョンのリソースタイプをロードし、出力用の言語を C に変更すると、Agent Builder は C バージョンのリソースタイプを構築します。
リソースタイプのクローンを作成します。
「Create」を選択して、リソースタイプを作成します。「Next」を選択して、Configure 画面に進みます。「Configure」を選択して、リソースタイプを構成します。最後に、「Cancel」を押して、終了します。
リソースタイプを作成するプロセスを簡単にするために、Agent Builder は入力数を制限しています。必然的に、生成されるリソースタイプの範囲も制限されます。したがって、より複雑な機能、たとえば、追加のプロパティの妥当性を検査したり、Agent Builder がエクスポーズしないパラメータを調整したりする機能を追加するには、生成されたソースコードまたは RTR ファイルを修正する必要があります。
ソースファイルは install_directory/rt_name/src ディレクトリに置かれます。Agent Builder は、ソースコード内においてコードを追加できる場所にコメント文を埋め込みます。このようなコメントの形式は次のとおりです (C コードの場合)。
/* User added code -- BEGIN vvvvvvvvvvvvvvv */ /* User added code -- END ^^^^^^^^^^^^^^^ */ |
これらのコメント文は Ksh コードの場合も同じです。ただし、コメント行の先頭にはシャープ記号 (#) が使用されます。
たとえば、rt_name.h は、異なるプログラムが使用するすべてのユーティリティールーチンを宣言します。宣言リストの最後はコメント文になっており、ここでは自分のコードに追加したいルーチンを宣言できます。
また、install_directory/rt_name/src ディレクトリには、適切なターゲットとともに、Makefile も生成されます。make コマンドを使用すると、ソースコードを再コンパイルできます。また、make pkg コマンドを使用すると、リソースタイプパッケージを生成し直すことができます。
RTR ファイルは install_directory/rt_name/etc ディレクトリに置かれます。RTR ファイルは標準のテキストエディタで編集できます。RTR ファイルの詳細については、「リソースとリソースタイププロパティの設定」を参照してください。プロパティの詳細については、付録 A 「標準プロパティ」 を参照してください。