リソースタイプ実装の START コールバックメソッドは、特定のクラスタノードのリソースを開始するときに RGM によって呼び出されます。リソースグループ名とリソース名、およびリソースタイプ名はコマンド行から渡されます。START メソッドは、クラスタノードでデータサービスリソースを開始するために必要なアクションを行います。通常、このようなアクションには、リソースプロパティの取得や、アプリケーション固有の実行可能ファイルと構成ファイル (または、どちらか) の場所の特定、適切なコマンド行引数を使用したアプリケーションの起動などがあります。
DSDL では、リソース構成ファイルが scds_initialize() ユーティリティーによってすでに取得されています。アプリケーションの起動アクションは、svc_start() ルーチンに指定できます。 さらに、アプリケーションが実際に起動されたかどうかを確認するために、svc_wait() ルーチンを呼び出すことができます。START メソッドのコード (詳細は省略) は、次のようになります。
intmain(int argc, char *argv[]) { scds_handle_t handle; if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) { return (1); /* 初期設定のエラー */ } if (svc_validate(handle) != 0) { return (1); /* 設定値が無効 */ } if (svc_start(handle) != 0) { return (1); /* 起動に失敗 */ } return (svc_wait(handle)); } |
この起動メソッドの実装では、svc_validate() を呼び出してリソース構成を検証します。検証結果が正しくない場合は、リソース構成とアプリケーション構成が一致していないか、このクラスタノードのシステムに関して何らかの問題があることを示しています。たとえば、リソースに必要な広域ファイルシステムが現在このクラスタノードで使用できないのかもしれません。その場合には、このクラスタノードでこのリソースを起動しても意味がないので、RGM を使って別のノードのリソースを起動すべきです。ただし、この場合、svc_validate() は十分に限定的であるものとします (その場合、このルーチンは、アプリケーションが必要とするリソースがあるかどうかをそのクラスタノードだけで検査します)。そうでないと、このリソースはすべてのクラスタノードで起動に失敗し、START_FAILED の状態になる可能性があります。リソースのこの状態については、scswitch(1M) と『Sun Cluster 3.0 12/01 データサービスのインストールと構成』を参照してください。
svc_start() ルーチンは、このノードでリソースの起動に成功したら戻りコード 0 を、問題を検出したら 0 以外の戻りコードをそれぞれ返す必要があります。 このルーチンから 0 以外の値が返されると、RGM は、このリソースを別のクラスタノードで起動しようと試みます。
DSDL を最大限に活用するには、svc_start() ルーチンで scds_pmf_start() ユーティリティーを使って、アプリケーションを PMF (プロセス管理機能) のもとで起動できます。このユーティリティーは、PMF の障害コールバックアクション機能 (pmfadm(1M) の -a アクションフラグを参照) を使って、プロセス障害の検出を実装します。