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

Agent Builder の出力

この節では、Agent Builder の出力について説明します。

この節の内容は、次のとおりです。

ソースファイルとバイナリファイル

リソースグループマネージャー (Resource Group Manager、RGM) は、リソースグループと、最終的にはクラスタ上のリソースを管理します。RGM は、コールバックモデル上で動作します。つまり、特定のイベント (ノードの障害など) が発生したとき、RGM は、当該ノード上で動作しているリソースごとにリソースタイプのメソッドを呼び出します。たとえば、RGM は Stop メソッドを呼び出して、当該ノード上で動作しているリソースを停止します。次に、Start メソッドを呼び出して、別のノード上でリソースを起動します。このモデルについては、「リソースグループマネージャーモデル」「コールバックメソッド」、および rt_callbacks(1HA)のマニュアルページを参照してください。

このモデルをサポートするために Agent Builder は、8 つの実行可能 C プログラムまたは Korn シェルスクリプトを install-directory/rt-name/bin ディレクトリに生成します。これらのプログラムまたはシェルスクリプトは、コールバックメソッドとして機能します。


注 –

厳密には、障害モニターを実装する rt-name_probe プログラムはコールバックプログラムではありません。RGM は、rt-name_probe を直接呼び出すのではなく、rt-name_monitor_startrt-name_monitor_stop を呼び出します。これらのメソッドが rt-name_probe を呼び出すことによって、障害モニターの起動と停止が行われます。


Agent Builder が生成する8 つのメソッドは次のとおりです。

各メソッドに固有な情報については、rt_callbacks(1HA)のマニュアルページを参照してください。

Agent Builder は、install-directory/ rt-name/src ディレクトリ (C 出力の場合) に、次のファイルを生成します。

Agent Builder は、rt-name.o ファイルを各メソッドの .o ファイルにリンクして、実行可能ファイルを install-directory/rt-name/bin ディレクトリに作成します。

Korn シェル出力の場合、install-directory/ rt-name/bin ディレクトリと install-directory /rt-name/src ディレクトリの内容は同じです。それぞれのディレクトリには、7 つのコールバックメソッドと Probe メソッドに対応する 8 つの実行可能スクリプトが含まれています。


注 –

Korn シェル出力には、2 つのコンパイル済みユーティリティープログラム gettimegethostnames が含まれています。これらのプログラムは、特定のコールバックメソッドが時間の取得や、検証を行う際に必要です。


ソースコードを編集して、make コマンドを実行すると、コードを再コンパイルできます。さらに、再コンパイル後、make pkg コマンドを実行すると、新しいパッケージを生成できます。ソースコードの修正をサポートするために、Agent Builder はソースコード中の適切な場所に、コードを追加するためのコメント文を埋め込みます。「生成されたソースコードの編集」を参照してください。

Sun Cluster Agent Builder で作成されるユーティリティースクリプトとマニュアルページ

リソースタイプを生成し、そのパッケージをクラスタにインストールしたあと、リソースタイプのインスタンス (リソース) をクラスタ上で実行する必要があります。一般に、リソースインスタンスを実行するには、管理コマンドまたは Sun Cluster Manager を使用します。しかし、便宜上 Agent Builder はこの目的のためにカスタマイズされたユーティリティースクリプトに加え、ターゲットリソースタイプのリソースの停止と削除を行うスクリプトも生成します。

これら 3 つのスクリプトは install-directory /rt-name/util ディレクトリに格納されており、次のような処理を行います。


注 –

これらのスクリプトは、内部的な規則を使用してリソースとリソースグループの名前付けを行います。このため、削除スクリプトを使用できるリソースは、対応する起動スクリプトで起動されたリソースだけです。


Agent Builder は、スクリプト名にアプリケーション名を追加することにより、スクリプトの名前付けを行います。たとえば、アプリケーション名が ftpの場合、各スクリプトは startftpstopftp、および removeftp になります。

Agent Builder は、各ユーティリティースクリプト用のマニュアルページを install-directory /rt-name/man/man1m ディレクトリに格納します。これらのマニュアルページにはスクリプトに渡す必要がある引数についての説明が記載されているので、各スクリプトを起動する前に、これらのマニュアルページをお読みください。

これらのマニュアルページを表示するには、-M オプションを指定して man コマンドを実行し、この man ディレクトリのパスを指定する必要があります。たとえば、ベンダーが 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 で作成されるサポートファイル

Agent Builder は、サポートファイル (pkginfo postinstallpostremovepreremove など) を install-directory/ rt-name/etc ディレクトリに格納します。このディレクトリには、リソースタイプ登録 (Resource Type Registration、RTR) ファイルも格納されます。RTR ファイルは、ターゲットリソースタイプが利用できるリソースとリソースタイププロパティーを宣言して、リソースをクラスタに登録するときにプロパティー値を初期化します。詳細は、「リソースとリソースタイププロパティーの設定」を参照してください。RTR ファイルの名前は、ベンダー名リソースタイプ名をピリオドで区切って連結したものです (たとえば、SUNW.ftp)。

RTR ファイルは、ソースコードを再コンパイルしなくても、標準のテキストエディタで編集および修正できます。ただし、make pkg コマンドを使用してパッケージを再構築する必要があります。

Agent Builder で作成されるパッケージディレクトリ

install-directory/ rt-name/pkg ディレクトリには、Solaris パッケージが格納されます。パッケージの名前は、ベンダー名とアプリケーション名を連結したものです (たとえば、SUNWftp)。install-directory/rt-name/src ディレクトリ内の Makefile は、新しいパッケージを作成するのに役立ちます。たとえば、ソースファイルを修正し、コードを再コンパイルした場合、あるいは、パッケージユーティリティースクリプトを修正した場合、make pkg コマンドを使用して新しいパッケージを作成します。

パッケージをクラスタから削除する場合、複数のノードから同時に pkgrm コマンドを実行しようとすると、コマンドが失敗する可能性があります。

この問題を解決するには、次の 2 つの方法があります。

同時に複数のノードから pkgrm を実行しようとして失敗した場合は、1 つのノードでこのコマンドを実行し、その後残りのノードで実行します。

rtconfig ファイル

C または Korn シェルソースコードを作業ディレクトリ内に生成する場合、Agent Builder は構成ファイル rtconfig を生成します。このファイルには、「作成」画面と「構成」画面でユーザーが入力した情報が含まれます。既存のリソースタイプ用の作業ディレクトリから Agent Builder を起動すると、Agent Builder は rtconfig ファイルを読み取り、既存のリソースタイプに指定された情報を「作成」画面と「構成」画面に表示します。また、「ファイル」ドロップダウンメニューから「リソースタイプのロード」を選択して既存のリソースタイプをロードしても、Agent Builder は類似した動作を示します。この機能は、既存のリソースタイプのクローンを作成したい場合に便利です。「Agent Builder で作成したコードの再利用」を参照してください。