この章では、Resource Group Manager (RGM) の管理下で動作するリソースタイプ (データサービス) の作成を自動化するツール、SunPlexTM Agent Builder について説明します。リソースタイプとは、アプリケーションが RGM の制御下にあるクラスタ環境で動作できるようにするアプリケーションのラッパーのことです。
Agent Builder は、アプリケーションや作成したいリソースタイプの種類に関する簡単な情報を入力するための画面ベースのインタフェースを提供します。Agent Builder は、入力された情報に基づいて、次のソフトウェアを生成します。
フェイルオーバーリソースタイプまたはスケーラブルリソースタイプのメソッドコールバックに対応する複数のソースファイル。C、Korn シェル (ksh)、汎用データサービス (Generic Data Service: GDS) など。
C シェルまたは Korn シェルのソースを生成する場合は、カスタマイズされたリソースタイプ登録 (Resource Type Registration: RTR) ファイル。
リソースタイプのインスタンス (リソース) を起動、停止、および削除するためのカスタマイズされたユーティリティースクリプト。また、これらのファイルの使用方法を説明するカスタマイズされたマニュアルページ。
C のソースを生成する場合はバイナリを含む Solaris パッケージとユーティリティースクリプト。C または Korn シェルのソースを生成する場合は RTR ファイルを含む Solaris パッケージとユーティリティースクリプト。
Agent Builder は、クライアントとの通信にネットワークを使用するネットワーク対応アプリケーションと、非ネットワーク対応のスタンドアロンアプリケーションをサポートします。Agent Builder を使って、プロセス監視機能 (PMF) によって個別に監視および再起動される複数の独立したプロセスツリーを持つアプリケーション用のリソースタイプを生成できます。複数の独立したプロセスツリーを持つリソースタイプの作成を参照してください。
この節では、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 を個別にインストールする必要はありません。Agent Builder は、Sun Cluster ソフトウェアの標準インストールでデフォルトでインストールされる SUNWscdev パッケージに含まれています。『Sun Cluster 3.1 Software Installation Guide 』を参照してください。Agent Builder を使用する前に、次のことを確認してください。
$PATH 変数に Java が指定されていること。Agent Builder は Java (Java Development Kit バージョン 1.3.1 以上) に依存しています。$PATH 変数に Java が指定されていない場合、scdsbuilder はエラーメッセージを戻します。
Solaris 8 以降の「Developer System Support」ソフトウェアグループがインストールされていること。
$PATH 変数に cc コンパイラが指定されていること。Agent Builder は、$PATH 変数内の最初の cc を、リソースタイプの C バイナリコードを生成するコンパイラとします。cc が $PATH に存在しない場合、Agent Builder は C コードを生成するオプションを無効にします。詳細については、作成画面の使用を参照してください。
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 |
次の図は、Agent Builder の初期画面です。
GUI バージョンにアクセスできない場合は、コマンド行インタフェースバージョンの Agent Builder を使用できます。詳細については、コマンド行バージョンの Agent Builder の使用を参照してください。
Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。
作成 — この画面では、リソースタイプ名、リソースタイプテンプレートを作成および構成する作業ディレクトリなどの基本情報を指定して、生成されたファイル用のリソースタイプを作成します。作成するリソースの種類 (スケーラブルまたはフェイルオーバー) 、ベースアプリケーションがネットワーク対応かどうか (つまり、ネットワークを使用してクライアントと通信するかどうか)、生成するコードのタイプ (C、ksh または GDS) も指定できます。GDS の詳細については、第 10 章「汎用データサービス」を参照してください。この画面に必要な情報をすべて入力し、「作成」を選択すると、対応する出力が生成されます。その後、構成画面に進みます。
構成 — この画面では、アプリケーションを起動するコマンドを提供する必要があります。オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。これらのコマンドを指定しない場合、生成される出力コードは、シグナルを使用してアプリケーションを停止し、デフォルトの検証メカニズムを使用してアプリケーションを検証します。検証コマンドについては、構成画面の使用を参照してください。また、この画面では、上記の各コマンドのタイムアウト値も変更できます。
既存のリソースタイプの作業ディレクトリから起動する場合、Agent Builder は、作成および構成画面を既存のリソースタイプの値に初期化します。
Agent Builder の画面上のボタンやメニューの使用方法については、ナビゲーションを参照してください。
リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される 作成画面に必要な情報を入力します。すると、次の画面が表示されます。
作成画面には、次のフィールド、ラジオボタン、およびチェックボックスがあります。
ベンダー名 — リソースタイプのベンダーを識別する名前。通常、ベンダーの略号を指定します。ベンダーを一意に識別する名前であれば、どのような名前でも有効です。英数字文字だけを使用します。
アプリケーション名 — リソースタイプ名。英数字文字だけを使用します。
ベンダー名とアプリケーション名の両方で、リソースタイプの完全な名前が形成されます。完全な名前は 9 文字を超えてはなりません。
作業用ディレクトリ — Agent Builder は、このディレクトリの下に、ターゲットリソースタイプ用のすべてのファイルを格納するディレクトリ構造を作成します。1 つの作業ディレクトリには 1 つのリソースタイプしか作成できません。Agent Builder は、このフィールドを Agent Builder が起動されたディレクトリのパスで初期化します。ただし、別のディレクトリ名を入力したり、「ブラウズ」ボタンを使用して異なるディレクトリを指定することもできます。
Agent Builder は、作業ディレクトリの下にリソースタイプ名を持つサブディレクトリを作成します。たとえば、ベンダー名が SUNW で、アプリケーション名が ftp である場合、Agent Builder はこのサブディレクトリに SUNWftp という名前を付けます。
Agent Builder は、ターゲットリソースタイプのすべてのディレクトリとファイルをこのサブディレクトリの下に置きます(ディレクトリ構造を参照)。
スケーラブルまたはフェイルオーバー —ターゲットリソースタイプがスケーラブルまたはフェイルオーバーのどちらであるかを指定します。
ネットワーク認識 —ベースアプリケーションがネットワーク対応かどうかを指定します。つまり、アプリケーションがネットワークを使用してクライアントと通信するかどうかを指定します。ネットワーク対応であれば、チェックボックスにチェックマークを入れます。非ネットワーク対応であれば、チェックボックスをそのままにします。Korn シェルコードの場合、アプリケーションはネットワーク対応でなければなりません。したがって、「ksh」または「GDS」チェックボックスにチェックマークを入れた場合、このチェックボックスは自動的に無効になります。
C, ksh—生成されるソースコードの言語を指定します。このオプションは、どちらか 一方しか指定できません。ただし、Agent Builder を使用すれば、ksh 用に生成されたコードでリソースタイプを作成した後、同じ情報を再利用して C 言語のコードを作成できます。詳細については、既存のリソースタイプのクローンの作成 を参照してください。
GDS — このサービスが汎用データサービスであることを示します。汎用データサービスの詳しい作成および構成方法については、第 10 章「汎用データサービス」を参照してください。
cc コンパイラが $PATH に存在しない場合、「C」オプションボタンは無効になり、「ksh」ボタンにチェックマークが入ります。異なるコンパイラを指定する方法については、Agent Builder のインストールと構成の最後にある注を参照してください。
必要な情報を入力した後、「作成」ボタンをクリックします。画面の一番下にある「出力ログ」には、Agent Builder が行なったアクションが表示されます。「編集」メニューの「出力ログを保存」コマンドを使用すれば、出力ログ内の情報を保存できます。
終了したなら、Agent Builder は成功メッセージまたは警告メッセージを表示します。警告メッセージは作成段階が完了しなかったことを示します。その場合は、出力ログの情報から原因を調べます。
Agent Builder が成功メッセージを表示した場合は、「進む」ボタンをクリックして「構成」画面に進むことができます。「構成」画面では、リソースタイプの生成を完結することができます。
完全なリソースタイプを生成するには、2 段階の作業が必要ですが、最初の段階 (つまり、作成) が完了した後に Agent Builder を終了しても、入力した情報や Agent Builder で作成した内容が失われることはありません。詳細については、完成した作業内容の再利用を参照してください。
次の構成画面は、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 は独自のタグを使用して各プロセスツリーを起動します。
複数の独立したプロセスツリーを持つベースアプリケーションの場合、1 つのコマンド行だけでアプリケーションを起動することはできません。代わりに、アプリケーションの各プロセスツリーを起動するコマンドへの完全パスを行ごとに記述したテキストファイルを作成します。このファイルには空白行を含めることはできません。そして、このファイルへのパスを構成画面の「起動コマンド」テキストフィールドに指定します。
また、このテキストファイルに実行権が設定されていないことを確認する必要があります。これにより、Agent Builder は、このファイルが複数のプロセスツリーを起動するためのものであり、単に複数のコマンドが記述されている実行可能スクリプトではないことを認識できます。このテキストファイルに実行権を与えた場合、リソースはクラスタ上で動作するように見えますが、すべてのコマンドが 1 つの PMF タグ下で起動されるため、PMF は各プロセスツリーを個別に監視および再起動することはできません。
Agent Builder を使用すると、次に示すように、完成した作業内容を再利用できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成できます。
Agent Builder が生成したソースコードを編集して、そのコードを再コンパイルすれば、新しいパッケージを作成できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成するには、次の手順に従います。
既存のリソースタイプを Agent Builder にロードします。これは、次の 2 つの方法で行えます。
作成画面で作業ディレクトリを変更します。
ディレクトリを選択するときは、「ブラウズ」ボタンを使用する必要があります。つまり、新しいディレクトリ名を入力するだけでは十分ではありません。ディレクトリを選択した後、Agent Builder は「作成」ボタンを有効に戻します。
必要な変更を行います。
この手順は、リソースタイプ用に生成されたコードのタイプを変更するときに使用できます。たとえば、最初は ksh バージョンのリソースタイプを作成していたが、後で C バージョンのリソースタイプが必要になった場合などです。この場合、既存の ksh バージョンのリソースタイプをロードし、出力用の言語を C に変更すると、Agent Builder は C バージョンのリソースタイプを構築します。
リソースタイプのクローンを作成します。
「作成」を選択して、リソースタイプを作成します。「進む」を選択して、構成画面に進みます。「構成」を選択して、リソースタイプを構成します。最後に、「取り消す」を押して、終了します。
リソースタイプを作成するプロセスを簡単にするために、Agent Builder は入力数を制限しています。必然的に、生成されるリソースタイプの範囲も制限されます。したがって、より複雑な機能、たとえば、追加のプロパティの妥当性を検査したり、Agent Builder がエクスポーズしないパラメータを調整したりする機能を追加するには、生成されたソースコードまたは RTR ファイルを修正する必要があります。
ソースファイルは install_directory/rt_name/src ディレクトリに置かれます。Agent Builder は、ソースコード内においてコードを追加できる場所にコメント文を埋め込みます。このようなコメントの形式は次のとおりです (C コードの場合)。
/* User added code -- BEGIN vvvvvvvvvvvvvvv */ /* User added code -- END ^^^^^^^^^^^^^^^ */ |
これらのコメント文は Korn シェルコードの場合も同じです。ただし、コメント行の先頭にはシャープ記号 (#) が使用されます。
たとえば、rt_name.h は、異なるプログラムが使用するすべてのユーティリティールーチンを宣言します。宣言リストの最後はコメント文になっており、ここでは自分のコードに追加したいルーチンを宣言できます。
install_directory/rt_name/src ディレクトリには、適切なターゲットとともに、Makefile も生成されます。make コマンドを使用すると、ソースコードを再コンパイルできます。また、make pkg コマンドを使用すると、リソースタイプパッケージを生成し直すことができます。
RTR ファイルは install_directory/rt_name/etc ディレクトリに置かれます。RTR ファイルは標準のテキストエディタで編集できます。RTR ファイルの詳細については、リソースとリソースタイププロパティの設定を参照してください。プロパティの詳細については、付録 A 「標準プロパティ」 を参照してください。
コマンド行バージョンの Agent Builder では、グラフィカルユーザーインタフェースと同様に、2 段階の入力手順が必要です。ただし、グラフィカルユーザーインタフェースに情報を入力する代わりに、 scdscreate 1HA および scdsconfig 1HA コマンドにパラメータを渡します。
コマンド行バージョンの Agent Builder の使用方法は次のとおりです。
アプリケーションに高可用性またはスケーラビリティを持たせるため、scdscreate を使って Sun Cluster リソースタイプテンプレートを作成します。
scdsconfigure を使って、scdscreate で作成したリソースタイプテンプレートを構成します。
作業ディレクトリの pkg サブディレクトリに移動します。
pkgadd(1M) コマンドを使って、scdscreate で作成したパッケージをインストールします。
必要に応じて、生成されたソースコードを編集します。
起動スクリプトを実行します。
Agent Builder は、ターゲットリソースタイプ用に生成するすべてのファイルを格納するためのディレクトリ構造を作成します。作業ディレクトリは 作成画面で指定します。開発するリソースタイプごとに異なるインストールディレクトリを指定する必要があります。Agent Builder は、作業ディレクトリの下に、作成画面で入力されたベンダー名とリソースタイプ名を連結した名前を持つサブディレクトリを作成します。たとえば、SUNW というベンダー名を指定し、ftp というリソースタイプを作成した場合、Agent Builder は SUNWftp というディレクトリを作業ディレクトリの下に作成します。
Agent Builder は、このサブディレクトリの下に、次のようなディレクトリを作成し、各ディレクトリにファイルを配置します。
表 9–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 メソッドを呼び出して、当該ノード上で動作しているリソースを停止します。次に、Stop メソッドを呼び出して、異なるノード上でリソースを起動します。このモデルの詳細については、RGM モデル、コールバックメソッド、および rt_callbacks( 1HA) のマニュアルページを参照してください。
このモデルをサポートするため、Agent Builder は、 install_directory/rt_name/bin ディレクトリに、コールバックメソッドとして機能する 8 つの実行可能プログラム (C) またはスクリプト (ksh) を生成します。
厳密には、障害モニターを実装する 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 を実行します。
C または ksh ソースコードを生成する場合、Agent Builder は、作業ディレクトリ内に構成ファイル rtconfig を生成します。このファイルには、作成および構成画面でユーザーが入力した情報が含まれています。既存のリソースタイプの作業ディレクトリから Agent Builder を起動した場合、または、「ファイル」メニューの「リソースタイプをロード」 コマンドを使って既存のリソースタイプをロードした場合、Agent Builder は rtconfig ファイルを読み取り、作成および構成画面に、既存のリソースタイプ用としてユーザーが指定した情報を自動入力します。この機能は、既存のリソースタイプのクローンを作成したい場合に便利です。詳細については、既存のリソースタイプのクローンの作成を参照してください。
Agent Builder のナビゲーションは操作が簡単でわかりやすいものです。Agent Builder は 2 段階形式のウィザードであり、各段階 (作成と構成) に対応した画面を提供します 。各画面では、次のように情報を入力します。
フィールドに情報を入力。
ディレクトリ構造をブラウズして、ファイルまたはディレクトリを選択。
相互に排他的なラジオボタンセットの 1 つを選択 (たとえば、「スケーラブル」または「フェイルオーバー」)。
チェックボックスのオン/オフ。たとえば、「ネットワーク認識」ボックスにチェックマークを入れると、ベースアプリケーションがネットワーク対応であることを指定します。チェックマークを入れなければ、アプリケーションが非ネットワーク対応であることを指定します。
各画面の下にあるボタンを使用すると、作業を完了したり、次の画面に進んだり、以前の画面に戻ったり、Agent Builder を終了したりできます。Agent Builder は、必要に応じて、これらのボタンを強調表示またはグレー表示します。
たとえば、作成画面において、必要なフィールドに入力し、希望のオプションにチェックマークを付けてから、画面の下にある「作成」ボタンをクリックします。この時点で、以前の画面は存在しないので、「戻る」ボタンはグレー表示されます。また、この作業が完成するまで次の手順には進めないので、「進む」ボタンもグレー表示されます。
Agent Builder は、画面の下にある出力ログ領域に進捗メッセージを表示します。作業が終了したとき、Agent Builder は成功メッセージまたは警告メッセージを出力ログに表示します。このとき、「進む」ボタンが強調表示されます。あるいは、この画面が最後の画面である場合、「キャンセル」ボタンだけが強調表示されます。
「キャンセル」 ボタンを押すと、いつでも Agent Builder を終了できます。
Agent Builder のフィールドの中には、情報を直接入力することも、「ブラウズ」ボタンをクリックしてディレクトリ構造をブラウズし、ファイルまたはディレクトリを選択することも可能なフィールドがあります。
「ブラウズ」をクリックします。
表示された画面で、フォルダをダブルクリックすると、フォルダが開きます。ファイルを強調表示すると、そのファイル名が「ファイル名」ボックスに表示されます。適切なファイルを選択し、強調表示してから、「選択」をクリックします。
ディレクトリをブラウズしている場合は、ディレクトリを強調表示して、「開く」ボタンを選択します。サブディレクトリがない場合、Agent Builder はブラウズウィンドウを閉じて、強調表示されたディレクトリ名を適切なフィールドに表示します。サブディレクトリがある場合、「閉じる」ボタンをクリックすると、ブラウズウィンドウが閉じて、以前の画面に戻ります。Agent Builder は、強調表示したディレクトリ名を適切なフィールドに表示します。
|
ディレクトリツリーの 1 つ上のレベルに移動します。 |
|
ホームフォルダに戻ります。 |
|
現在選択しているフォルダの下に新しいフォルダを作成します。 |
|
ビューを切り替えます。将来のために予約されています。 |
Agent Builder には、「ファイル」と「編集」メニューがあります。
「ファイル」メニューでは、次の 2 つのコマンドを使用できます。
リソースタイプをロード —既存のリソースタイプをロードします。Agent Builder が提供するブラウズ画面を使用して、既存のリソースタイプ用の作業ディレクトリを選択します。Agent Builder を起動したディレクトリにリソースタイプが存在する場合、Agent Builder は自動的にそのリソースタイプをロードします。「リソースタイプをロード」コマンドを使用すると、任意のディレクトリから Agent Builder を起動した後、既存のリソースタイプを選択して、新しいリソースタイプを作成するためのテンプレートとして使用できます。詳細については、既存のリソースタイプのクローンの作成を参照してください。
終了 —Agent Builder を終了します。作成画面または構成画面で「取り消す」をクリックしても、Agent Builder を終了できます。
「編集」メニューでは、出力ログを消去または保存するコマンドを使用できます。
出力ログをクリア — 出力ログから情報を消去します。「作成」または「構成」を選択するたびに、Agent Builder は状態メッセージを出力ログに追加します。対話形式で繰り返してソースコードを修正し、Agent Builder で出力を生成し直しているときに、出力の生成ごとに状態メッセージを記録したい場合は、出力ログを使用するたびにログファイルの内容を保存および消去できます。
出力ログを保存 —ログの出力をファイルに保存します。Agent Builder が提供するブラウズ画面を使用すると、ディレクトリを選択して、ファイル名を指定できます。