この節では、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 10/03 ソフトウェアのインストール』を参照してください。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)、別のコンパイラへの完全パスを指定します。たとえば、エージェント が生成する Makefile において、CC=cc を CC=pathname/gcc に変更します。この場合、エージェントを直接実行することはできません。代わりに、make や make pkg コマンドを使用して、データサービスコードとパッケージを生成する必要があります。
% /usr/cluster/bin/scdsbuilder |
次の図は、エージェント の初期画面です。
GUI バージョンにアクセスできない場合は、コマンド行インタフェースバージョンの エージェント を使用できます。詳細については、コマンド行バージョンの Agent Builder の使用を参照してください。
Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。
作成 — この画面では、リソースタイプ名、リソースタイプテンプレートを作成および構成する作業ディレクトリなどの基本情報を指定して、生成されたファイル用のリソースタイプを作成します。作成するリソースの種類 (スケーラブルまたはフェイルオーバー) 、ベースアプリケーションがネットワーク対応かどうか (つまり、ネットワークを使用してクライアントと通信するかどうか)、生成するコードのタイプ (C、ksh または GDS) も指定できます。GDS の詳細については、第 10 章「汎用データサービス」を参照してください。この画面に必要な情報をすべて入力し、「作成」を選択すると、対応する出力が生成されます。その後、構成画面に進みます。
構成 — この画面では、アプリケーションを起動するコマンドを提供する必要があります。オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。これらのコマンドを指定しない場合、生成される出力コードは、シグナルを使用してアプリケーションを停止し、デフォルトの検証メカニズムを使用してアプリケーションを検証します。検証コマンドについては、構成画面の使用を参照してください。また、この画面では、上記の各コマンドのタイムアウト値も変更できます。
既存のリソースタイプの作業ディレクトリから起動する場合、Agent Builder は、作成および構成画面を既存のリソースタイプの値に初期化します。
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 は独自のタグを使用して各プロセスツリーを起動します。
複数の独立したプロセスツリーを持つリソースタイプを Agent Builder で作成できるのは、生成されるソースコードとして C を指定する場合だけです。Agent Builder を使用して ksh または GDS 用にこれらのリソースタイプを作成することはできません。ksh または GDS 用にこれらのリソースタイプを作成するには、手動でそれらのコードを作成する必要があります。
複数の独立したプロセスツリーを持つベースアプリケーションの場合、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 の使用方法は次のとおりです。