Sun Cluster 3.0 U1 データサービス開発ガイド

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

このマニュアルでは、Oracle、iPlanetTM Web Server、DNS などのソフトウェアアプリケーション用のリソースタイプを作成するためのガイドラインを説明します。したがって、このマニュアルはリソースタイプの開発者を対象としており、手順、操作を行うのはリソースタイプの開発者を想定しています。

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


注 -

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


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

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

図 1-1 に、これら要素の相互関係を示します。

図 1-1 プログラミングアーキテクチャ

Graphic

Sun Cluster パッケージには、データサービスを作成するプロセスを自動化する SunPlex Agent BuilderTM というツールが含まれます (第 7 章「SunPlex Agent Builder」を参照)。Agent Builder はデータサービスのコードを C 言語または Korn シェル (ksh) のどちらでも生成できます。前者の場合は DSDL 関数を使用して、後者の場合は低レベルの API コマンドを使用して、コールバックメソッドを作成します。

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

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

RGM のモデル

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

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

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

リソースタイプ

リソースタイプは、クラスタ上で実行されるソフトウェアアプリケーション、アプリケーションをクラスタリソースとして管理するために RGM がコールバックメソッドとして使用する制御プログラム、およびクラスタの静的な構成の一部を形成するプロパティセットからなります。RGM はリソースタイププロパティを使用して、特定のタイプのリソースを管理します。


注 -

ソフトウェアアプリケーションに加えて、リソースタイプは、他のシステムリソース (ネットワークアドレスなど) も表すことができます。


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

表 A-1 に、リソースタイププロパティのリストを示します。

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

リソース

リソースは、そのリソースタイプからプロパティと値を継承します。さらに、開発者は、リソースタイプ登録ファイルでリソースプロパティを宣言できます。リソースプロパティのリストについては、表 A-2を参照してください。

クラスタ管理者は、リソースタイプ登録 (RTR) ファイルにプロパティを指定することによって、特定のプロパティの値を変更できます。たとえば、プロパティ定義に値の許容範囲を指定しておきます。これにより、プロパティが調節可能なときに、作成時、常時、不可などを指定できます。このような許容範囲内であれば、クラスタ管理者は管理コマンドでプロパティを変更できます。

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

リソースグループ

各リソースはリソースグループに構成する必要があります。RGM はすべてのリソースを、同じノード上にあるグループ、オンライン (online) とオフライン (offline) に分けます。RGM がリソースをグループ、オンラインまたはオフラインに分けるとき、グループ内の個々のリソース上でコールバックメソッドを呼び出します。

リソースグループが現在オンラインであるノードのことを主ノードと呼びます。リソースグループは、自分の主ノードによってマスター (制御) されます。各リソースグループは、クラスタ管理者が設定した独自の Nodelist プロパティを持っており、この Nodelist プロパティがリソースグループのすべての潜在的な主ノード (つまり、マスター) を識別します。

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

RGM は 2 種類のリソースグループ、フェイルオーバー (failover) とスケーラブル (scalable) を定義します。フェイルオーバーリソースグループは、同時に 1 つのノード上だけでオンラインになることができます。一方、スケーラブルリソースグループは、同時に複数のノード上でオンラインになることができます。RGM は、各種類のリソースグループを作成するためのプロパティセットを提供します。このようなプロパティについての詳細は、「フェイルオーバーリソースの実装」「スケーラブルリソースの実装」 を参照してください。

リソースグループのプロパティのリストについては、表 A-3 を参照してください。

RGM

RGM (Resource Group Manager) は rgmd デーモンとして実装され、クラスタの各メンバー (ノード) 上で動作します。rgmd プロセスはすべてお互いに通信し、単一のクラスタ規模の機能として動作します。

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

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

コールバックメソッド

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

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

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

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

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

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

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

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

RMAPI (Resource Management (リソース管理) API)

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

DSDL (Data Service Development Library (データサービス開発ライブラリ))

DSDL は RMAPI 上に構築されており、基盤となっている RGM のメソッド・コールバックモデルを保持しながら、より高いレベルで統合されたフレームワークを提供します。DSDL は、次のようなさまざまなデータサービス開発向けの機能を提供します。

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

DSDL の詳細については、第 5 章「DSDL (データサービス開発ライブラリ)」scds_calls(3HA) のマニュアルページを参照してください。

SunPlex Agent Builder

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

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

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

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

SunPlex Manager

SunPlex Manager は Web ベースのツールであり、次のような作業を行えます。

SunPlex Manager をインストールする方法や SunPlex Manager を使用してクラスタソフトウェアをインストールする方法については、『Sun Cluster 3.0 U1 ソフトウェアのインストール』を参照してください。管理作業については、SunPlex Manager のオンラインヘルプを参照してください。

管理コマンド

RGM オブジェクトを管理するには、scrgadm(1M)scswitch(1M)、および scstat(1M) -g の 3 種類の Sun Cluster コマンドを使用できます。

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

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

scstat(1M) -g コマンドは、すべてのリソースグループとリソースについて、現在の動的な状態を表示します。