この章では、Resource Group Manager (RGM) の管理下で動作するリソースタイプ (データサービス) の作成を自動化するツール、SunPlexTM Agent Builder について説明します。リソースタイプとは、アプリケーションが RGM の制御下にあるクラスタ環境で動作できるようにするアプリケーションのラッパーのことです。
Agent Builder は、アプリケーションや作成したいリソースタイプの種類に関する簡単な情報を入力するための画面ベースのインタフェースを提供します。入力された情報に基づいて、Agent Builder は次のものを生成します。
ソースファイルセット - フェイルオーバーまたはスケーラブルのリソースタイプ用の C 言語コードまたは korn シェル (ksh) スクリプト。リソースタイプのメソッドコールバックに対応しています。
カスタマイズされた Resource Type Registration (RTR) ファイル
リソースタイプのインスタンス (リソース) を起動、停止、および削除するためのカスタマイズされたユーティリティースクリプト。また、これらのファイルをどのように使用するかを説明する、カスタマイズされたマニュアルページ
Solaris パッケージ。バイナリ (C ソースの場合)、RTR ファイル、およびユーティリティースクリプトが含まれます。
Agent Builder はネットワーク対応アプリケーション (ネットワークを使用してクライアントと通信するアプリケーション) とネットワーク非対応 (スタンドアロン) アプリケーションをサポートします。また、Agent Builder を使用すると、複数の独立したプロセスツリーを持つアプリケーション、つまり、Process Monitor Facility (PMF) で個々のプロセスを監視および再起動する必要があるアプリケーション用のリソースタイプも生成できます。詳細については、「複数の独立したプロセスツリーを持つリソースタイプの作成」を参照してください。
この節では、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 「標準プロパティ」 を参照してください。
Agent Builder は、ターゲットリソースタイプ用に生成するすべてのファイルを格納するためのディレクトリ構造を作成します。インストールディレクトリは Create 画面で指定します。開発するリソースタイプごとに異なるインストールディレクトリを指定する必要があります。Agent Builder は、インストールディレクトリの下に、Create 画面で入力されたベンダー名とリソースタイプ名を連結した名前を持つサブディレクトリを作成します。たとえば、SUNW というベンダー名を指定し、ftp というリソースタイプを作成した場合、Agent Builder は SUNWftp というディレクトリをインストールディレクトリの下に作成します。
Agent Builder は、このサブディレクトリの下に、次のようなディレクトリを作成し、各ディレクトリにファイルを配置します。
表 8-1
ディレクトリ名 |
内容 |
---|---|
bin |
C 出力の場合、ソースファイルからコンパイルしたバイナリファイルが格納されます。ksh の場合、src ディレクトリと同じファイルが格納されます。 |
etc |
RTR ファイルが格納されます。Agent Builder はベンダー名とリソースタイプ名をピリオド (.) で区切って連結し、RTR ファイル名を形成します。たとえば、ベンダー名が SUNW で、リソースタイプ名が ftp である場合、RTR ファイル名は SUNW.ftp となります。 |
man |
start、stop、および remove ユーティリティースクリプト用にカスタマイズされたマニュアルページ (man1m) が格納されます。たとえば、startftp(1M)、stopftp(1M)、および removeftp(1M) が格納されます。
これらのマニュアルページを表示するには、 man-M オプションでパスを指定します。たとえば、次のように指定します。 man -M install_directory/SUNWftp/man removeftp. |
pkg |
最終的なパッケージが格納されます。 |
src |
Agent Builder によって生成されたソースファイルが格納されます。 |
util |
Agent Builder によって生成された start、stop、および remove ユーティリティースクリプトが格納されます。詳細については、「ユーティリティースクリプトとマニュアルページ」.を参照してください。Agent Builder は、これらのスクリプト名にリソースタイプ名を追加します。たとえば、startftp、stopftp、および removeftp のようになります。 |
この節では、Agent Builder が生成する出力について説明します。
リソースグループと、最終的にはクラスタ上のリソースを管理する Resource Group Manager (RGM) は、コールバックモデル上で動作します。つまり、特定のイベント (ノードの障害など) が発生したとき、RGM は、当該ノード上で動作しているリソースごとにリソースタイプのメソッドを呼び出します。たとえば、RGM は STOP メソッドを呼び出して、当該ノード上で動作しているリソースを停止します。次に、START メソッドを呼び出して、異なるノード上でリソースを起動します。このモデルの詳細については、「RGM のモデル」、「コールバックメソッド」、および rt_callbacks(1HA) のマニュアルページを参照してください。
このモデルをサポートするために、Agent Builder はコールバックメソッドとして機能する 8 つの実行可能なプログラム (C) またはスクリプト (ksh) を install_directory/rt_name/bin ディレクトリに生成します。
厳密には、障害モニターを実装する rt_name_probe プログラムはコールバックプログラムではありません。RGM は rt_name_probe を直接呼び出すのではなく、rt_name_monitor_start および rt_name_monitor_stop を呼び出します。そして、これらのメソッドが rt_name_probe を呼び出すことによって、障害モニターが起動および停止されます。
Agent Builder が生成する 8 つのメソッドは次のとおりです。
rt_name_monitor_check
rt_name_monitor_start
rt_name_monitor_stop
rt_name_probe
rt_name_svc_start
rt_name_svc_stop
rt_name_update
rt_name_validate
各メソッドに固有な情報については、rt_callbacks(1HA) のマニュアルページを参照してください。
Agent Builder は、install_directory/rt_name/src ディレクトリ (C 出力の場合) に、次のファイルを生成します。
ヘッダーファイル (rt_name.h)
すべてのメソッドに共通なコードが記述されているソースファイル (rt_name.c
共通なコード用のオブジェクトファイル (rt_name.o)
各メソッド用のソースファイル (*.c)
各メソッド用のオブジェクトファイル (*.o)
Agent Builder は rt_name.o ファイルを各メソッドの .o ファイルにリンクして、実行可能ファイルを install_directory/rt_name/bin ディレクトリに作成します。
ksh 出力の場合、install_directory/rt_name/bin と install_directory/rt_name/src ディレクトリは同じです。各ディレクトリには、7 つのコールバックメソッドと PROBE メソッドに対応する 8 つの実行可能スクリプトが格納されます。
ksh 出力には、2 つのコンパイル済みユーティリティープログラム (gettime と gethostnames) が含まれます。これらのプログラムは、時間を取得して検証を行うのに必要なコールバックメソッドです。
ソースコードを編集して、make コマンドを実行すると、コードを再コンパイルできます。さらに、再コンパイル後、make pkgコマンドを実行すると、新しいパッケージを生成できます。ソースコードの修正をサポートするために、Agent Builder はソースコード中の適切な場所に、コードを追加するためのコメント文を埋め込みます。「生成されたソースコードの編集」 を参照してください。
リソースタイプを生成し、そのパッケージをクラスタにインストールした後は、リソースタイプのインスタンス (リソース) をクラスタ上で実行する必要があります。一般に、リソースを実行するには、管理コマンドまたは SunPlex Manager を使用します。Agent Builder は、ターゲットリソースタイプのリソースを起動するためのカスタマイズされたユーティリティースクリプトに加え、リソースを停止および削除するスクリプトも生成します。これら 3 つのスクリプトは install_directory/rt_name/util ディレクトリに格納されており、次のような処理を行います。
起動スクリプト - リソースタイプを登録し、必要なリソースグループとリソースを作成します。また、アプリケーションがネットワーク上のクライアントと通信するためのネットワークアドレスリソース (LocalHostname または SharedAddress) も作成します。
停止スクリプト - リソースを停止し、無効にします。
削除スクリプト - 起動スクリプトの処理を無効にします。つまり、リソース、リソースグループ、およびターゲットリソースタイプを停止して、システムから削除します。
これらのスクリプトは内部的な規則を使用して、リソースとリソースグループの名前付けを行います。そのため、削除スクリプトを使用できるリソースは、対応する起動スクリプトで起動されたリソースだけです。
Agent Builder は、スクリプト名にリソースタイプ名を追加することにより、スクリプトの名前付けを行います。たとえば、リソースタイプ名が ftp の場合、各スクリプトは startftp、stopftp、および removeftp になります。
Agent Builder は、各ユーティリティースクリプト用のマニュアルページを install_directory/rt_name/man/man1m ディレクトリに格納します。これらのマニュアルページにはスクリプトに渡す必要があるパラメータについての説明が記載されているので、各スクリプトを起動する前に、これらのマニュアルページをお読みください。
これらのマニュアルページを表示するには、man コマンドに -M オプションを付けて、上記のマニュアルページが格納されているディレクトリへのパスを指定する必要があります。たとえば、ベンダーが SUNW で、リソースタイプ名が ftp である場合、startftp(1M) のマニュアルページを表示するには、次のコマンドを使用します。
man -M install_directory/SUNWftp/man startftp |
クラスタ管理者は、マニュアルページユーティリティースクリプトも利用できます。Agent Builder が生成したパッケージをクラスタ上にインストールすると、ユーティリティースクリプト用のマニュアルページは、 /opt/rt_name/man ディレクトリに格納されます。たとえば、startftp(1M) のマニュアルページを表示するには、次のコマンドを使用します。
man -M /opt/SUNWftp/man startftp |
Agent Builder はサポートファイル (pkginfo、postinstall、postremove、preremove など) を install_directory/rt_name/etc ディレクトリに格納します。このディレクトリには、Resource Type Registration (RTR) ファイルも格納されます。RTR ファイルは、ターゲットリソースタイプが利用できるリソースとリソースタイププロパティを宣言して、リソースをクラスタに登録するときにプロパティ値を初期化します。詳細については、「リソースとリソースタイププロパティの設定」を参照してください。RTR ファイルの名前は、ベンダー名とリソースタイプ名をピリオドで区切って連結したものです。 (たとえば、SUNW.ftp)。
RTR ファイルは、ソースコードを再コンパイルしなくても、標準のテキストエディタで編集および修正できます。ただし、make pkg コマンドを使用して、パッケージを再構築する必要があります。
install_directory/rt_name/pkg ディレクトリには、Solaris パッケージが格納されます。パッケージの名前は、ベンダー名とリソースタイプ名を連結したものです (たとえば、SUNWftp)。install_directory/rt_name/src ディレクトリ内の Makefile は、新しいパッケージを作成するのに役立ちます。たとえば、ソースファイルを修正し、 コードを再コンパイルした場合、あるいは、パッケージユーティリティースクリプトを修正した場合、make pkg コマンドを使用して新しいパッケージを作成します。
パッケージをクラスタから削除する場合、同時に複数のノードから pkgrm コマンドを実行しようとすると、pkgrm コマンドが失敗する可能性があります。この問題を解決するには、次の 2 つの方法があります。
クラスタの いずれかのノードで removert_name スクリプトを実行してから、任意のノードで pkgrm を実行する。
クラスタの 1 つのノードで pkgrm を実行して、必要なすべてのクリーンナップ処理を行った後、(必要であれば同時に) 残りのノードで pkgrm を実行する。
同時に複数のノードから pkgrm を実行しようとして失敗した場合は、再度いずれかのノードで pkgrm を実行した後、残りのノードで pkgrm を実行します。
Agent Builder は、Create 画面と Configure 画面で入力された情報が格納されている構成ファイル rtconfig をインストールディレクトリに生成します。Agent Builder を既存のリソースタイプのインストールディレクトリから実行した場合、あるいは、「File」メニューの「Load Resource Type」コマンドを使用して、既存のリソースタイプをロードした場合、Agent Builder は rtconfig ファイルを読み取って、Create 画面と Configure 画面を既存のリソースタイプの値で初期化します。これは、既存のリソースタイプのクローンを作成するときに有用です。詳細については、「既存のリソースタイプのクローンの作成」を参照してください。
Agent Builder のナビゲーションは操作が簡単でわかりやすいものです。Agent Builder は 2 段階形式のウィザードであり、各段階 (Create と Configure) に対応した画面を提供します 。各画面では、次のように情報を入力します。
フィールドに情報を入力する。
ディレクトリ構造をブラウズして、ファイルまたはディレクトリを選択する。
相互に排他的なラジオボタンセットの 1 つを選択する (たとえば、「Scalable」または「Failover」)。
オン/オフボックスにチェックマークを入れる。たとえば、「Network Aware」ボックスにチェックマークを入れると、ベースアプリケーションがネットワーク対応であることを指定します、チェックマークを入れなければ、アプリケーションが非ネットワーク対応であることを指定します。
各画面の下にあるボタンを使用すると、作業を完了したり、次の画面に進んだり、以前の画面に戻ったり、Agent Builder を終了したりできます。Agent Builder は、必要に応じて、これらのボタンを強調表示またはグレー表示します。
たとえば、Create 画面において、必要なフィールドに入力し、希望のオプションにチェックマークを付けてから、画面の下にある「Create」ボタンをクリックします。この時点で、以前の画面は存在しないので、「Previous」ボタンはグレー表示されます。また、この作業が完成するまで次の手順には進めないので、「Next」ボタンもグレー表示されます。
Agent Builder は、画面の下にある出力ログ領域に進捗メッセージを表示します。作業が終了したとき、Agent Builder は成功メッセージまたは警告メッセージを出力ログに表示します。このとき、「Next」ボタンが強調表示されます。あるいは、この画面が最後の画面である場合、「Cancel」ボタンだけが強調表示されます。
「Cancel」 ボタンを押すと、いつでも Agent Builder を終了できます。
Agent Builder のフィールドの中には、情報を直接入力することも、「Browse」ボタンをクリックしてディレクトリ構造をブラウズし、ファイルまたはディレクトリを選択することも可能なフィールドがあります。
「Browse」をクリックすると、次のような画面が表示されます。
フォルダをダブルクリックすると、フォルダが開きます。ファイルを強調表示すると、そのファイル名が「File name」ボックスに表示されます。適切なファイルを選択し、強調表示してから、「Select」をクリックします。
ディレクトリをブラウズしている場合は、ディレクトリを強調表示して、「Open」ボタンを選択します。サブディレクトリがない場合、Agent Builder はブラウズウィンドウを閉じて、強調表示されたディレクトリ名を適切なフィールドに表示します。サブディレクトリがある場合、「Close」ボタンをクリックすると、ブラウズウィンドウが閉じて、以前の画面に戻ります。Agent Builder は、強調表示したディレクトリ名を適切なフィールドに表示します。
|
ディレクトリツリーの 1 つ上のレベルに移動します。 |
|
ホームフォルダに戻ります。 |
|
現在選択しているフォルダの下に新しいフォルダを作成します。 |
|
ビューを切り替えます。将来のために予約されています。 |
Agent Builder には、「File」と「Edit」メニューがあります。
「File」メニューでは、次の 2 つのコマンドを使用できます。
Load Resource Type -既存のリソースタイプをロードします。Agent Builder が提供するブラウズ画面を使用して、既存のリソースタイプ用のインストールディレクトリを選択します。Agent Builder を起動したディレクトリにリソースタイプが存在する場合、Agent Builder は自動的にそのリソースタイプをロードします。「Load Resource Type」コマンドを使用すると、任意のディレクトリから Agent Builder を起動した後、既存のリソースタイプを選択して、新しいリソースタイプを作成するためのテンプレートとして使用できます。詳細については、「既存のリソースタイプのクローンの作成」を参照してください。
Exit -Agent Builder を終了します。Create 画面または Configure 画面で「Cancel」をクリックしても、Agent Builder を終了できます。
「Edit」メニューでは、出力ログを消去または保存するコマンドを使用できます。
Clear Output Log - 出力ログから情報を消去します。「Create」または「Configure」を選択するたびに、Agent Builder は状態メッセージを出力ログに追加します。対話形式で繰り返してソースコードを修正し、Agent Builder で出力を生成し直しているときに、出力の生成ごとに状態メッセージを記録したい場合は、出力ログを使用するたびにログファイルの内容を保存および消去できます。
Save Log File -ログの出力をファイルに保存します。Agent Builder が提供するブラウズ画面を使用すると、ディレクトリを選択して、ファイル名を指定できます。