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

第 1 章 リソース管理の概要

このマニュアルでは、Oracle®、Sun JavaTM System Web Server (以前の Sun ONE Web Server)、DNS などのソフトウェアアプリケーション用のリソースタイプを作成するためのガイドラインを示します。したがって、このマニュアルはリソースタイプの開発者を対象としています。

このマニュアルの内容を理解するため、『Sun Cluster の概念 (Solaris OS 版)』で説明している概念について十分理解しておいてください。

この章では、データサービスを開発するために理解しておく必要がある概念について説明します。この章の内容は次のとおりです。


注 –

このマニュアルでは、「リソースタイプ」と「データサービス」という用語を同じ意味で使用しています。また、このマニュアルではほとんど使用されることはありませんが、「エージェント」という用語も「リソースタイプ」や「データサービス」と同じ意味で使用されます。


Sun Cluster アプリケーション環境

Sun Cluster システムを使用すると、アプリケーションを高度な可用性とスケーラビリティーを備えたリソースとして実行および管理できます。リソースグループマネージャー (Resource Group Manager、RGM) は、高可用性とスケーラビリティーを実現するための機構を提供します。

この機能を利用するためのプログラミングインタフェースを形成する要素は、次のとおりです。

次の図は、これらの要素の相互関係を示しています。

図 1–1 Sun Cluster アプリケーション環境のプログラミングアーキテクチャー

コールバックメソッド、RMAPI、プロセス監視機能 (Process Monitor Facility、PMF)、DSDL の相互関係を示す図

Sun Cluster Agent Builder (第 9 章Sun Cluster Agent Builderを参照) は Sun Cluster パッケージ内のツールで、データサービスの作成プロセスを自動化します。Agent Builder は、(DSDL 関数を使用してコールバックメソッドを作成することにより) C、または (低レベル API コマンドを使用してコールバックメソッドを作成することにより) Korn (ksh) シェルコマンドでデータサービスコードを生成します。

RGM は各クラスタノード上でデーモンとして動作し、事前に構成したポリシーに従って、選択した Solaris ホスト上のリソースを自動的に起動および停止します。RGM は、ノードの障害やリブートが発生した場合もリソースの高可用性を保ちます。これを実現するため、RGM は影響を受けたノード上でリソースを停止し、別のノード上でそのリソースを起動します。また RGM は、リソース固有のモニターを自動的に起動および停止します。これらのモニターは、リソース障害を検出して、障害が発生しているリソースを別のノードに再配置するなど、さまざまな視点からリソース性能を監視します。

RGM はフェイルオーバーリソースとスケーラブルリソースの両方をサポートしています。フェイルオーバーリソースは、常に単一のノード上でしかオンラインにできません。スケーラブルリソースは、同時に複数のノード上でオンラインにできます。ただし、共有アドレスを使用してノード間でサービスの負荷を分散しているスケーラブルリソースは、Solaris ホストあたり 1 つのノードでしかオンラインにできません。

リソースグループマネージャーモデル

ここでは、基本的な用語をいくつか紹介し、RGM とそれに関連するインタフェースについて詳細に説明します。

RGM は、「リソースタイプ」、「リソース」、「リソースグループ」という 3 種類の相互に関連するオブジェクトを処理します。これらのオブジェクトを紹介するために、次のような例を使用します。

開発者は、既存の Oracle DBMS アプリケーションを高可用性にするリソースタイプ ha-oracle を実装します。エンドユーザーは、マーケティング、エンジニアリング、および財務ごとに異なるデータベースを定義し、それぞれのリソースタイプを ha-oracle にします。 クラスタ管理者は、上記リソースを異なるリソースグループに配置することによって、異なるノード上で実行したり、個別にフェイルオーバーできるようにします。開発者は、もう 1 つのリソースタイプ ha-calendar を作成し、Oracle データベースを必要とする高可用性のカレンダサーバーを実装します。クラスタ管理者は、財務カレンダ用のリソースを財務データベースリソースと同じリソースグループに配置します。そうすることで、両方のリソースが必ず同じノード上で動作し、一緒にフェイルオーバーするようになります。

リソースタイプの説明

リソースタイプは次のものから構成されます。

RGM は、リソースタイププロパティーを使って特定のタイプのリソースを管理します。


注 –

リソースタイプは、ソフトウェアアプリケーションだけでなく、ネットワークアドレスなど、そのほかのシステムリソースも表します。


開発者は、リソースタイプのプロパティーを指定し、プロパティーの値をリソースタイプ登録 (Resource Type Registration、RTR) ファイルに設定します。RTR ファイルは、「リソースとリソースタイププロパティーの設定」、および rt_reg(4)のマニュアルページで説明されている形式に従います。RTR ファイルの例については、「リソースタイプ登録ファイルの定義」も参照してください。

「資源タイプのプロパティー」に、リソースタイププロパティーのリストを示します。

クラスタ管理者は、リソースタイプの実装と実際のアプリケーションをクラスタにインストールし、登録します。登録の手続きによって、RTR ファイルの情報がクラスタ構成に入力されます。データサービスの登録手順については、『Sun Cluster データサービスの計画と管理 (Solaris OS 版)』を参照してください。

リソースの説明

リソースは、そのリソースタイプからプロパティーと値を継承します。さらに、開発者は、RTR ファイルでリソースプロパティーを宣言できます。「リソースのプロパティー」にはリソースプロパティーのリストがあります。

クラスタ管理者は、RTR ファイルにプロパティーがどのように指定されているかに応じて、特定のプロパティーの値を変更できます。たとえば、プロパティー定義は値の許容範囲を指定できます。プロパティー定義には、いつプロパティーを調整できるかを指定することもできます。つまり、「調整不可」、「常時調整可」、「作成されたとき (リソースがクラスタに追加されたとき)」または「リソースが無効にされたとき」を指定できます。このような仕様の範囲内で、クラスタ管理者は管理コマンドを使用することでプロパティーを変更できます。

クラスタ管理者は、同じタイプのリソースを多数作成して、各リソースに独自の名前とプロパティー値のセットを持たせることができます。これによって、使用しているアプリケーションの複数のインスタンスをクラスタ上で実行できます。このとき、各インスタンスにはクラスタ内で一意の名前が必要です。

リソースグループの説明

各リソースは、必ずリソースグループ内に構成されます。RGM は、同じグループのすべてのリソースを同じノード上で一緒にオンラインかオフラインにします。RGM は、リソースグループをオンラインまたはオフラインにするときに、グループ内の個々のリソースに対してコールバックメソッドを実行します。

リソースグループがオンラインになっているノードを主ノードと呼びます。リソースグループは、その主ノードによってマスター (制御) されます。各リソースグループは、関連付けられた Nodelist プロパティーを持っており、これによってリソースグループの「潜在的な主ノード」または「マスター」を識別します。クラスタ管理者は Nodelist プロパティーを設定します。

リソースグループはプロパティーセットも持っています。このようなプロパティーには、クラスタ管理者が設定できる構成プロパティーや、RGM が設定してリソースグループのアクティブな状態を反映する動的プロパティーがあります。

RGM は、フェイルオーバーとスケーラブルという 2 種類のリソースグループを定義します。フェイルオーバーリソースグループは、常に単一のノード上でしかオンラインにできません。スケーラブルリソースグループは、同時に複数のノード上でオンラインにできます。RGM は、各種類のリソースグループを作成するためのプロパティーセットを提供します。このようなプロパティーの詳細については、「データサービスをクラスタに転送する方法」「コールバックメソッドの実装」を参照してください。

「 リソースグループのプロパティー」には、リソースグループプロパティーのリストがあります。

リソースグループマネージャー

リソースグループマネージャー (Resource Group Manager、RGM) は rgmd デーモンとして実装され、クラスタ内のグローバルクラスタ投票ノード上で動作します。rgmd プロセスはすべて互いに通信し、単一のクラスタ規模の機能として動作します。

RGM は、次の機能をサポートします。

RGM は、構成を変更するとき、そのアクションをクラスタのすべてのメンバー (ノード) 間で調整します。このような動作を「再構成」と呼びます。個々のリソースでの状態変更を有効にするため、RGM は、各リソース上でリソースタイプに固有のコールバックメソッドを実行します。

コールバックメソッド

Sun Cluster フレームワークは、コールバックの機構を使用して、データサービスと RGM 間の通信を実現します。Sun Cluster フレームワークは、引数と戻り値を含むコールバックメッソドのセットと、RGM が各メソッドを呼び出す環境を定義します。

データサービスを作成するには、個々のコールバックメソッドのセットをコーディングし、個々のメソッドを RGM から呼び出し可能な制御プログラムとして実装します。つまり、データサービスは、単一の実行可能コードではなく、多数の実行可能なスクリプト (ksh) またはバイナリ (C 言語) から構成されており、それぞれを RGM から直接呼び出すことができます。

コールバックメソッドを RGM に登録するには、RTR ファイルを使用します。RTR ファイルでは、データサービスに対して実装した各メソッドのプログラムを指定します。クラスタ管理者がデータサービスをクラスタに登録すると、RGM は RTR ファイルを読み取ります。RTR ファイルには、コールバックプログラムの識別情報などの情報があります。

リソースタイプの必須コールバックメソッドは、起動メソッド (Start または Prenet_start) と停止メソッド (Stop または Postnet_stop) だけです。

コールバックメソッドは、次のようなカテゴリに分類できます。

コールバックメソッドの詳細は、第 3 章リソース管理 API リファレンス、および rt_callbacks(1HA)のマニュアルページを参照してください。また、サンプルデータサービスでのコールバックメソッドについては、第 5 章サンプルデータサービス第 8 章サンプル DSDL リソースタイプの実装を参照してください。

プログラミングインタフェース

リソース管理アーキテクチャーは、データサービス用のコードを作成するため、低レベルまたはベース API、ベース API 上に構築されるより高いレベルのライブラリを提供します。さらに、ユーザーが指定する基本的な情報からデータサービスを自動的に生成するツール、Sun Cluster Agent Builder を提供します。

リソース管理 API

RMAPI (リソース管理 API) は、低レベルの関数のセットを提供します。これらの関数により、データサービスは、システム内のリソースタイプ、リソース、リソースグループに関する情報にアクセスしたり、ローカルの再起動やフェイルオーバーを要求したり、リソースの状態を設定できるようになります。これらの関数にアクセスするには、libscha.so ライブラリを使用します。RMAPI は、これらのコールバックメソッドを、シェルコマンドまたは C 関数の形で提供できます。RMAPI 関数の詳細は、scha_calls(3HA)のマニュアルページと、第 3 章リソース管理 API リファレンスを参照してください。サンプルデータサービスのコールバックメソッドにおけるこれらの関数の使用例については、第 5 章サンプルデータサービスも参照してください。

データサービス開発ライブラリ

データサービス開発ライブラリ (Data Service Development Library、DSDL) は、RMAPI 上に構築されており、基盤となる RGM の「メソッドコールバックモデル」を維持しながら、上位レベルの統合フレームワークを提供します。libdsdev.so ライブラリには、DSDL 関数が含まれています。

DSDL は、次のようなさまざまなデータサービス開発向けの機能を提供します。

DSDL は、大多数のアプリケーションに対して、データサービスの構築に必要なほとんどまたはすべての機能を提供します。DSDL は、低レベルの API の代わりになるものではなく、低レベルの API をカプセル化および拡張するためのものであることに注意してください。事実、多くの DSDL 関数は libscha.so 関数を呼び出します。これと同じように、開発者は、DSDL を使用しながら libscha.so 関数を直接呼び出すことによって、データサービスの大半を作成することができます。

DSDL の詳細は、第 6 章データサービス開発ライブラリ、および scha_calls(3HA)のマニュアルページを参照してください。

Sun Cluster Agent Builder

Agent Builder は、データサービスの作成を自動化するツールです。このツールでは、ターゲットアプリケーションと作成するデータサービスについての基本的な情報を入力します。Agent Builder は、ソースコードと実行可能コード (C 言語または Korn シェル)、カスタマイズされた RTR ファイル、および Solaris パッケージを含む、データサービスを生成します。

大多数のアプリケーションでは、Agent Builder を使用することにより、わずかなコードを手作業で変更するだけで完全なデータサービスを生成できます。追加プロパティーの妥当性検査を必要とするような、より要件の厳しいアプリケーションには、Agent Builder では対応できないこともあります。しかし、このような場合でも、Agent Builder によりコードの大部分を生成できるので、手作業によるコーディングは残りの部分だけで済みます。少なくとも Agent Builder を使用することにより、独自の Solaris パッケージを生成することができます。

リソースグループマネージャーの管理インタフェース

Sun Cluster はクラスタを管理するために、グラフィカルユーザーインタフェース (Graphical User Interface、GUI) とコマンドセットの両方を提供します。

Sun Cluster Manager

Sun Cluster Manager は、次に示す作業を実行できる Web ベースのツールです。

Sun Cluster Manager のインストール方法、および Sun Cluster Manager によるクラスタソフトウェアのインストール方法については、『Sun Cluster ソフトウェアのインストール (Solaris OS 版)』を参照してください。管理作業については、Sun Cluster Manager のオンラインヘルプを参照してください。

clsetup ユーティリティー

ほとんどの Sun Cluster 管理作業は、 clsetup(1CL) ユーティリティーを使用して対話形式で行うことができます。

clsetup ユーティリティーを使用すると、Sun Cluster の次の要素を管理できます。

また、clsetup ユーティリティーを使用すると、次の操作を実行できます。

管理コマンド

RGM オブジェクトを管理するための Sun Cluster コマンドは、clresourcetypeclresourcegroupclresourceclnode、および cluster です。

clresourcetypeclresourcegroup、および clresource の 各コマンドでは、RGM で使用されるリソースオブジェクトや、リソースタイプ、リソースグループの表示、作成、構成、および削除ができます。これらのコマンドはクラスタの管理インタフェースの一部であり、この章の残りで説明しているアプリケーションインタフェースと同じプログラミングコンテキストでは使用されません。ただし、clresourcetype clresourcegroup、および clresource の 各コマンドは、API が動作するクラスタ構成を構築するツールとしても使用できます。管理インタフェースを理解すると、アプリケーションインタフェースも理解しやすくなります。これらのコマンドで実行できる管理作業については、clresourcetype(1CL)clresourcegroup(1CL)、および clresource(1CL) の各マニュアルページを参照してください。