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

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

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

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

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


注 –

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


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

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

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

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

図 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 は各クラスタノード上でデーモンとして動作し、事前構成したポリシーに従って、選択したノードまたはゾーン上のリソースを自動的に起動および停止します。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 種類のリソースグループ、フェイルオーバーとスケーラブルを定義します。フェイルオーバーリソースグループは、いつも 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 上に構築されるより高いレベルのライブラリを提供します。さらに、ユーザーが指定する基本的な情報からデータサービスを自動的に生成するツール、Sun Cluster 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) のマニュアルページを参照してください。

Sun Cluster 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) とコマンドセットの両方を提供します。

Sun Cluster Manager

Sun Cluster Manager (旧名 SunPlexTM Manager) は、以下の作業を実行できる Web ベースのツールです。

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

clsetup ユーティリティー

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

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

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

管理コマンド

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

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