このマニュアルでは、RMAPI (Resource Management (リソース管理) API) を使用して、Oracle、iPlanetTM Web Server、DNS などのソフトウェアアプリケーション用の高可用性 (HA) データサービスを作成するためのガイドラインを説明します。したがって、このマニュアルはデータサービスの開発者を対象としており、手順、操作を行うのはデータサービスの開発者を想定しています。
この章では、RMAPI を使用するために理解しておく必要がある概念について説明します。
Sun Cluster 3.0 システムを使用すると、アプリケーションを高可用性でスケーラブルなリソース (データサービス) として実行および管理できます。RGM (Resource Gropu Manager) というクラスタ機能は、高可用性のための機構を提供します。この機能へのプログラミングインタフェースの要素には、次のようなものがあります。
コールバックメソッド - RGM がクラスタ上のアプリケーションを制御するために使用します。
API コマンドと関数 - コールバックメソッドがクラスタ内の要素についての情報にアクセスするときに使用します。
プロセス管理機能 - クラスタ上のプロセスを監視および再起動します。
RGM は各クラスタ上でデーモンとして動作して、事前構成したポリシーに従って、選択したノード上のリソースを自動的に起動および停止します。リソースの高可用性を実現するために、RGM は、ノードが異常終了または再起動すると、影響を受けるノード上でリソースを停止し、別のノード上でリソースを起動します。RGM はまた、リソースに固有なモニター (監視機能) を起動および停止することによって、障害のあるリソースを検出し、別のノードに再配置したり、さまざまな視点からリソース性能を監視したりできます。
RGM はフェイルオーバーリソースとスケーラブルリソースの両方をサポートします。フェイルオーバーリソースとは、同時に 1 つのノード上だけでオンラインになることができるリソースのことです。スケーラブルリソースとは、同時に複数のノード上でオンラインになることができるリソースのことです。
ここでは、まず、基本的な用語をいくつか紹介します。次に、さまざまな要素の API を組み合わせて高可用性のアプリケーションを作成する方法について説明します。
RGM および関連する API は、「リソースタイプ」、「リソース」、「リソースグループ」という 3 種類の相互に関連するオブジェクトを処理します。これらのオブジェクトを紹介するために、次のような例を使用します。
まず、開発者は、リソースタイプ ha-oracle を実装します。これは、既存の Oracle DBMS アプリケーションを高可用性にするためのリソースタイプです。次に、エンドユーザーは、マーケティング、エンジニアリング、および財務ごとに異なるデータベースを定義し、それぞれのリソースタイプを ha-oracle にします。次に、クラスタ管理者は、上記リソースを異なるリソースグループに分類することによって、異なるノード上で実行したり、個別にフェイルオーバーできるようにします。同様に、開発者は、もう 1 つのリソースタイプ ha-calendar を作成します。これは、Oracle データベースを必要とする高可用性のカレンダサーバーを実装するためのリソースタイプです。次に、クラスタ管理者は、財務カレンダリソースと財務データベースリソースを同じリソースグループに分類することによって、両方のリソースを同じノード上で実行したり、一緒にフェイルオーバーできるようにします。
リソースタイプは、クラスタ上で実行されるソフトウェアアプリケーション、アプリケーションをクラスタリソースとして管理するために RGM がコールバックメソッドとして使用する制御プログラム、およびクラスタの静的な構成の一部を形成するプロパティセットからなります。RGM はリソースタイププロパティを使用して、特定のタイプのリソースを管理します。
ソフトウェアアプリケーションに加えて、リソースタイプは、他のシステムリソース (ネットワークアドレスなど) も表すことができます。
リソースタイプの開発者は、リソースタイププロパティを指定し、その値をリソースタイプ登録 (RTR) ファイルに設定します。リソースタイプ登録ファイルの形式は明確に定義されています。詳細は、「リソースとリソースタイププロパティの設定」 と rt_reg(4) のマニュアルページを参照してください。また、リソースタイプ登録ファイルの例については、「リソースタイプ登録ファイルの定義」を参照してください。
表 A-1 に、リソースタイププロパティのリストを示します。
クラスタ管理者は、リソースタイプの実装と実際のアプリケーションをクラスタにインストールして、管理コマンドで登録します。そして、登録手順で、リソースタイプ登録ファイルの情報をクラスタ構成に入力します。データサービスの登録手順については、『Sun Cluster 3.0 データサービスのインストールと構成』を参照してください。
リソースは、そのリソースタイプからプロパティと値を継承します。さらに、開発者は、リソースタイプ登録ファイルでリソースプロパティを宣言できます。リソースプロパティのリストについては、表 A-2を参照してください。
クラスタ管理者は、リソースタイプ登録 (RTR) ファイルにプロパティを指定することによって、特定のプロパティの値を変更できます。たとえば、プロパティ定義に値の許容範囲を指定しておきます。これにより、プロパティが調節可能なときに、作成時、常時、不可などを指定できます。このような許容範囲内であれば、クラスタ管理者は管理コマンドでプロパティを変更できます。
クラスタ管理者は、同じタイプのリソースをたくさん作成して、各リソースに独自の名前とプロパティ値セットを持たせることができます。これによって、実際のアプリケーションの複数のインスタンスをクラスタ上で実行できます。このとき、各インスタンスにはクラスタ内で一意の名前が必要です。
各リソースはリソースグループに構成する必要があります。RGM はすべてのリソースを、同じノード上にあるグループ、オンライン (online) とオフライン (offline) に分けます。RGM がリソースをグループ、オンラインまたはオフラインに分けるとき、グループ内の個々のリソース上でコールバックメソッドを呼び出します。
リソースグループが現在オンラインであるノードのことを主ノードと呼びます。リソースグループは、自分の主ノードによってマスター (制御) されます。各リソースグループは、クラスタ管理者が設定した独自の Nodelist プロパティを持っており、この Nodelist プロパティがリソースグループのすべての潜在的な主ノード (つまり、マスター) を識別します。
リソースグループはまた、プロパティセットも持っています。このようなプロパティには、クラスタ管理者が設定できる構成プロパティや、RGM が設定してリソースグループのアクティブな状態を反映する動的プロパティが含まれます。
RGM は 2 種類のリソースグループ、フェイルオーバー (failover) とスケーラブル (scalable) を定義します。フェイルオーバーリソースグループは、同時に 1 つのノード上だけでオンラインになることができます。一方、スケーラブルリソースグループは、同時に複数のノード上でオンラインになることができます。RGM は、各種類のリソースグループを作成するためのプロパティセットを提供します。このようなプロパティについての詳細は、「フェイルオーバーリソースの実装」 と 「スケーラブルリソースの実装」 を参照してください。
リソースグループのプロパティのリストについては、表 A-3 を参照してください。
RGM (Resource Group Manager) は rgmd デーモンとして実装され、クラスタの各メンバー (ノード) 上で動作します。rgmd プロセスはすべてお互いに通信し、単一のクラスタ規模の機能として動作します。
ノードが起動またはクラッシュしたとき、RGM は管理されているすべてのリソースグループの可用性を維持するために、適切なマスター上で自動的にオンラインにします。
特定のリソースが異常終了した場合、そのモニタープログラムはリソースグループを同じマスター上で再起動するか、新しいマスターに切り替えるかを要求できます。
クラスタ管理者は管理コマンドを発行して、次のアクションの 1 つを要求できます。
リソースグループをマスターする権利を変更する。
リソースグループ内の特定のリソースを有効または無効にする。
リソース、リソースグループ、またはリソースタイプを作成、削除、変更する。
RGM は、構成を変更するとき、そのアクションをクラスタのすべてのメンバー (ノード) 間で調整します。このような活動のことを「再構成」と呼びます。状態の変更を個々のリソースにもたらすために、RGM はリソースタイプに固有なコールバックメソッドをそのリソース上で呼び出します。コールバックメソッドについては、「コールバックメソッド」 を参照してください。
RGM オブジェクトを管理するための Sun Cluster 3.0 コマンドは、scrgadm(1M)、scswitch(1M)、scstat(1M) -g です。
scrgadm(1M) コマンドは、RGM が使用するリソースタイプ、リソースグループ、およびリソースオブジェクトを表示、作成、構成、削除します。このコマンドはクラスタの管理インタフェースの一部であり、同じプログラミングコンテキスト内ではアプリケーションインタフェースとして使用されません (この章の後半を参照)。ただし、scrgadm(1M) は API が動作するクラスタ構成を構築するためのツールです。管理インタフェースを理解することは、アプリケーションインタフェースを理解するための背景を知ることになります。このコマンドで実行できる管理タスクの詳細については、scrgadm(1M) のマニュアルページを参照してください。
scswitch(1M) コマンドは、指定されたノード上にあるリソースグループのオンラインとオフラインを切り替えます。そして、リソースまたはそのモニターを有効または無効にします。このコマンドで実行できる管理タスクの詳細については、scswitch(1M) のマニュアルページを参照してください。
scstat(1M) -g コマンドは、すべてのリソースグループおよびリソースについての現在の動的な状態を表示します。
RMAPI (Resource Management (リソース管理) API) は、リソースタイプを実装するときに使用します。リソースタイプの鍵となる要素はコールバックメソッドです。コールバックメソッドとは、RGM から呼び出され、クラスタ上のリソースを制御するプログラムのことです。API はコールバックメソッドの引数と戻り値を定義します。
リソースタイプの必須コールバックメソッドは、起動メソッド (START または PRENET_START) と停止メソッド (STOP または POSTNET_STOP) だけです。
RMAPI は、次のカテゴリのコールバックメソッドを提供します。
メソッドの管理と初期化
START と STOP は、オンラインまたはオフラインにするグループ内のリソースを起動または停止します。
INIT、FINI、BOOT は、リソース上で初期化と終了コードを実行します。
管理サポートメソッド
VALIDATE は、管理アクションによって設定されるプロパティを確認します。
UPDATE は、オンラインリソースのプロパティ設定を更新します。
ネット関連メソッド
PRENET_START と POSTNET_STOP は、同じリソースグループ内のネットワークアドレスが「起動」に構成される前、または「停止」に構成された後に、特別な起動アクションまたは停止アクションを行います。
モニター制御メソッド
MONITOR_START と MONITOR_STOP は、リソースのモニターを起動または停止します。
MONITOR_CHECK は、リソースグループがノードに移動される前に、ノードの信頼性を査定します。
コールバックメソッドについての詳細は、第 4 章「RMAPI リファレンス」 と rt_callbacks(1HA) のマニュアルページを参照してください。また、コールバックメソッドの使用例については、第 5 章「サンプルアプリケーション」を参照してください。
コールバックメソッドの実装をサポートするために、API は、リソースプロパティや他のクラスタ情報にアクセスするメソッドという形で、RGM へのインタフェースを提供します。アクセスメソッドは、シェルコマンドと C 関数の両方の形で提供されます。
リソース、リソースタイプ、リソースグループ、クラスタについての情報にアクセスする。
リソースの Status プロパティと Status_msg プロパティを設定する。
リソースグループの再起動または再配置を要求する。
アクセスメソッドについての詳細は、第 4 章「RMAPI リファレンス」を参照してください。また、アクセスメソッドの使用例については、第 5 章「サンプルアプリケーション」を参照してください。