この章では、Sun Cluster Agent Builder と、Agent Builder 用の Cluster Agent モジュールについて説明します。これらのツールは、リソースグループマネージャー (Resource Group Manager、RGM) の制御下で動作するリソースタイプ (データサービス) の作成を自動化するものです。「リソースタイプ」とは、アプリケーションが RGM の制御下にあるクラスタ環境で動作できるようにするアプリケーションのラッパーのことです。
この章の内容は次のとおりです。
Agent Builder は、アプリケーションや作成するリソースタイプの種類に関する情報を入力するためのグラフィカルユーザーインタフェース (GUI) を提供します。Agent Builder は、ネットワーク対応のアプリケーションとネットワーク対応でないアプリケーション (非ネットワーク対応アプリケーション) をサポートします。ネットワーク対応アプリケーションは、ネットワークを使用してクライアントとの通信を行います。非ネットワーク対応アプリケーションは、スタンドアロンのアプリケーションです。
GUI バージョンの Agent Builder にアクセスできない場合は、コマンド行インタフェースを使用して Agent Builder にアクセスできます。「コマンド行バージョンの Agent Builder を使用する方法」を参照してください。
Agent Builder は、指定された情報にもとづき、次のソフトウェアを生成します。
リソースタイプのメソッドコールバックに対応したフェイルオーバータイプまたはスケーラブルリソースタイプ向けの C、Korn シェル (ksh)、または汎用データサービス (GDS) ソースファイル群。これらのファイルは、ネットワーク対応アプリケーション (クライアントサーバーモデル) と非ネットワーク対応 (クライアントレス) アプリケーションの両方に対応します。
C シェルまたは Korn シェルのソースコードを生成する場合は、カスタマイズされたリソースタイプ登録 (Resource Type Registration、RTR) ファイル。
リソースタイプのインスタンス (リソース) を起動、停止、および削除するためのカスタマイズされたユーティリティースクリプト。また、これらの各ファイルの使用方法を説明するカスタマイズされたマニュアルページ。
C のソースコードを生成する場合はバイナリを含む Solaris パッケージとユーティリティースクリプト。C または Korn シェルのソースソースを生成する場合は RTR ファイルを含む Solaris パッケージとユーティリティースクリプト。
Agent Builder を使って、プロセス監視機能 (Process Monitor Facility、PMF) によって個別に監視および再起動される複数の独立したプロセスツリーを持つアプリケーション用のリソースタイプを生成できます。
Agent Builder を使用する場合は、独立した複数のプロセスツリーを持つリソースタイプの作成方法をあらかじめ認識しておく必要があります。
Agent Builder は、複数の独立したプロセスツリーを持つアプリケーション用のリソースタイプを作成できます。これらのプロセスツリーは、RMF によって監視と起動が個別に行われるという意味でそれぞれ独立していると言えます。PMF は、独自のタグを使用して各プロセスツリーを起動します。
Agent Builder を使って、複数の独立したプロセスツリーをもつリソースタイプを作成できますが、そのためには、生成されるソースコードとして C か GDS を指定する必要があります。Agent Builder を使って、このようなリソースタイプを Korn シェル用に作成することはできません。Korn シェル用にこれらのリソースタイプを作成するには、それらのコードを手動で作成する必要があります。
複数の独立したプロセスツリーを持つベースアプリケーションの場合、1 つのコマンド行だけでアプリケーションを起動することはできません。代わりに、アプリケーションの各プロセスツリーを起動するコマンドへの完全パスを行ごとに記述したテキストファイルを作成します。このファイルには空白行を含めることはできません。そして、このファイルへのパスを Agent Builder 構成画面の「起動コマンド」テキストフィールドに指定します。
このファイルに実行権を設定しないことで、Agent Builder はこのファイルを識別できます。このファイルは、複数のコマンドが入ったシンプルな実行可能スクリプトから複数のプロセスツリーを起動するためのものです。このテキストファイルに実行権を設定しても、リソースはクラスタ上で問題なく動作するように見えます。しかし、すべてのコマンドが 1 つの PMF タグ下で起動されるため、PMF はプロセスツリーの監視と再起動を個別に行うことができません。
この節では、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 は、Sun Cluster ソフトウェアのインストール時にデフォルトでインストールされる SUNWscdev パッケージに含まれます。詳細は、『Sun Cluster ソフトウェアのインストール (Solaris OS 版)』を参照してください。
Agent Builder を使用する前に、次の要件を確認してください。
$PATH 変数に Java 実行時環境が含まれているかどうか。Agent Builder は、Java Development Kit (Version 1.3.1) 以降に依存しています。Java Development Kit が $PATH 変数に含まれていないと、Agent Builder コマンド (scdsbuilder) はエラーメッセージを返します。
Solaris 9 OS または Solaris 10 OS の「Developer System Support」ソフトウェアグループがインストールされていること。
cc コンパイラが $PATH 変数に含まれているか。Agent Builder は $PATH 変数で最初に現れる cc を使用して、リソースタイプの C バイナリコードを生成するコンパイラを識別します。cc が $PATH に存在しない場合、Agent Builder は C コードを生成するオプションを無効にします。詳細は、「作成画面の使用」を参照してください。
Agent Builder では、標準の cc コンパイラ以外のコンパイラも使用できます。別のコンパイラを使用するためには、そのコンパイラ (gcc など) に対するシンボリックリンクを cc から$PATH 内に指定します。あるいは、Makefile におけるコンパイラ指定 (現在は CC=cc) を変更し、別のコンパイラへの完全パスを指定することもできます。たとえば、Agent Builder により生成される Makefile の中で、CC=cc を CC=pathname/gcc に変更します。この場合、Agent Builder を直接実行することはできません。代わりに、make や make pkg コマンドを使用して、データサービスコードとパッケージを生成する必要があります。
Agent Builder は 2 つのステップ (画面) からなるウィザードです。
Agent Builder では、次の 2 つの画面を使用して、新しいリソースタイプを作成します。
「作成」画面。この画面では、作成するリソースタイプについての基本情報 (リソースタイプの名前や生成されるファイルの作業用ディレクトリなど) を指定します。作業ディレクトリは、リソースタイプテンプレートの作成や構成に使用する場所です。
次の情報も指定します。
作成するリソースの種類 (スケーラブルまたはフェイルオーバー)
ベースアプリケーションがネットワーク対応かどうか (つまり、そのクライアントとの通信にネットワークを使用するか)
生成するコードのタイプ (C、Korn シェル (ksh)、または GDS)
GDS の詳細は、第 10 章汎用データサービスを参照してください。この画面の情報はすべて指定する必要があります。指定後、「作成」を選択してその出力を生成します。この後「構成」画面を表示できます。
「構成」画面。この画面では、ベースアプリケーションを起動するために任意の UNIX シェルに渡すことができる完全なコマンド行を指定します。オプションとして、アプリケーションを停止するコマンドや検証するコマンドも提供できます。これらの 2 つのコマンドを指定しないと、生成される出力は信号を送信してアプリケーションを停止し、デフォルトの検証メカニズムを提供します。検証コマンドの説明は、「構成画面の使用」を参照してください。「構成」画面では、起動コマンド、停止コマンド、および検証コマンドのタイムアウト値の変更も行えます。
GUI バージョンの Agent Builder にアクセスできない場合は、コマンド行インタフェースを使用して Agent Builder にアクセスできます。「コマンド行バージョンの Agent Builder を使用する方法」を参照してください。
既存のリソースタイプの作業ディレクトリから Agent Builder を起動すると、このツールは「作成」画面と「構成」画面を既存のリソースタイプの値に初期化します。
Agent Builder は次のコマンドを入力して起動します。
% /usr/cluster/bin/scdsbuilder |
「作成」画面が表示されます。
フィールドに情報を入力
ディレクトリ構造をブラウズして、ファイルまたはディレクトリを選択
ラジオボタンの中から1 つだけ選択 (たとえば、「スケーラブル」または「フェイルオーバー」)
「ネットワーク認識」チェックボックスのオン/オフ切り替え。ベースアプリケーションをネットワーク対応と指定する場合はこのボックスを選択状態にし、非ネットワーク対応アプリケーションと指定する場合はこのボックスを空のままにします。
各画面の下にあるボタンを使用すると、作業を完了したり、次の画面に進んだり、以前の画面に戻ったり、Agent Builder を終了したりできます。Agent Builder は、必要に応じてこれらのボタンを強調表示にしたり、グレー表示にしたりします。
たとえば、「作成」画面で必要なフィールドに入力し、希望するオプションを選択してから、画面の下にある「作成」ボタンをクリックします。この時点で、以前の画面は存在しないので、「戻る」ボタンはグレー表示されます。また、この作業が完成するまで次の手順には進めないので、「進む」ボタンもグレー表示されます。
Agent Builder は、画面の下にある「出力ログ」領域に進捗メッセージを表示します。作業が終了したとき、Agent Builder は成功メッセージまたは警告メッセージを表示します。「進む」が強調表示されます。あるいは、これが最後の画面の場合は、「キャンセル」だけが強調表示されます。
「キャンセル」ボタンをクリックすると、任意の時点で Agent Builder を終了できます。
Agent Builder のフィールドには、そのフィールドに情報を入力できるものや、「ブラウズ」をクリックしてディレクトリ構造内をブラウズし、ファイルまたはディレクトリを選択できるものなどがあります。
「ブラウズ」をクリックすると、次のような画面が表示されます。
フォルダをダブルクリックすると、フォルダが開きます。カーソルをファイルに移動させると、「ファイル名」フィールドにファイルの名前が表示されます。必要なファイルを見つけ、そこにカーソルを移動したら、「選択」をクリックします。
ディレクトリをブラウズする場合は、必要なディレクトリにカーソルを移動し、「開く」をクリックします。ディレクトリにサブディレクトリがない場合、Agent Builder はブラウズウィンドウを閉じて、ユーザーがカーソルを移動したディレクトリの名前を適切なフィールドに表示します。サブディレクトリがある場合、「閉じる」をクリックすると、ブラウズウィンドウが閉じて、以前の画面に戻ります。Agent Builder は、ユーザーがカーソルを移動したディレクトリの名前を適切なフィールドに表示します。
「ブラウズ」画面の右上隅にあるアイコンには、次のような処理を行います。
アイコン |
目的 |
---|---|
ディレクトリツリーの 1 つ上のレベルに移動します。 |
|
ホームフォルダに戻ります。 |
|
現在選択しているフォルダの下に新しいフォルダを作成します。 |
|
ビューを切り替えます。将来のために予約されています。 |
Agent Builder には、ドロップダウンメニューとして「ファイル」メニューと「編集」メニューがあります。
「ファイル」メニューでは、次の 2 つのオプションを使用できます。
「リソースタイプをロード」。既存のリソースタイプをロードします。Agent Builder が提供するブラウズ画面を使用して、既存のリソースタイプ用の作業ディレクトリを選択します。Agent Builder を起動したディレクトリにリソースタイプが存在する場合、Agent Builder は自動的にそのリソースタイプをロードします。「リソースタイプをロード」コマンドを使用すると、任意のディレクトリから Agent Builder を起動したあと、既存のリソースタイプを選択して、新しいリソースタイプを作成するためのテンプレートとして使用できます。「Agent Builder で作成したコードの再利用」を参照してください。
「終了」。Agent Builder を終了します。「作成」または「構成」画面で「キャンセル」をクリックして Agent Builder を終了することもできます。
「編集」メニューでは、次の 2 つのオプションを使用できます。
「出力ログをクリア」。出力ログの情報を消去します。「作成」または「構成」を選択するたびに、Agent Builder は状態メッセージを出力ログに追加します。繰り返しソースコードを修正し、Agent Builder で出力を生成し直しているときに、出力の生成ごとに状態メッセージを記録する場合は、出力ログを使用するたびにログファイルの内容を保存および消去できます。
「出力ログを保存」。ログ出力をファイルに保存します。Agent Builder が提供するブラウズ画面を使用すると、ディレクトリを選択して、ファイル名を指定できます。
リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される「作成」画面に必要な情報を入力します。次の図は、フィールドに情報を入力したあとの「作成」画面を示しています。
作成画面には、次のフィールド、ラジオボタン、およびチェックボックスがあります。
「ベンダー名」。リソースタイプのベンダーを識別する名前。通常、ベンダーの株式の略号を指定します。しかし、ベンダーを一意に識別する名前であれば、どのような名前でも有効です。英数字文字だけを使用します。
「アプリケーション名」。リソースタイプの名前。英数字文字だけを使用します。
ベンダー名とアプリケーション名の両方で、リソースタイプの完全な名前が形成されます。Solaris 9 OS 以降では、ベンダー名とアプリケーション名の両方を合わせて 10 文字以上を指定できます。
「RT バージョン」。生成されるリソースタイプのバージョン。同一のベースリソースタイプのバージョン (またはアップグレード) が複数登録されている場合は、「RT バージョン」でそれらを区別します。
「RT バージョン」フィールドで次の文字を使用することはできません。
スペース
タブ
スラッシュ (/)
逆スラッシュ (\)
アスタリスク (*)
疑問符 (?)
コンマ (,)
セミコロン (;)
左角括弧 ([)
右角括弧 (])
「作業ディレクトリ」。Agent Builder は、このディレクトリの中に、ターゲットリソースタイプ用のすべてのファイルを格納するディレクトリ構造を作成します。1 つの作業ディレクトリには 1 つのリソースタイプしか作成できません。Agent Builder は、このフィールドを Agent Builder が起動されたディレクトリのパスで初期化します。ただし、別のディレクトリ名を入力したり、「ブラウズ」を使用して異なるディレクトリを指定することもできます。
Agent Builder は、作業ディレクトリの下にリソースタイプ名を持つサブディレクトリを作成します。たとえば、ベンダー名が SUNW で、アプリケーション名が ftp である場合、Agent Builder はこのサブディレクトリに SUNWftp という名前をつけます。
Agent Builder は、ターゲットリソースタイプのすべてのディレクトリとファイルをこのサブディレクトリの下に置きます。「Agent Builder で作成されるディレクトリ構造」を参照してください。
「スケーラブル」または「フェイルオーバー」。ターゲットのリソースタイプがフェイルオーバーなのかスケーラブルなのかを指定します。
「ネットワーク認識」。ベースアプリケーションがネットワーク対応かどうかを指定します。つまり、アプリケーションがネットワークを使用してクライアントと通信するかどうかを指定します。ネットワーク対応であることを指定する場合は「ネットワーク認識」チェックボックスを選択し、非ネットワーク対応を指定する場合は選択しません。
「C」、「ksh」。生成されるソースコードの言語を指定します。この2 つのオプションを同時に指定することはできませんが、Agent Builder では、Korn シェルで生成されたコードでリソースタイプを作成してから、同じ情報を再使用して、C で生成されたコードを作成することができます。「Agent Builder で作成したコードの再利用」を参照してください。
「GDS」。このサービスが汎用データサービスであることを示します。汎用データサービスの詳しい作成および構成方法については、第 10 章汎用データサービスを参照してください。
cc コンパイラが $PATH 変数に含まれていないと、Agent Builder は「C」ラジオボタンをグレー表示し、「ksh」ラジオボタンを選択可能にします。別のコンパイラを指定する方法については、「Agent Builder のインストールと構成」の最後にある注記を参照してください。
必要な情報を入力したあと、「作成」をクリックします。画面の一番下にある「出力ログ」領域には、Agent Builder が行なったアクションが表示されます。「編集」メニューの「出力ログを保存」を使用すれば、出力ログ内の情報を保存できます。
これが終わると、Agent Builder は、成功メッセージか警告メッセージを表示します。
Agent Builder がこの手順を正常に終了できなかった場合は、出力ログで詳しい情報を調べてください。
Agent Builder が正常に完了した場合は、「進む」をクリックして「構成」画面を表示します。この画面でリソースタイプの生成を完結することができます。
完全なリソースタイプを生成するには 2 段階の作業が必要ですが、最初の段階 (つまり、作成) が完了したあとに Agent Builder を終了しても、指定した情報や Agent Builder で作成した内容が失われることはありません。「Agent Builder で作成したコードの再利用」を参照してください。
リソースタイプを作成する最初の段階では、Agent Builder を起動したときに表示される「作成」画面に必要な情報を入力します。すると、次の画面が表示されます。リソースタイプの作成が完了していなければ、構成画面にはアクセスできません。
構成画面には、次のフィールドがあります。
「起動コマンド」。ベースアプリケーションを起動するために任意の UNIX シェルに渡すことができる完全なコマンド行。これには、起動コマンドを指定する必要があります。このフィールドにコマンドを入力するか、「ブラウズ」ボタンを使用して、アプリケーションを起動するコマンドが記述されているファイルを指定します。
完全なコマンド行には、アプリケーションを起動するのに必要なすべての要素が含まれていなければなりません。たとえば、ホスト名、ポート番号、構成ファイルへのパスなどです。あるいは、プロパティー変数を指定することもできます。この変数については、「プロパティー変数の使用」を参照してください。Korn シェルベースのアプリケーションにコマンド行からホスト名を指定する必要がある場合は、Agent Builder が定義する $hostnames 変数を使用できます。詳細は、「Agent Builder の Korn シェルベース $hostnames 変数の使用」を参照してください。
コマンドは二重引用符 ("") で囲んではなりません。
ベースアプリケーションが複数の独立したプロセスツリーを持ち、各プロセスツリーがプロセス監視機能 (Process Monitor Facility、PMF) の制御下で独自のタグによって起動される場合、単一のコマンドは指定できません。代わりに、各プロセスツリーを起動するための個々のコマンドを記述したテキストファイルを作成し、そのファイルへのパスを「起動コマンド」テキストフィールドに指定する必要があります。「Agent Builder の使用にあたって」を参照してください。この節には、このファイルが適切に機能するために必要な特性が示されています。
「停止コマンド」。ベースアプリケーションを停止するために任意の UNIX シェルに渡すことができる完全なコマンド行。このフィールドにコマンドを入力するか、「ブラウズ」ボタンを使用して、アプリケーションを停止するコマンドが記述されているファイルを指定します。あるいは、プロパティー変数を指定することもできます。この変数については、「プロパティー変数の使用」を参照してください。Korn シェルベースのアプリケーションにコマンド行からホスト名を指定する必要がある場合は、Agent Builder が定義する $hostnames 変数を使用できます。詳細は、「Agent Builder の Korn シェルベース $hostnames 変数の使用」を参照してください。
このコマンドは省略可能です。
停止コマンドを指定しない場合、生成されるコードは、次に示すように、Stop メソッドでシグナルを使用して、アプリケーションを停止します。
Stop メソッドは SIGTERM を送信してアプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 80% だけ待機して、停止しない場合は終了します。
SIGTERM シグナルが失敗した場合、Stop メソッドは SIGKILL を送信して、アプリケーションを停止しようとします。そして、アプリケーション用のタイムアウト値の 15% だけ待機して、停止しない場合は終了します。
SIGKILL が失敗した場合、Stop メソッドは異常終了します。タイムアウト値の残りの 5% はオーバーヘッドとみなされます。
停止コマンドは、アプリケーションが完全に停止するまで戻らないことに注意してください。
「検証コマンド」。定期的に実行され、アプリケーションの状態を検査して、0 (正常) から 100 (致命的な障害) の範囲の終了状態を戻すコマンド。このコマンドは省略可能です。このフィールドにコマンドの完全パスを入力するか、「ブラウズ」を使用して、アプリケーションを検証するコマンドが記述されているファイルを指定します。
通常は、単にベースアプリケーションのクライアントを指定します。検証コマンドを指定しない場合、生成されるコードは、リソースが使用するポートへの接続と切断を試みます。接続と切断に成功すれば、アプリケーションの状態が正常であると判断します。あるいは、プロパティー変数を指定することもできます。この変数については、「プロパティー変数の使用」を参照してください。Korn シェルベースのアプリケーションに検証コマンド行からホスト名を指定する必要がある場合は、Agent Builder が定義する $hostnames 変数を使用できます。詳細は、「Agent Builder の Korn シェルベース $hostnames 変数の使用」を参照してください。
コマンドは二重引用符 ("") で囲んではなりません。
「タイムアウト」。各コマンドのタイムアウト値 (秒数)。新しい値を指定するか、Agent Builder が提供するデフォルト値を受け入れます。起動コマンドと停止コマンドのデフォルト値は 300 秒で、検証コマンドのデフォルト値は 30 秒です。
多くのアプリケーション (特に、ネットワーク対応アプリケーション) では、アプリケーションが通信し、顧客の要求に対してサービスを提供するホスト名をコマンド行に指定して、アプリケーションに渡す必要があります。多くの場合、ホスト名は、構成画面において、ターゲットリソースタイプの起動、停止、および検証コマンドに指定する必要がある引数です。しかし、アプリケーションが待機するホスト名はクラスタ固有のものです。つまり、ホスト名はリソースがクラスタで実行されるときに決められ、Agent Builder がリソースタイプコードを生成する時点で決めることはできません。
この問題を解決するために、Agent Builder は $hostnames 変数を提供します。この変数を使用すると、起動、停止、および検証コマンドのコマンド行にホスト名を指定できます。
$hostnames 変数は、Korn シェルベースのサービスでのみサポートされます。$hostnames 変数は、C ベースや GDS ベースのサービスではサポートされません。
$hostnames 変数を指定する方法は、実際のホスト名を指定する方法と同じです。たとえば、次のようになります。
% /opt/network_aware/echo_server -p port-no -l $hostnames |
ターゲットリソースタイプのリソースがあるクラスタ上で動作するとき、そのリソースに構成されている LogicalHostname または SharedAddress ホスト名が $hostnames 変数の値に置き換えられます。リソースのホスト名は、Network_resources_used リソースのリソースプロパティーで構成されます。
Network_resources_used プロパティーに複数のホスト名を構成している場合、すべてのホスト名をコンマで区切って $hostnames 変数に指定します。
プロパティー変数を使用すれば、Sun Cluster のリソースタイプ、リソース、リソースグループの一部のプロパティーの値を RGM フレームワークから取り出すことができます。Agent Builder は起動、検証、停止のコマンド文字列をスキャンしてプロパティー変数がないかをチェックし、プロパティー変数があればコマンドを実行する前にそれらの変数を対応する値に置き換えます。
プロパティー変数は、Korn シェルベースのサービスではサポートされません。
この節では、使用できるプロパティー変数を示します。Sun Cluster のリソースタイプ、リソース、リソースグループのプロパティーについては、付録 A 標準プロパティーを参照してください。
RS_CHEAP_PROBE_INTERVAL
RS_MONITOR_START_TIMEOUT
RS_MONITOR_STOP_TIMEOUT
RS_NAME
RS_NUM_RESTARTS
RS_RESOURCE_DEPENDENCIES
RS_RESOURCE_DEPENDENCIES_WEAK
RS_RETRY_COUNT
RS_RETRY_INTERVAL
RS_SCALABLE
RS_START_TIMEOUT
RS_STOP_TIMEOUT
RS_THOROUGH_PROBE_INTERVAL
SCHA_STATUS
RG_GLOBAL_RESOURCES_USED
RG_IMPLICIT_NETWORK_DEPENDENCIES
RG_MAXIMUM_PRIMARIES
RG_NAME
RG_NODELIST
RG_NUM_RESTARTS
RG_PATHPREFIX
RG_PINGPONG_INTERVAL
RG_RESOURCE_LIST
プロパティー変数を指定する場合は、プロパティー名の前にパーセント符号 (%) を指定します。次はその例です。
/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 では、プロパティー変数のタイプは次のように解釈されます。
整数は、その実際の値 (たとえば 300) で置き換えられます。
ブール値は、文字列 TRUE か FALSE で置き換えられます。
文字列は、実際の文字列 (たとえば phys-node-1) で置き換えられます。
文字列リストの場合は、リストが、コンマで区切られた実際の値で置き換えられます (たとえば、phys-node-1,phys-node-2,phys-node-3)。
整数リストの場合は、リスト内のすべてのメンバーで置き換えられます。この場合、各整数は 1,2,3 のように区切られます。
列挙タイプは、その値 (文字列形式) で置き換えられます。
Agent Builder を使用すると、次のような方法で、完成した作業内容を再利用できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成できます。
Agent Builder が生成したソースコードを編集して、そのコードを再コンパイルすれば、新しいパッケージを作成できます。
Agent Builder で作成した既存のリソースタイプのクローンを作成するには、次の手順に従います。
既存のリソースタイプを Agent Builder にロードします。
次のいずれかの方法を使用します。
Agent Builder で作成された既存のリソースタイプの作業ディレクトリから Agent Builder を起動します。作業ディレクトリに rtconfig ファイルが含まれているか確認します。Agent Builder がこのリソースタイプの値を「作成」や「構成」画面にロードします。
「ファイル」ドロップダウンメニューの「リソースタイプをロード」オプションを使用します。
作成画面で作業ディレクトリを変更します。
「ブラウズ」を使ってディレクトリを選択する必要があります。新しいディレクトリ名を入力するだけでは不十分です。ディレクトリを選択したあと、Agent Builder は「作成」ボタンを有効に戻します。
必要に応じて既存のリソースタイプに変更を加えます。
リソースタイプ用に生成されたコードのタイプを変更できます。
たとえば、初めに Korn シェルバージョンのリソースタイプを作成し、あとで C バージョンのリソースタイプが必要になった場合には、次の手順で対応できます。
既存の Korn シェルリソースタイプをロードする
出力用の言語を C に変更する
「作成」をクリックしてリソースタイプの C バージョンを構築する
リソースタイプのクローンを作成します。
リソースタイプを作成するプロセスを簡単にするために、Agent Builder は入力できる情報量を制限しています。必然的に、生成されるリソースタイプの範囲も制限されます。したがって、より複雑な機能を追加するには、生成されたソースコードまたは RTR ファイルを修正する必要があります。付加的な機能の例としては、プロパティーの妥当性検査を追加するコードや、Agent Builder がエクスポーズしないパラメータを調節するコードなどが挙げられます。
ソースファイルは、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 でも、GUI と同様の基本手順を使用します。ただし、GUI では情報を入力しましたが、コマンド行インタフェースでは scdscreate や scdsconfig コマンドに引数を渡します。詳細は、scdscreate(1HA) と scdsconfig(1HA)のマニュアルページを参照してください。
コマンド行バージョンの Agent Builder の使用方法は次のとおりです。
アプリケーションに高可用性またはスケーラビリティーを持たせるため、scdscreate を使って Sun Cluster リソースタイプテンプレートを作成します。
scdsconfig を使って、scdscreate で作成したリソースタイプテンプレートを構成します。
プロパティー変数を指定できます。プロパティー変数については、「プロパティー変数の使用」を参照してください。
作業ディレクトリの pkg サブディレクトリに移動します。
pkgadd コマンドを実行して、scdscreate で作成したパッケージをインストールします。
# pkgadd -d . package-name |
(省略可能) 生成されたソースコードを編集します。
起動スクリプトを実行します。
Agent Builder は、ターゲットリソースタイプ用に生成するすべてのファイルを格納するためのディレクトリ構造を作成します。「作成」画面で作業ディレクトリを指定します。開発するリソースタイプごとに異なるインストールディレクトリを指定する必要があります。Agent Builder は、作業ディレクトリの下に、ベンダー名とリソースタイプ名を連結した名前を持つサブディレクトリを作成します。たとえば、SUNW というベンダー名を指定し、ftp というリソースタイプを作成した場合、Agent Builder は SUNWftp というディレクトリを作業ディレクトリの下に作成します。
Agent Builder は、このサブディレクトリの下に、次のようなディレクトリを作成し、各ディレクトリにファイルを配置します。
ディレクトリ名 |
内容 |
|
---|---|---|
bin |
C 出力の場合、ソースファイルからコンパイルしたバイナリファイルが格納されます。Korn シェル出力の場合、src ディレクトリと同じファイルが格納されます。 |
|
etc |
RTR ファイルが格納されます。Agent Builder は、ベンダー名とアプリケーション名をピリオド区切り (.) で結合して RTR ファイル名を作成します。たとえば、ベンダー名が SUNW で、リソースタイプ名が ftp である場合、RTR ファイル名は SUNW.ftp となります。 |
|
man |
start、stop、および remove ユーティリティースクリプト用にカスタマイズされたマニュアルページが格納されます。たとえば、startftp(1M)、stopftp(1M)、および removeftp(1M) が格納されます。
これらのマニュアルページを見るには、man -M オプションでこのパスを指定します。たとえば、次のように使用します。
|
|
pkg |
作成されたデータサービスが含まれる最終的な Solaris パッケージが格納されます。 |
|
src |
Agent Builder によって生成されたソースファイルが格納されます。 |
|
util |
Agent Builder によって生成された start、stop、および remove ユーティリティースクリプトが格納されます。「Sun Cluster Agent Builder で作成されるユーティリティースクリプトとマニュアルページ」を参照してください。Agent Builder は、これらのスクリプト名にアプリケーション名を追加します。たとえば、startftp、stopftp、および removeftp のようになります。 |
この節では、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_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 で作成したコードの再利用」を参照してください。
Agent Builder の Cluster Agent モジュールは、NetBeansTM モジュールです。このモジュールを使用することで、Sun Java Studio 製品で Sun Cluster ソフトウェアのリソースタイプを作成することができます。
Sun Java Studio 製品の設定、インストール、使用の詳細は、Sun Java Studio マニュアルに記載されています。このマニュアルは、http://wwws.sun.com/software/sundev/jde/documentation/index.html の Web サイトで参照できます。
Cluster Agent モジュールは、Sun Cluster ソフトウェアのインストール時にインストールされます。Sun Cluster のインストールツールは、Cluster Agent モジュールファイルを /usr/cluster/lib/scdsbuilder の scdsbuilder.jar に配置します。Sun Java Studio ソフトウェアで Cluster Agent モジュールを使用するには、このファイルに対してシンボリックリンクを作成する必要があります。
Cluster Agent モジュールを実行する予定のシステムには、Sun Cluster 製品、Sun Java Studio 製品、および Java 1.4 がすでにインストールされ、使用可能な状況でなければなりません。
ユーザー全員が Cluster Agent モジュールを使用できるようにするか、あるいは自分だけが使用できるようにします。
ユーザー全員が使用できるようにするには、スーパーユーザーになるか、RBAC 承認 solaris.cluster.modify を提供する役割を使用し、シンボリックリンクをグローバルモジュールディレクトリに作成します。
# cd /opt/s1studio/ee/modules # ln -s /usr/cluster/lib/scdsbuilder/scdsbuilder.jar |
Sun Java Studio ソフトウェアを /opt/s1studio/ee 以外のディレクトリにすでにインストールしてある場合は、このディレクトリパスを、使用したパスに読み替えてください。
自分だけが使用できるようにするには、自分の modules サブディレクトリにシンボリックリンクを作成します。
% cd ~your-home-dir/ffjuser40ee/modules % ln -s /usr/cluster/lib/scdsbuilder/scdsbuilder.jar |
Sun Java Studio ソフトウェアを停止し、再起動します。
次に、Sun Java Studio ソフトウェアから Cluster Agent モジュールを起動する手順を示します。
Sun Java Studio 製品の設定、インストール、使用の詳細は、Sun Java Studio マニュアルに記載されています。このマニュアルは、http://wwws.sun.com/software/sundev/jde/documentation/index.html の Web サイトで参照できます。
Sun Java Studio の「ファイル」メニューから「新規」を選択するか、あるいはツールバーの「新規」アイコンをクリックします。
「新規ウィザード」画面が表示されます。
「テンプレートを選択」区画で、必要に応じて下方向へスクロールし、「その他」フォルダの横に表示されている鍵マークをクリックします。
「その他」フォルダが開きます。
「その他」フォルダから Sun Cluster Agent Builder を選択し、「次へ」をクリックします。
Sun Java Studio 起動のための Cluster Agent モジュール最初の「新規ウィザード - Sun Cluster Agent Builder」画面が表示されます。
Cluster Agent モジュールは、Agent Builder ソフトウェアと同様に使用できます。インタフェースは英語版の Agent Builder ソフトウェアと全く同じです。たとえば次の図では、英語版 Agent Builder ソフトウェアの「Create」画面と Cluster Agent モジュールの最初の「新規ウィザード - Sun Cluster Agent Builder」画面には同じフィールドと選択肢が存在することがわかります。
Cluster Agent モジュールと Agent Builder は似ていますが、小さな違いがいくつかあります。
Cluster Agent モジュールでは、2 つ目の「新規ウィザード - Sun Cluster Agent Builder」画面で「完了」をクリックした時点でリソースタイプの作成と構成が完了します。最初の「新規ウィザード - Sun Cluster Agent Builder」画面で「次へ」をクリックした時点ではリソースタイプは作成されません。
Agent Builder では、「作成」画面で「作成」をクリックした時点でリソースタイプがただちに作成されます。また、「構成」画面で「構成」をクリックした時点でリソースタイプがただちに構成されます。
英語版 Agent Builder の「Output Log」領域に表示される情報は、Sun Java Studio 製品では別のウィンドウで表示されます。