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

RMAPI アクセスメソッド

RMAPI は、リソースタイプ、リソース、リソースグループのプロパティー、およびそのほかのクラスタ情報にアクセスするための関数を提供します。これらの関数はシェルコマンドと C 関数の両方の形で提供されるため、開発者はシェルスクリプトまたは C プログラムのどちらでも制御プログラムを実装できます。

RMAPI シェルコマンド

シェルコマンドは、クラスタの RGM によって制御されるサービスを表すリソースタイプのコールバックメソッドを、シェルスクリプトで実装するときに使用します。

これらのコマンドを使用すると、次の作業を行えます。


注 –

この節では、シェルコマンドについて簡単に説明します。詳細については、各コマンドの (1HA) マニュアルページを参照してください。特に注記しないかぎり、各コマンドと関連付けられた同じ名前のマニュアルページがあります。


RMAPI リソースコマンド

以下のコマンドを使用すると、リソースについての情報にアクセスしたり、リソースの Status プロパティーや Status_msg プロパティーを設定できます。

scha_resource_get

RGM の制御下のリソースまたはリソースタイプに関する情報にアクセスできます。このコマンドは、C 関数 scha_resource_get() と同じ情報を提供します。詳細は、scha_resource_get(1HA)のマニュアルページを参照してください。

scha_resource_setstatus

RGM の制御下のリソースの Status および Status_msg プロパティーを設定します。このコマンドはリソースのモニターによって使用され、モニターから見たリソースの状態を示します。このコマンドは、C 関数 scha_resource_setstatus() と同じ機能を提供します。このコマンドについては、scha_resource_setstatus(1HA)のマニュアルページを参照してください。


注 –

scha_resource_setstatus() はリソースモニター専用の関数ですが、任意のプログラムから呼び出すことができます。


リソースタイプコマンド

scha_resourcetype_get

RGM に登録されているリソースタイプについての情報にアクセスします。このコマンドは、C 関数 scha_resourcegroup_get() と同じ機能を提供します。このコマンドについては、scha_resourcetype_get(1HA)のマニュアルページを参照してください。

リソースグループコマンド

次に示すコマンドを使用すると、リソースグループについての情報にアクセスしたり、リソースグループを再起動したりすることができます。

scha_resourcegroup_get

RGM の制御下のリソースグループに関する情報にアクセスできます。このコマンドは、C 関数 scha_resourcegroup_get() と同じ機能を提供します。このコマンドについては、scha_resourcegroup_get (1HA) のマニュアルページを参照してください。

scha_control

RGM の制御下のリソースグループの再起動、または別のノードまたはゾーンへの再配置を要求します。このコマンドは、C 関数 scha_control() および scha_control_zone() と同じ機能を提供します。このコマンドについては、scha_control(1HA)のマニュアルページを参照してください。

クラスタコマンド

scha_cluster_get

クラスタについての情報 (クラスタ名、ノードまたはゾーン名、ID、状態、およびリソースグループ) にアクセスします。このコマンドは、C 関数 scha_cluster_get() と同じ情報を提供します。このコマンドについては、scha_cluster_get(1HA)のマニュアルページを参照してください。

C 関数

C 関数は、クラスタの RGM によって制御されるサービスを表すリソースタイプのコールバックメソッドを、C プログラムで実装するときに使用します。

これらの関数を使用すると、次の作業を行えます。


注 –

この節では、C 関数について簡単に説明します。C 関数の詳細については、各関数の (3HA) マニュアルページを参照してください。特に注記しないかぎり、各関数と関連付けられた同じ名前のマニュアルページがあります。C 関数の出力引数および戻りコードについては、scha_calls(3HA)のマニュアルページを参照してください。


リソース関数

以下の関数は、RGM に管理されているリソースについての情報にアクセスしたり、モニターから見たリソースの状態を示します。

scha_resource_open(), scha_resource_get(), and scha_resource_close()

これらの関数は、RGM によって管理されるリソースに関する情報にアクセスします。scha_resource_open() 関数は、リソースへのアクセスを初期化し、scha_resource_get のハンドルを戻します。scha_resource_get 関数は、リソースの情報にアクセスします。scha_resource_close() 関数は、ハンドルを無効にし、scha_resource_get の戻り値に割り当てられているメモリーを解放します。

scha_resource_open() 関数がリソースのハンドルを戻したあとに、クラスタの再構成や管理アクションによって、リソースが変更されることがあります。その結果、scha_resource_get() 関数がハンドルを通じて獲得した情報は正しくない可能性があります。リソース上でクラスタの再構成や管理アクションが行われた場合、RGM は scha_err_seqid エラーコードを scha_resource_get() 関数に戻し、リソースに関する情報が変更された可能性があることを示します。このエラーメッセージは致命的ではありません。関数は正常に終了します。メッセージを無視し、戻された情報を受け入れることを選択できます。または、現在のハンドルを閉じて新しいハンドルを開き、リソースに関する情報にアクセスしてもかまいません。

これら 3 つの関数は 1 つのマニュアルページで説明しています。このマニュアルページには、個々の関数名 scha_resource_open(3HA)scha_resource_get(3HA)、または scha_resource_close(3HA でアクセスできます。

scha_resource_setstatus()

RGM の制御下のリソースの Status および Status_msg プロパティーを設定します。この関数はリソースのモニターによって使用され、モニターから見たリソースの状態を反映します。


注 –

scha_resource_setstatus() はリソースモニター専用の関数ですが、任意のプログラムから呼び出すことができます。


scha_resource_setstatus_zone()

scha_resource_setstatus() 関数と同様に、RGM の制御下のリソースの Status および Status_msg プロパティーを設定します。この関数はリソースのモニターによって使用され、モニターから見たリソースの状態を反映します。ただし、この関数ではメソッドを実行するように構成されたゾーンの名前も指定します。


注 –

scha_resource_setstatus_zone() は特にリソースモニターが使用しますが、任意のプログラムから呼び出すことができます。


リソースタイプ関数

以下の関数は、RGM に登録されているリソースタイプに関する情報にアクセスします。

scha_resourcetype_open(), scha_resourcetype_get(), and scha_resourcetype_close()

scha_resourcetype_open() 関数は、リソースへのアクセスを初期化し、scha_resourcetype_get() のハンドルを戻します。scha_resourcetype_get() 関数は、リソースタイプの情報にアクセスします。scha_resourcetype_close() 関数は、ハンドルを無効にし、scha_resourcetype_get() の戻り値に割り当てられているメモリーを解放します。

scha_resourcetype_open() 関数がリソースタイプのハンドルを戻したあとに、クラスタの再構成や管理アクションによって、リソースタイプが変更されることがあります。その結果、scha_resourcetype_get() 関数がハンドルを通じて獲得した情報は正しくない可能性があります。リソースタイプ上でクラスタの再構成や管理アクションが行われた場合、RGM は scha_err_seqid エラーコードを scha_resourcetype_get() 関数に戻し、リソースタイプに関する情報が変更された可能性があることを示します。このエラーメッセージは致命的ではありません。関数は正常に終了します。メッセージを無視し、戻された情報を受け入れることを選択できます。または、現在のハンドルを閉じて新しいハンドルを開き、リソースタイプに関する情報にアクセスしてもかまいません。

これら 3 つの関数は 1 つのマニュアルページで説明しています。このマニュアルページには、個々の関数名 scha_resourcetype_open(3HA)scha_resourcetype_get(3HA)、または scha_resourcetype_close(3HA) でアクセスできます。

リソースグループ関数

以下の関数を使用すると、リソースグループについての情報にアクセスしたり、リソースグループを再起動できます。

scha_resourcegroup_open(), scha_resourcegroup_get(), and scha_resourcegroup_close()

これらの関数は、RGM によって管理されるリソースグループに関する情報にアクセスします。scha_resourcegroup_open() 関数は、リソースグループへのアクセスを初期化し、scha_resourcegroup_get() のハンドルを戻します。scha_resourcegroup_get() 関数は、リソースグループの情報にアクセスします。scha_resourcegroup_close() 関数は、ハンドルを無効にし、scha_resourcegroup_get() の戻り値に割り当てられているメモリーを解放します。

scha_resourcegroup_open() 関数がリソースグループのハンドルを戻したあとに、クラスタの再構成や管理アクションによって、リソースグループが変更されることがあります。その結果、scha_resourcegroup_get() 関数がハンドルを通じて獲得した情報は正しくない可能性があります。リソースグループ上でクラスタの再構成や管理アクションが行われた場合、RGM は scha_err_seqid エラーコードを scha_resourcegroup_get() 関数に戻し、リソースグループに関する情報が変更された可能性があることを示します。このエラーメッセージは致命的ではありません。関数は正常に終了します。メッセージを無視し、戻された情報を受け入れることを選択できます。または、現在のハンドルを閉じて新しいハンドルを開き、リソースグループに関する情報にアクセスしてもかまいません。

これら 3 つの関数は 1 つのマニュアルページで説明しています。このマニュアルページには、個々の関数名 scha_resourcegroup_open(3HA)scha_resourcegroup_get(3HA)、および scha_resourcegroup_close(3HA) でアクセスできます。

scha_control() and scha_control_zone()

RGM の制御下のリソースグループの再起動、または別のノードまたはゾーンへの再配置を要求します。これらの関数については、scha_control(3HA) および scha_control_zone(3HA) のマニュアルページを参照してください。

クラスタ関数

次に示す関数は、クラスタについての情報にアクセスし、その情報を戻します。

scha_cluster_open(), scha_cluster_get(), and scha_cluster_close()

これらの関数は、クラスタについての情報 (クラスタ名、ノードまたはゾーン名、ID、状態、およびリソースグループ) にアクセスします。

scha_cluster_open() 関数がクラスタのハンドルを戻したあとに、再構成や管理アクションによって、クラスタが変更されることがあります。その結果、scha_cluster_get() 関数がハンドルを通じて獲得した情報は正しくない可能性があります。クラスタ上で再構成や管理アクションが行われた場合、RGM は scha_err_seqid エラーコードを scha_cluster_get 関数に戻し、クラスタに関する情報が変更された可能性があることを示します。このエラーメッセージは致命的ではありません。関数は正常に終了します。メッセージを無視し、戻された情報を受け入れることを選択できます。または、現在のハンドルを閉じて新しいハンドルを開き、クラスタに関する情報にアクセスしてもかまいません。

Global_zone リソースタイププロパティーが TRUE に等しいリソースが、ZONE_LOCAL の問い合わせの optag の値を指定して scha_cluster_get() を起動した場合、大域ゾーンの名前が返されます。この場合、呼び出した側のコードでは文字列 :zonename をローカルノード名に連結して、リソースが実際に構成されているゾーンを取得する必要があります。zonename は、-Z zonename コマンド行オプション内のメソッドに渡されるものと同じゾーン名です。コマンド行内に -Z オプションがない場合は、リソースグループが大域ゾーン内に構成されるので、ゾーン名をノード名に連結する必要はありません。

これら 3 つの関数は 1 つのマニュアルページで説明しています。このマニュアルページには、個々の関数名 scha_cluster_open(3HA)scha_cluster_get(3HA)、および scha_cluster_close(3HA)でアクセスできます。

scha_cluster_getlogfacility()

クラスタログとして使用されるシステムログ機能の数を戻します。戻された番号を Solaris の syslog() 関数で使用すると、イベントと状態メッセージをクラスタログに記録できます。この関数については、scha_cluster_getlogfacility(3HA)のマニュアルページを参照してください。

scha_cluster_getnodename()

関数が呼び出されたクラスタノードの名前を戻します。この関数については、scha_cluster_getnodename(3HA)のマニュアルページを参照してください。

ユーティリティー関数

この関数は、エラーコードをエラーメッセージに変換します。

scha_strerror()

scha_ 関数のいずれかによって戻されるエラーコードを、対応するエラーメッセージに変換します。この関数を logger コマンドと共に使用すると、メッセージを Solaris システムログ (syslog) に記録できます。この関数については、scha_strerror(3HA)のマニュアルページを参照してください。