この節では、Agent Builder の出力について説明します。
この章の内容は次のとおりです。
Resource Group Manager (RGM) は、リソースグループを管理し、最終的にはクラスタ上のリソースを管理します。RGM は、コールバックモデル上で動作します。つまり、特定のイベント (ノードまたはゾーンの障害など) が発生したとき、RGM は、当該ノードまたはゾーン上で動作しているリソースごとにリソースタイプのメソッドを呼び出します。たとえば、RGM は Stop メソッドを呼び出して、当該ノードまたはゾーン上で動作しているリソースを停止します。次に、Stop メソッドを呼び出して、異なるノードまたはゾーン上でリソースを起動します。このモデルの詳細は、「RGM モデル」、「コールバックメソッド」と、rt_callbacks(1HA) のマニュアルページを参照してください。
このモデルをサポートするために Agent Builder は、8 つの実行可能 C プログラムまたは Korn シェルスクリプトを install-directory/rt-name/bin ディレクトリに生成します。これらのプログラムまたはシェルスクリプトは、コールバックメソッドとして機能します。
厳密には、障害モニターを実装する 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 ディレクトリに作成します。
Korn シェル出力の場合、install-directory/ rt-name/bin ディレクトリと install-directory /rt-name/src ディレクトリの内容は同じです。それぞれのディレクトリには、7 つのコールバックメソッドと Probe メソッドに対応する 8 つの実行可能スクリプトが含まれています。
Korn シェル出力には、2 つのコンパイル済みユーティリティープログラム gettime と gethostnames が含まれています。これらのプログラムは、特定のコールバックメソッドが時間の取得や、検証を行う際に必要です。
ソースコードを編集して、make コマンドを実行すると、コードを再コンパイルできます。さらに、再コンパイル後、make pkg コマンドを実行すると、新しいパッケージを生成できます。ソースコードの修正をサポートするために、Agent Builder はソースコード中の適切な場所に、コードを追加するためのコメント文を埋め込みます。「生成されたソースコードの編集」を参照してください。
リソースタイプを生成してそのパッケージをクラスタにインストールしたあとは、クラスタ上で実行されているリソースタイプのインスタンス (リソース) を取得する必要があります。一般に、リソースインスタンスを実行するには、管理コマンドまたは Sun Cluster Manager を使用します。しかし、便宜上 Agent Builder はこの目的のためにカスタマイズされたユーティリティースクリプトに加え、ターゲットリソースタイプのリソースの停止と削除を行うスクリプトも生成します。
これら 3 つのスクリプトは install-directory /rt-name/util ディレクトリに格納されており、次のような処理を行います。
起動スクリプト: リソースタイプを登録し、必要なリソースグループとリソースを作成します。また、アプリケーションがネットワーク上のクライアントと通信するためのネットワークアドレスリソース (LogicalHostname または SharedAddress ) も作成します。
停止スクリプト: リソースを停止します。
削除スクリプト: 起動スクリプトによる作業を取り消します。つまり、このスクリプトは、リソース、リソースグループ、ターゲットリソースタイプを停止し、システムから削除します。
これらのスクリプトは、内部的な規則を使用してリソースとリソースグループの名前付けを行います。このため、削除スクリプトを使用できるリソースは、対応する起動スクリプトで起動されたリソースだけです。
Agent Builder は、スクリプト名にアプリケーション名を追加することにより、スクリプトの名前付けを行います。たとえば、アプリケーション名が ftpの場合、各スクリプトは startftp、stopftp、および 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 は、サポートファイル (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 コマンドを実行しようとすると、コマンドが失敗する可能性があります。
この問題を解決するには、次の 2 つの方法があります。
クラスタの 1 つのノードで remove rt-name スクリプトを実行してから、任意のノードで pkgrm コマンドを実行します。
クラスタの 1 つのノードで pkgrm コマンドを実行して、必要なクリーンアップをすべて行います。続いて、残りのノードで (必要であれば同時に) pkgrm コマンドを実行します。
同時に複数のノードから pkgrm を実行しようとして失敗した場合は、1 つのノードでこのコマンドを実行し、その後残りのノードで実行します。
C または Korn シェルソースコードを作業ディレクトリ内に生成する場合、Agent Builder は構成ファイル rtconfig を生成します。このファイルには、「作成」画面と「構成」画面でユーザーが入力した情報が含まれます。既存のリソースタイプ用の作業ディレクトリから Agent Builder を起動すると、Agent Builder は rtconfig ファイルを読み取り、既存のリソースタイプに指定された情報を「作成」画面と「構成」画面に表示します。また、「ファイル」ドロップダウンメニューから「リソースタイプのロード」を選択して既存のリソースタイプをロードしても、Agent Builder は類似した動作を示します。この機能は、既存のリソースタイプのクローンを作成したい場合に便利です。「Agent Builder で作成したコードの再利用」を参照してください。