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

コールバックメソッドの実装

この節では、コールバックメソッドの実装に関する一般的な情報について説明します。

リソースとリソースグループのプロパティー情報へのアクセス

一般に、コールバックメソッドはリソースのプロパティーにアクセスする必要があります。RMAPI は、リソースのシステム定義プロパティーと拡張プロパティーにアクセスするために、コールバックメソッドで使用できるシェルコマンドと C 関数の両方を提供します。詳細は、scha_resource_get(1HA)scha_resource_get(3HA) のマニュアルページを参照してください。

DSDL は、システム定義プロパティーにアクセスするための C 関数セット (プロパティーごとに 1 つ) と、拡張プロパティーにアクセスするための関数を提供します。scds_property_functions(3HA) および scds_get_ext_property(3HA) のマニュアルページを参照してください。

StatusStatus_msg を除き、リソースプロパティーを設定する API 関数が存在しないため、プロパティー機構を使用して、データサービスの動的な状態情報を格納することはできません。したがって、動的な状態情報は、広域ファイルに格納するようにします。


注 –

クラスタ管理者は、clresource コマンド、グラフィカル管理コマンド、またはグラフィカル管理インタフェースを使用して、特定のリソースプロパティーを設定することができます。ただし、clresource はクラスタの再構築時に (つまり、RGM がメソッドを呼び出した時点で) エラー終了するため、どのようなコールバックメソッドからも clresource を呼び出さないようにします。


メソッドの呼び出し回数への非依存性

一般に、RGM は、同じリソース上で同じメソッドを (同じ引数で) 何回も連続して呼び出すことはありません。ただし、Start メソッドが失敗した場合には、リソースが起動していなくても、RGM はそのリソース上で Stop メソッドを呼び出すことができます。同様に、リソースデーモンが自発的に停止している場合でも、RGM はそのリソース上で Stop メソッドを実行できます。Monitor_start メソッドと Monitor_stop メソッドにも、同じことが当てはまります。

このような理由のため、Stop メソッドと Monitor_stop メソッドには「呼び出し回数への非依存性」を組み込む必要があります。つまり、同じリソース上で、同じ引数を指定して Stop または Monitor_stop を連続して呼び出しても、1 回だけ呼び出したときと同じ結果になる必要があります。

呼び出し回数に依存しないということは、リソースまたはモニターがすでに停止し、行うべき作業がなくても、Stop メソッドと Monitor_stop メソッドが 0 (成功) を返す必要があるということも意味します。


注 –

InitFiniBootUpdate の各メソッドも呼び出し回数に依存しない必要があります。Start メソッドは呼び出し回数に依存してもかまいません。


メソッドがゾーンで呼び出される仕組み

Global_zone リソースタイププロパティーは、RTR ファイルで宣言すると、リソースタイプのメソッドが大域ゾーン内で実行されるかどうかを示します。Global_zone プロパティーが TRUE に等しい場合、リソースを含むリソースグループが非大域ゾーンで動作するように構成されているときでも、メソッドは大域ゾーンで実行されます。

Global_zoneTRUE に等しいリソースが非大域ゾーン内で構成されている場合、大域ゾーン内で呼び出されるメソッドは -Z zonename オプション付きで呼び出されます。zonename オペランドは、リソースが実際に構成されているローカルノード上のゾーンの名前を示します。このオペランドの値がメソッドに渡されます。

リソースが大域ゾーン内で構成されている場合には、-Z zonename オプションは呼び出されず、非大域ゾーン名がメソッドに渡されることはありません。

Global_zone リソースタイププロパティーについては、「資源タイプのプロパティー」を参照してください。