ページの先頭行へ戻る
PRIMECLUSTER  RMS 導入運用手引書 4.7

1.2.4 制御されるアプリケーションとコントローラオブジェクト

場合によっては1つのアプリケーションが別のアプリケーションを制御するのが望ましい「親」と「子」の関係もあります。たとえば、以下の図の構成のような銀行の現金自動支払機のユーザ業務 (現金自動支払アプリケーション) は、ローカルネットワーク (この場合はネットワーク資源オブジェクト) とデータベースに依存しています。

図1.3 2つの依存オブジェクトを持つ親アプリケーション

たとえば、ネットワークまたはデータベースに何らかの異常が発生した場合、親である現金自動支払アプリケーションはトランザクションを完了することができません。図中のオブジェクトを結ぶ線は、依存関係を示しています。RMSの観点からは、ネットワーク資源とデータベースアプリケーションは同じ構成にする必要があります。すなわち、両者とも現金自動支払アプリケーションを正しく機能させるためにOnline状態でなければならない依存資源として機能する必要があります。

しかしRMSでは、いかなるアプリケーションも他のアプリケーションが使用しているアプリケーションを直接の子として使用することは許されません。RMSは、アプリケーション間の親子関係をコントローラオブジェクト (以降コントローラと記載) を使用して表現します。他の資源オブジェクトと異なり、コントローラにはスクリプトやディテクタがありません。代わりに、Online要求やOffline要求を親アプリケーションから子アプリケーションに伝播させ、子アプリケーションの状態から、自らの状態を判定します。

以下の図は、RMSにおいて、銀行業務の現金自動支払アプリケーション、コントローラ、データベースアプリケーションのすべてがノード1上で稼動している様子を表したものです。ここでの説明および以後の説明のため、図にはアプリケーションとコントローラのみが示されています。ネットワークインタフェースを表す資源オブジェクトは示されていません。

図1.4 RMSにおける制御されるアプリケーションの概念図

注意

  • コントローラオブジェクトによるアプリケーションの制御は、コントローラオブジェクトを使用した運用形態をサポートするPRIMECLUSTERの対応製品のマニュアルに従って使用してください。

  • 制御されるアプリケーションそれぞれに、親アプリケーションの子としてコントローラが必要となります。コントローラはRMSがアプリケーションを制御するために用意されているオブジェクトであり、実システムには対応するものはありません。

制御されるアプリケーションのフェイルオーバ

子 (制御されるアプリケーション) がOfflineまたはFaulted状態となった場合、RMSは親、または子、あるいはすべての依存する資源を他のクラスタノードへ切替えます。実際に切替え時に行われる処理は、コントローラのモード (FollowモードとScalableモード) によって異なります。FollowモードとScalableモードについては、以下に説明します。

1.2.4.1 フォローコントローラ

親 (制御する) アプリケーションと子 (制御される) アプリケーションが同じクラスタノードで動作する必要がある場合は、コントローラをFollowモードに設定します。親が別のクラスタノードに切替えられた場合、Followモードで設定されているアプリケーションとその依存資源も親と同じクラスタノードに切替わります。同様に、子アプリケーションでフェイルオーバが発生した場合、親アプリケーションも同様にフェイルオーバを行います。上記、図1.4 RMSにおける制御されるアプリケーションの概念図のノード1で、現金支払アプリケーションツリーが最初Onlineで、コントローラがFollowモードで稼動するように構成されている場合を考えます。親アプリケーションまたは子アプリケーションのいずれかが、何らかの理由でノード2に切替えられる必要が生じた場合、ツリーの残りの部分は同じようにノード2に切替えられ、以下の図に示す状態になります。

図1.5 Followモード切替えの結果

上の図のフォローコントローラは、子アプリケーションと同じく、親アプリケーションと同じクラスタノードでのみOnline状態になります。フォローコントローラにより、コントローラで制御されている複数のアプリケーションと、アプリケーションで使用されている資源が密に結合され、常に同じノードで稼動することが保証されます。

注意

切替えはRMSグラフ内のオブジェクトの単なる移動ではありません。グラフのノード1に対応する部分のオブジェクトがまずOffline化され、グラフのノード2に対応する部分のオブジェクトがOnline化されます。実際の構成においてRMSが正しいシーケンスを実行することが高可用性運用には非常に重要です。詳細については、"付録A 事前準備"を参照してください。

1.2.4.2 スケーラブルコントローラ

一般的に拡張性とは、資源や負荷の変化にシステム全体が対応できる能力をいいます。RMSスケーラブルコントローラの主な特長の1つは、親アプリケーションと子アプリケーションが別ノードで稼動できるという点です。この機能は、柔軟性に富んだ構成を構築できるようにするだけでなく、複数の資源で不具合が発生した場合に切替えの遅延や業務の停止を防ぐこともできます。

銀行業務の例で考えると、現金自動支払機のアプリケーションはネットワークとデータベースアプリケーションに依存しています。ノード1のファイルシステムに障害が発生し、Offline状態が発生した場合、フォローコントローラの場合はRMSは現金自動支払機およびデータベースをノード2に切替えようとします。しかし、ノード2のネットワークがFaulted状態であった場合、現金自動支払機をOnline状態にすることはできません。これは極端な例ですが、フォローコントローラにのみ依存する構成に対して、高負荷や資源不足がいかに大きな影響を与えるかを示しています。

スケーラブルコントローラを使用した場合は、このような状況にも動的に対応することができます。ネットワークがノード1でOnlineであり、ファイルシステムがノード2でOnlineであれば、以下の図に示すように、データベースは他の影響を受けずに切替えられます。

図1.6 Scalableモードにおける子 (制御される) アプリケーションの切替え

逆に、ネットワークの停止が原因となって、ノード1でデータベースがOnline状態のまま、RMSによって現金自動支払機がノード2に切替えられた例が、以下の図の状態です。

図1.7 Scalableモードにおける親 (制御する) アプリケーションの切替え

1つのアプリケーションが複数のノードで実行できる場合、RMSでは、1つのアプリケーションにつき、クラスタ内では1つのインスタンスしかOnlineになることができません。このため、userApplicationは一度に1つのノードでしか実行できません。ただし、Controllerオブジェクトにはこのような制限がありません。

図1.6 Scalableモードにおける子 (制御される) アプリケーションの切替え図1.7 Scalableモードにおける親 (制御する) アプリケーションの切替えには、コントローラの状態は示していませんが、実際には、実行可能なノード上の各Scalableモードの子アプリケーションごとに、コントローラのインスタンスがOnline状態になっています。

1.2.4.3 コントローラに関する補足説明

FollowモードとScalableモードは、排他関係にあり、子アプリケーションのコントローラは、FollowまたはScalableモードのいずれかで動作し、両方で動作することはできません。RMS Wizard Toolsでは、各コントローラ構成に矛盾が生じるようなものを許していません。

1つの親アプリケーションは複数の子アプリケーションを持つことができますが、Wizard Tools では、すべての子で同じコントローラタイプにする必要があります。Followモードを使用している場合、子のそれぞれに個別のフォローコントローラが必要です。Scalableモードの場合は、複数の子で1つのスケーラブルコントローラを使用します。たとえば、銀行業務の例だと、現金自動支払機アプリケーションがさらに現金自動支払機 (ATM) に制御されるアプリケーションを持つ場合もあります。フォローグラフとスケーラブルグラフの違いを以下の図に示します。

図1.8 複数の子を持つコントローラ構造

詳細については、"2.3 スケーラブルコントローラ"を参照してください。