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

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

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

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


注 –

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


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

Sun Cluster システムを使用すると、アプリケーションを高度な可用性とスケーラビリティーを備えたリソースとして実行および管理できます。RGM (Resource Group Manager) は、高可用性とスケーラビリティーを実現するための機構を提供します。この機能を利用するためのプログラミングインタフェースを形成する要素は、次のとおりです。

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

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

コールバックメソッド、RMAPI、Process Monitor Facility (PMF)、DSDL の相互関係を示す図

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

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

RGM はフェイルオーバーリソースとスケーラブルリソースの両方をサポートします。フェイルオーバーリソースとは、同時に 1 つのノード上だけでオンラインになることができるリソースのことです。スケーラブルリソースとは、同時に複数のノード上でオンラインになることができるリソースのことです。

RGM モデル

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

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

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

リソースタイプ

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

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


注 –

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


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

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

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

リソース

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

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

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

リソースグループ

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

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

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

RGM は、2 種類のリソースグループ、フェイルオーバー (failover) とスケーラブル (scalable) を定義します。 フェイルオーバーリソースグループは、同時に 1 つのノード上だけでオンラインになることができます。一方、スケーラブルリソースグループは、同時に複数のノード上でオンラインになることができます。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 章「Resource Management API リファレンス」rt_callbacks(1HA) のマニュアルページを参照してください。また、サンプルデータサービスでのコールバックメソッドについては、第 5 章「サンプルデータサービス」第 8 章「サンプル DSDL リソースタイプの実装」を参照してください。

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

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

Resource Management API

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

Data Service Development Library

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

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

DSDL の詳細については、第 6 章「Data Service Development Library」scha_calls(3HA) のマニュアルページを参照してください。

SunPlex Agent Builder

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

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

Resource Group Manager の管理インタフェース

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

SunPlex Manager

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

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

scsetup ユーティリティー

scsetup(1M) ユーティリティーを使用すると、Sun Cluster の管理作業の大部分を対話形式で行うことができます。

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

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

管理コマンド

RGM オブジェクトの管理用 Sun Cluster コマンドは、scrgadmscswitchscstat -g の 3 つです。

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

scswitch コマンドは、指定のノード上でリソースグループのオンラインとオフラインを切り替えます。またこのコマンドは、リソースまたはそのモニターを有効または無効にします。scswitch コマンドで実行できる管理作業の詳細については、scswitch(1M) のマニュアルページを参照してください。

scstat -g コマンドでは、すべてのリソースグループおよびリソースの現在の動的な状態を表示できます。scstat コマンドで実行できる管理作業の詳細については、scstat(1M) のマニュアルページを参照してください。