Sun Cluster データサービス開発ガイド (Solaris OS 版)

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 のインストールと構成

Agent Builder を個別にインストールする必要はありません。 Agent Builder は、Sun Cluster ソフトウェアの標準インストールでデフォルトでインストールされる SUNWscdev パッケージに含まれています。詳細は、『Sun Cluster ソフトウェアのインストール (Solaris OS 版)』を参照してください。 Agent Builder を使用する前に、次のことを確認してください。


注 –

Agent Builder では、標準の cc コンパイラ以外のコンパイラも使用できます。 このためには、$PATH において、cc から別のコンパイラ (gcc など) にシンボリックリンクを作成します。 もう 1 つの方法は、Makefile におけるコンパイラ指定を変更して (現在は、CC=cc)、別のコンパイラへの完全パスを指定します。 たとえば、エージェント が生成する Makefile において、CC=cc CC=pathname/gcc に変更します。 この場合、エージェントを直接実行することはできません。代わりに、makemake pkg コマンドを使用して、データサービスコードとパッケージを生成する必要があります。


Agent Builder の起動

Agent Builder は次のコマンドで起動します。


% /usr/cluster/bin/scdsbuilder

次の図は、エージェント の初期画面です。

図 9–1 初期画面

「SunPlex Agent Builder」ダイアログ - Agent Builder メイン画面


注 –

GUI バージョンにアクセスできない場合は、コマンド行インタフェースバージョンの エージェント を使用できます。詳細については、コマンド行バージョンの Agent Builder の使用を参照してください。


Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。

  1. 作成 — この画面では、リソースタイプ名、リソースタイプテンプレートを作成および構成する作業ディレクトリなどの基本情報を指定して、生成されたファイル用のリソースタイプを作成します。 作成するリソースの種類 (スケーラブルまたはフェイルオーバー) 、ベースアプリケーションがネットワーク対応かどうか (つまり、ネットワークを使用してクライアントと通信するかどうか)、生成するコードのタイプ (C、ksh または GDS) も指定できます。 GDS の詳細については、第 10 章「汎用データサービス」を参照してください。 この画面に必要な情報をすべて入力し、「作成」を選択すると、対応する出力が生成されます。その後、構成画面に進みます。

  2. 構成 — この画面では、アプリケーションを起動するコマンドを提供する必要があります。 オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。 これらのコマンドを指定しない場合、生成される出力コードは、シグナルを使用してアプリケーションを停止し、デフォルトの検証メカニズムを使用してアプリケーションを検証します。検証コマンドについては、構成画面の使用を参照してください。 また、この画面では、上記の各コマンドのタイムアウト値も変更できます。


注 –

既存のリソースタイプの作業ディレクトリから起動する場合、Agent Builder は、作成および構成画面を既存のリソースタイプの値に初期化します。


Agent Builder の画面上のボタンやメニューの使用方法については、Agent Builder のナビゲーションを参照してください。

作成画面の使用

リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される作成画面に必要な情報を入力します。 すると、次の画面が表示されます。

図 9–2 作成画面

情報を入力した後の作成画面を示すダイアログボックス

作成画面には、次のフィールド、ラジオボタン、およびチェックボックスがあります。


注 –

cc コンパイラが $PATH に存在しない場合、「C」オプションボタンは無効になり、「ksh」ボタンにチェックマークが入ります。 異なるコンパイラを指定する方法については、Agent Builder のインストールと構成の最後にある注を参照してください。


必要な情報を入力した後、「作成」ボタンをクリックします。 画面の一番下にある「出力ログ」には、Agent Builder のインストールと構成 が行なったアクションが表示されます。 「編集」メニューの「出力ログを保存」コマンドを使用すれば、出力ログ内の情報を保存できます。

終了したなら、Agent Builder のインストールと構成 は成功メッセージまたは警告メッセージを表示します。警告メッセージは作成段階が完了しなかったことを示します。その場合は、出力ログの情報から原因を調べます。

Agent Builder が成功メッセージを表示した場合は、「進む」ボタンをクリックして「構成」画面に進むことができます。「構成」画面では、リソースタイプの生成を完結することができます。


注 –

完全なリソースタイプを生成するには、2 段階の作業が必要ですが、最初の段階 (つまり、作成) が完了した後に Agent Builder を終了しても、入力した情報や Agent Builder で作成した内容が失われることはありません。詳細については、完成した作業内容の再利用を参照してください。


構成画面の使用

リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される作成画面に必要な情報を入力します。すると、次の画面が表示されます。 リソースタイプの作成が完了していなければ、構成画面にはアクセスできません。

図 9–3 構成画面

構成画面

構成画面には、次のフィールドがあります。

Agent Builder の $hostnames 変数の使用

多くのアプリケーション (特に、ネットワーク対応アプリケーション) では、アプリケーションが通信し、顧客の要求に対してサービスを提供するホスト名をコマンド行に指定して、アプリケーションに渡す必要があります。 そのため、多くの場合、ホスト名は、構成画面において、ターゲットリソースタイプの起動、停止、および検証コマンドに指定する必要があるパラメータです。 ただし、アプリケーションが通信するホスト名はクラスタに固有です。つまり、ホスト名は、リソースがクラスタ上で動作するときに決定され、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 で作成した既存のリソースタイプのクローンを作成するには、次の手順に従います。

  1. 既存のリソースタイプを Agent Builder にロードします。 これは、次の 2 つの方法で行えます。

    1. (Agent Builder で作成した) 既存のリソースタイプ用の作業ディレクトリ (rtconfig ファイルが格納されているディレクトリ) から Agent Builder を起動します。すると、Agent Builder の作成画面と構成画面に、そのリソースタイプ用の値がロードされます。

    2. 「ファイル」メニューの「リソースタイプをロード」コマンドを使用します。

  2. 作成画面で作業ディレクトリを変更します。

    ディレクトリを選択するときは、「ブラウズ」ボタンを使用する必要があります。つまり、新しいディレクトリ名を入力するだけでは十分ではありません。 ディレクトリを選択したあと、Agent Builder は「作成」ボタンを有効に戻します。

  3. 必要な変更を行います。

    この手順は、リソースタイプ用に生成されたコードのタイプを変更するときに使用できます。 たとえば、最初は ksh バージョンのリソースタイプを作成していたが、あとで C バージョンのリソースタイプが必要になった場合などです。この場合、既存の ksh バージョンのリソースタイプをロードし、出力用の言語を C に変更すると、Agent Builder は C バージョンのリソースタイプを構築します。

  4. リソースタイプのクローンを作成します。

    「作成」を選択して、リソースタイプを作成します。 「進む」を選択して、構成画面に進みます。 「構成」を選択して、リソースタイプを構成します。最後に、「取り消す」を押して、終了します。

生成されたソースコードの編集

リソースタイプを作成するプロセスを簡単にするために、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 の使用

コマンド行バージョンの Agent Builder では、グラフィカルユーザーインタフェースと同様に、2 段階の入力手順が必要です。 ただし、グラフィカルユーザーインタフェースに情報を入力する代わりに、scdscreate(1HA) および scdsconfig(1HA) コマンドにパラメータを渡します。

コマンド行バージョンの Agent Builder の使用方法は次のとおりです。

  1. アプリケーションに高可用性またはスケーラビリティを持たせるため、scdscreate を使って Sun Cluster リソースタイプテンプレートを作成します。

  2. scdsconfig を使って、scdscreate で作成したリソースタイプテンプレートを構成します。

  3. 作業ディレクトリの pkg サブディレクトリに移動します。

  4. pkgadd(1M) コマンドを使って、scdscreate で作成したパッケージをインストールします。

  5. 必要に応じて、生成されたソースコードを編集します。

  6. 起動スクリプトを実行します。