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 は 2 つのステップ (画面) からなるウィザードです。Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。

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

  2. 構成この画面には完全なコマンド行を指定します。通常は、任意の UNIX® シェルに渡すことによって基本アプリケーションを起動できるものを指定します。オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。これらのコマンドを指定しないと、生成される出力は、信号を送信してアプリケーションを停止し、デフォルトの検証メカニズムを提供します。検証コマンドの説明は、「構成画面の使用」を参照してください。また、この画面では、上記の各コマンドのタイムアウト値も変更できます。

Agent Builder の起動


注 –

グラフィカルユーザーインタフェース版の Agent Builder を使用できない場合は、コマンド行から Agent Builder を使用できます。詳細は、「コマンド行バージョンの Agent Builder を使用する方法」を参照してください。



注 –

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


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


% /usr/cluster/bin/scdsbuilder

「作成」画面が表示されます。

図 9–1 作成画面

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

Agent Builder のナビゲーション

「作成」や「構成」画面の情報は、次のようにして入力します。

各画面の下にあるオプションを使用すると、作業を完了したり、次の画面に進んだり、以前の画面に戻ったり、Agent Builder を終了したりできます。Agent Builder は、状況に応じてこれらのオプションを強調表示したり、グレイ表示したりします。

たとえば、「作成」画面において、必要なフィールドに入力し、希望のオプションにチェックマークを付けてから、画面の下にある「作成」ボタンをクリックします。この時点で、以前の画面は存在しないので、「戻る」ボタンはグレー表示されます。また、この作業が完成するまで次の手順には進めないので、「進む」ボタンもグレー表示されます。

「作成」、「戻る」、「進む」、「キャンセル」コマンドを示す画面下部のパネル

Agent Builder は、画面の下にある出力ログ領域に進捗メッセージを表示します。作業が終了したとき、Agent Builder は成功メッセージまたは警告メッセージを出力ログに表示します。「進む」が強調表示されます。あるいは、これが最後の画面の場合は、「キャンセル」だけが強調表示されます。

「キャンセル」 ボタンを押すと、いつでも Agent Builder を終了できます。

検索

Agent Builder のフィールドの中には、情報を直接入力することも、「ブラウズ」ボタンをクリックしてディレクトリ構造をブラウズし、ファイルまたはディレクトリを選択することも可能なフィールドがあります。

「ブラウズ」コマンド

「ブラウズ」をクリックすると、このような画面が表示されます。

「ブラウズ」画面 - ファイルを一覧表示した状態

フォルダをダブルクリックすると、フォルダが開きます。カーソルをファイルに移動すると、ファイルの名前が「ファイル名」ボックスに表示されます。必要なファイルを見つけ、そこにカーソルを移動したら、「選択」をクリックします。


注 –

ディレクトリをブラウズする場合は、必要なディレクトリにカーソルを移動し、「開く」をクリックします。サブディレクトリがない場合、Agent Builder はブラウズウィンドウを閉じて、カーソルで指示されたディレクトリ名を適切なフィールドに表示します。サブディレクトリがある場合、「閉じる」をクリックすると、ブラウズウィンドウが閉じて、以前の画面に戻ります。Agent Builder は、カーソルで指示されたディレクトリ名を適切なフィールドに表示します。


画面の右上隅にあるアイコンは、次のような処理を行います。

上向き矢印アイコン

 

ディレクトリツリーの 1 つ上のレベルに移動します。 

家のイラスト付きアイコン

 

ホームフォルダに戻ります。 

新しいフォルダのアイコン

 

現在選択しているフォルダの下に新しいフォルダを作成します。 

表示方式を変更するアイコン

 

ビューを切り替えます。将来のために予約されています。 

メニュー

Agent Builder には、「ファイル」と「編集」プルダウンメニューがあります。

「ファイル」メニュー

「ファイル」メニューには、次の 2 つのオプションがあります。

「編集」メニュー

「編集」メニューには、次のオプションがあります。

作成画面の使用

作成画面

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

図 9–2 作成画面

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

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


注 –

cc コンパイラが $PATH に含まれていないと、Agent Builder は「C」ラジオボタンをグレイ表示し、「ksh」ラジオボタンを選択可能にします。異なるコンパイラを指定する方法については、「Agent Builder のインストールと構成」の最後にある注を参照してください。


必要な情報を入力した後、「Create」をクリックします。画面の一番下にある「出力ログ」ウィンドウには、Agent Builder が実行するアクションが表示されます。「編集」メニューの「Save Output Log」を使用すれば、出力ログ内の情報を保存できます。

これが終わると、Agent Builder は、成功メッセージか警告メッセージを表示します。


注 –

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


構成画面の使用

構成画面

Agent Builder がリソースタイプの作成を終了した後に、「作成」画面の「次へ」を選択すると、以下の図に示す「構成」画面が表示されます。リソースタイプの作成が完了していなければ、構成画面にはアクセスできません。

図 9–3 構成画面

構成画面

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

Agent Builder の Korn シェルベース $hostnames 変数の使用

多くのアプリケーション (特にネットワーク対応のアプリケーション) では、アプリケーションが待機するホスト名や、顧客が求めるサービスをコマンド行からアプリケーションに渡す必要があります。多くの場合、ホスト名は、構成画面において、ターゲットリソースタイプの起動、停止、および検証コマンドに指定する必要があるパラメータです。しかし、アプリケーションが待機するホスト名はクラスタ固有のものです。つまり、ホスト名はリソースがクラスタで実行されるときに決められ、Agent Builder がリソースタイプコードを生成する時点に決めることはできません。

この問題を解決するために、Agent Builder は $hostnames 変数を提供します。この変数を使用すると、起動、停止、および検証コマンドのコマンド行にホスト名を指定できます。


注 –

$hostnames 変数は、Korn シェルベースのサービスでのみサポートされます。つまり、C ベースや GDS ベースのサービスではサポートされません。


$hostnames 変数を指定する方法は、実際のホスト名を指定する方法と同じです。たとえば、次のようになります。


% /opt/network_aware/echo_server -p port_no -l $hostnames

ターゲットリソースタイプのリソースがあるクラスタ上で動作するとき、(リソースの Network_resources_used リソースプロパティで) そのリソースに構成されている LogicalHostname または SharedAddress ホスト名が $hostnames 変数の値に置き換えられます。

Network_resources_usedプロパティに複数のホスト名を構成している場合、すべてのホスト名をコンマで区切って $hostnames 変数に指定します。

プロパティ変数

プロパティ変数を使用すれば、 Sun Cluster のリソース、リソースタイプ、リソースグループの一部のプロパティの値を RGM フレームワークから取り出すことができます。Agent Builder は、起動、検証、停止のスクリプトをスキャンし、プロパティ変数があれば、スクリプトを起動する前にこれらの変数を対応する値で置き換えます。


注 –

プロパティ変数は、Korn シェルベースのサービスではサポートされません。


プロパティ変数のリスト

以下のリストは、スクリプトで使用できるプロパティ変数を示しています。Sun Cluster のリソース、リソースタイプ、リソースグループのプロパティについては、付録 A 「標準プロパティ」を参照してください。

以下は、リソースプロパティ変数のリストです。

以下は、リソースタイププロパティ変数のリストです。

以下は、リソースグループプロパティ変数のリストです。

プロパティ変数の構文

プロパティ変数を指定する場合は、プロパティ名の前にパーセント符号 (%) を指定します。次はその例です。


# /opt/network_aware/echo_server -t %RS_STOP_TIMEOUT -n %RG_NODELIST

上の例の場合、Agent Builder はこれらのプロパティ変数を解釈し、たとえば、次の値を使って echo_server スクリプトを起動します。


# /opt/network_aware/echo_server -t 300 -n phys-node-1,phys-node-2,phys-node-3

Agent Builder によるプロパティ変数の置き換え

Agent Builder では、プロパティ変数のタイプは次のように解釈されます。

完成した作業内容の再利用

Agent Builder を使用すると、次に示すように、完成した作業内容を再利用できます。

既存のリソースタイプからクローンを作成する方法

Agent Builder で作成した既存のリソースタイプのクローンを作成するには、次の手順に従います。

  1. 次のどちらかの方法で既存のリソースタイプを Agent Builder にロードします。

    • Agent Builder で作成された既存のリソースタイプの作業ディレクトリ (rtconfig ファイルが含まれている) から Agent Builder を起動します。Agent Builder がこのリソースタイプの値を「作成」や「構成」画面にロードします。

    • 「ファイル」プルダウンメニューの「Load Resource Type」オプションを使用します。

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

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

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

    この手順は、リソースタイプ用に生成されたコードのタイプを変更するときに使用できます。たとえば、最初は Korn シェルバージョンのリソースタイプを作成していたが、後で C バージョンのリソースタイプが必要になった場合などです。この場合、既存の Korn シェルバージョンのリソースタイプをロードし、出力用の言語を 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 シェルソースコードのものと同じですが、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 でも、グラフィカルユーザーインタフェースと同様の基本手順を使用します。ただし、グラフィカルユーザーインタフェースでは情報を入力しましたが、コマンド行インタフェースでは scdscreatescdsconfig コマンドにパラメータを渡します。詳細は、scdscreate(1HA)scdsconfig(scdsconfig) のマニュアルページを参照してください。

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

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

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

    プロパティ変数を指定できます。プロパティ変数については、「プロパティ変数」を参照してください。

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

  4. pkgadd コマンドを実行して、scdscreate で作成したパッケージをインストールします。

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

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