Sun Cluster 3.0 データサービス開発ガイド

アプリケーションの制御

ノードがクラスタに結合されるとき、または、クラスタから切り離されるとき、RGM はコールバックメソッドを使用して、実際のリソース (アプリケーション) を制御できます。

リソースの起動と停止

リソースタイプを実装するには、少なくとも、START メソッドと STOP メソッドが必要です。RGM は、リソースタイプのメソッド関数またはプログラムを、適切なノード上で適切な回数だけ呼び出して、リソースグループをオフラインまたはオンラインにします。たとえば、クラスタノードのクラッシュ後、RGM は、そのノードがマスターしているリソースグループを新しいノードに移動します。START メソッドは、正常に動作しているホストノード上で各リソースを再起動できる方法を RGM に提供するように実装する必要があります。

ローカルノード上でリソースが起動され、利用可能になるまで、START メソッドは戻ってはなりません。初期化に時間がかかるリソースタイプでは、十分な長さのタイムアウト値をその START メソッドに設定する必要があります。リソースタイプ登録ファイルで Start_timeout プロパティのデフォルト値と最小値を設定します。

STOP メソッドは、RGM がリソースをオフラインにする状況に合わせて実装する必要があります。たとえば、リソースグループがノード 1 上でオフラインになり、ノード 2 上でもう一度オンラインになると仮定します。リソースグループをオフラインにしている間、RGM は STOP メソッドをそのリソースグループ内のリソース上で呼び出して、ノード 1 上のすべての活動を停止しようとします。ノード 1 上ですべてのリソースの STOP メソッドが完了した後、RGM は、ノード 2 上でそのリソースグループをもう一度オンラインにします。

ローカルノード上でリソースがすべての活動を完全に停止し、完全にシャットダウンするまで、STOP メソッドは戻ってはなりません。最も安全な STOP の実装方法は、ローカルノード上で資源に関連するすべてのプロセスを終了することです。シャットダウンに時間がかかるリソースタイプでは、十分な長さのタイムアウト値をその STOP メソッドに設定する必要があります。リソースタイプ登録ファイルで Stop_timeout プロパティを設定します。

STOP メソッドが失敗またはタイムアウトすると、リソースグループはエラー状態になり、システム管理者の介入が必要となります。この状態を回避するには、すべてのエラー状態から回復するように、STOPMONITOR_STOP メソッドを実装する必要があります。理想的には、これらのメソッドは 0 (成功) のエラー状態で終了し、ローカルノード上でリソースとそのモニターのすべての活動を正常に停止するべきです。

リソースの初期化と終了

RGM は、3 つの任意のメソッド INITFINIBOOT を使用し、リソース上で初期化と終了コードを実行できます。リソースを管理下に置くとき (リソースが属しているリソースグループを管理していない状態から管理している状態に切り替えるとき、または、すでに管理されているリソースグループでリソースを作成するとき)、RGM は INIT メソッドを呼び出して、一度だけリソースの初期化を実行します。

リソースを管理下から外すとき (リソースが属しているリソースグループを管理していない状態に切り替えるとき、または、すでに管理されているリソースグループからリソースを削除するとき)、RGM は FINI を呼び出して、リソースをクリーンアップします。クリーンアップは呼び出し回数に依存しない必要があります。つまり、すでにクリーンアップが行われている場合、FINI は 0 (成功) で終了する必要があります。

RGM は、新たにクラスタに結合した、つまり、起動または再起動されたノード上で、BOOT メソッドを呼び出します。

BOOT メソッドは、通常、INIT と同じ初期化を実行します。この初期化は呼び出し回数に依存しない必要があります。つまり、ローカルノード上ですでにリソースが初期化されている場合、BOOTINIT は 0 (成功) で終了する必要があります。