原典情報: $ORACLE_HOME\crs\demo\readme.txt
目次
Oracle Clusterwareは複数のサーバーを一緒に操作できるソフトウェアで、単一のサーバーのように操作できます。Oracle Clusterwareを使用すると、Oracleデータベースやカスタム・アプリケーションで高可用性とスケーラビリティを実現できます。Oracle Clusterwareで管理される対象は「リソース」と呼ばれます。リソースには、データベース、サービス、リスナー、アプリケーション・プロセスなどがあります。Oracle Clusterwareのポリシー・エンジンは、エージェントと呼ばれるプロセスを介してリソースを管理します。さらに、エージェントは、アプリケーション固有のユーザー・コードを使用してアプリケーションやリソースを管理します。Oracle Clusterwareには特別な共有ライブラリ(libagfw)が含まれています。この共有ライブラリにより、ユーザーは適切に定義されたインタフェースを使用してアプリケーション固有のアクションをプラグインできます。次の各項では、Oracle Clusterwareのエージェント・フレームワーク・インタフェースを使用してエージェントを作成する方法について説明します。
アクション・エントリ・ポイントとは、リソースに対するアクション(リソースの起動、リソースの停止など)が実行されるたびに実行する必要があるユーザー定義コードです。リソース・タイプごとに、次のアクションに対してアクション・エントリ・ポイントを定義する必要があります。
start : リソースを起動するアクション stop : リソースを正常に停止するアクション check : リソースの状態をチェックするアクション clean : リソースを強制終了するアクション
これらのアクション・エントリ・ポイントは、C++コードを使用するか、またはスクリプトに定義できます。これらのアクションが明示的に定義されていない場合は、デフォルトで、スクリプトに定義されていると想定されます。このスクリプトの場所は、リソース・タイプのACTION_SCRIPT属性で指定されます。さらに、一部のアクション・エントリ・ポイントはスクリプトを使用して定義し、残りのアクション・エントリ・ポイントはC++を使用して定義した、混合エージェントを作成できます。前述のアクション以外のアクション(属性値の変更など)に対してもアクション・エントリ・ポイントを定義できますが、必須ではありません。
ここでは、Clusterwareで管理するリソースがファイルである場合について説明します。このリソースを管理するエージェントには、次のタスクがあります。
起動時: ファイルを作成します。
停止時: ファイルを正常に削除します。
checkコマンド実行時: ファイルが存在するかどうかを検出します。
cleanコマンド実行時: ファイルを強制的に削除します。
この特定のリソースをOracle Clusterwareに記述するには、最初に、このリソース・クラスの特性を示す属性がすべて含まれた専用のリソース・タイプを作成します。このサンプルでは、記述する特定の属性は監視対象のファイル名のみです。この操作は、crsctlコマンドを使用して実行できます。リソース・タイプを定義するとき、ACTION_SCRIPT属性およびAGENT_FILENAME属性も指定できます。これらの属性を使用して、シェル・スクリプト、およびエージェントのアクション・エントリ・ポイントを含む実行可能ファイルを参照します。
リソース・タイプを定義した後は、必要なタスクを実行する専用のエージェントを記述します。エージェントは、スクリプト、C/C++プログラム、または混合エージェントとして記述できます。次の各項では、各エージョントのサンプルを説明します。
ファイルdemoActionScriptは、必須のすべてのアクション・エントリ・ポイントがすでに含まれているシェル・スクリプトで、ファイル・リソースのエージェントとして動作できます。このスクリプトをテストするには、次の手順を実行する必要があります。
Clusterwareインストールを起動します。
次に示すように、crsctlユーティリティを使用して新規のリソース・タイプを追加します。
crsctl add type test_type1 -basetype cluster_resource \
-attr "ATTRIBUTE=PATH_NAME,TYPE=string,DEFAULT_VALUE=default.txt" \
-attr "ATTRIBUTE=ACTION_SCRIPT,TYPE=string,DEFAULT_VALUE=/path/to/demoActionScript"
ファイルのパスは適切に変更してください。これにより、新規のリソース・タイプがClusterwareに追加されます。または、属性をテキスト・ファイルに追加して、そのテキスト・ファイルをパラメータとしてcrsctlユーティリティに渡すこともできます。この方法の詳細は、ドキュメントを参照してください。
crsctlユーティリティを使用して新規のリソースをクラスタに追加します。この操作を行うためのコマンドは次のとおりです。
crsctl add resource r1 -type test_type1 -attr "PATH_NAME=/tmp/r1.txt"
crsctl add resource r2 -type test_type1 -attr "PATH_NAME=/tmp/r2.txt"
必要に応じて、リソースのPATH_NAME属性を変更してください。これにより、Clusterwareで監視するr1とr2という名前のリソースが追加されます。ここで、追加するリソースに応じてPATH_NAME属性のデフォルト値を上書きします。
crsctlユーティリティを使用してリソースを起動または停止します。この操作を行うためのコマンドは次のとおりです。
crsctl start res r1
crsctl start res r2
crsctl check res r1
crsctl stop res r2
etc...
ファイル/tmp/r1.txtと/tmp/r2.txtは、リソースr1とr2が起動すると作成され、停止すると削除されます。
demoagent1.cppは、前述のシェル・スクリプトと同様の機能を持つサンプルのC++プログラムです。このプログラムも、ローカル・マシン上にある指定ファイルを監視します。このプログラムをテストするには、次の手順を実行する必要があります。
提供されているソース・ファイルdemoagent1.cppおよびMakeファイルを使用して、C++エージェントをコンパイルします。
Makeファイルは、ローカル・コンパイラ/リンカーのパスおよびインストール場所に基づいて変更する必要があります。出力は、demoagent1という名前の実行可能ファイルです。
Clusterwareインストールを起動します。
次に示すように、crsctlユーティリティを使用して新規のリソース・タイプを追加します。
crsctl add type test_type1 -basetype cluster_resource \
-attr "ATTRIBUTE=PATH_NAME,TYPE=string,DEFAULT_VALUE=default.txt" \
-attr "ATTRIBUTE=AGENT_FILENAME,TYPE=string,DEFAULT_VALUE=/path/to/demoagent1"
ファイルのパスは適切に変更してください。これにより、新規のリソース・タイプがClusterwareに追加されます。
前の手順で定義したリソース・タイプに基づいて、新規のリソースを作成します。コマンドは次のとおりです。
crsctl add res r3 -type test_type1 -attr "PATH_NAME=/tmp/r3.txt"
crsctl add res r4 -type test_type1 -attr "PATH_NAME=/tmp/r4.txt"
これにより、Clusterwareで監視するr3とr4という名前のリソースが追加されます。
crsctlユーティリティを使用してリソースを起動または停止します。この操作を行うためのコマンドは次のとおりです。
crsctl start res r3
crsctl start res r4
crsctl check res r3
crsctl stop res r4
etc...
ファイル/tmp/r3.txtと/tmp/r4.txtは、リソースが起動すると作成され、停止すると削除されます。
demoagent2.cppは、前述のシェル・スクリプトと同様の機能を持つサンプルのC++プログラムです。このプログラムも、ローカル・マシン上にある指定ファイルを監視します。ただし、このプログラムで定義するのはCHECKアクション・エントリ・ポイントのみです。他のすべてのアクション・エントリ・ポイントは未定義のままで、ACTION_SCRIPT属性から読み取られます。このプログラムをテストするには、次の手順を実行する必要があります。
提供されているソース・ファイルdemoagent2.cppおよびMakeファイルを使用して、C++エージェントをコンパイルします。Makeファイルは、ローカル・コンパイラ/リンカーのパスおよびインストール場所に基づいて変更する必要があります。出力は、demoagent1という名前の実行可能ファイルです。
Clusterwareインストールを起動します。
次に示すように、crsctlユーティリティを使用して新規のリソース・タイプを追加します。
crsctl add type test_type1 -basetype cluster_resource \
-attr "ATTRIBUTE=PATH_NAME,TYPE=string,DEFAULT_VALUE=default.txt" \
-attr "ATTRIBUTE=AGENT_FILENAME,TYPE=string,DEFAULT_VALUE=/path/to/demoagent2" \
--attr "ATTRIBUTE=ACTION_SCRIPT,TYPE=string,DEFAULT_VALUE=/path/to/demoActionScript"
ファイルのパスは適切に変更してください。これにより、新規のリソース・タイプがClusterwareに追加されます。
前の手順で定義したリソース・タイプに基づいて、新規のリソースを作成します。コマンドは次のとおりです。
crsctl add res r5 -type test_type1 -attr "PATH_NAME=/tmp/r5.txt"
crsctl add res r6 -type test_type1 -attr "PATH_NAME=/tmp/r6.txt"
これにより、Clusterwareで監視するr5とr6という名前のリソースが追加されます。
crsctlユーティリティを使用してリソースを起動または停止します。この操作を行うためのコマンドは次のとおりです。
crsctl start res r5
crsctl start res r6
crsctl check res r5
crsctl stop res r6
etc...
ファイル/tmp/r5.txtと/tmp/r6.txtは、リソースが起動すると作成され、停止すると削除されます。
CRSエージェント・フレームワークには、リソースに対してテスト・スイートを自動的に実行するための一連の事前定義マクロが用意されています。このテストは、Clusterwareインストールに依存せずに実行できます。マクロは、ヘッダー・ファイルclsagfwm.hから公開されています。マクロを使用して、新しいタイプの追加、属性の追加、リソースの起動や停止などを実行できます。これらの使用例はファイルmacrodemo.cppで提供されています。このプログラムの基本機能は、demoagentプログラムとよく似ています。このプログラムは、前述したようにコンパイルしてテストできます。さらに、追加したリソースに対していくつかのユニット・テストを実行するための追加機能も含まれています。この機能を表示するには、-t <testname>スイッチ(たとえば、./macrodemo -t dummy)を使用してプログラムを手動で実行してください。このスイッチにより、プログラムに定義されているテスト・スイートが実行され、属性の追加、リソースの起動や停止などを自動的に実行できます。
Oracle Clusterwareおよび関連のテクノロジの詳細は、次のリソースを参照してください。
『Oracle Clusterware管理およびデプロイメント・ガイド』
Oracle Technology Network(http://www.oracle.com/technologyからオンラインで参照可能)