本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
Serviceguard の管理 > 第3章 Serviceguard のソフトウェア構成要素

パッケージマネージャの動作

≫ 

テクニカル ドキュメント

PDF版
関連ドキュメント
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

パッケージは、Serviceguard が、構成済みのアプリケーションを起動したり停止するための仕組みです。パッケージとは、可用性を保証するために Serviceguard によって管理されるサービス、ディスクボリューム、IP アドレスを集めたものです。

クラスタ内の各ノードは、パッケージマネージャのインスタンスを実行します。クラスタコーディネータ上に常駐するパッケージマネージャを、パッケージコーディネータと呼びます。

パッケージコーディネータは、以下のことを行います。

  • パッケージを実行、停止、移動する時期と場所の決定

パッケージマネージャは、以下のことを行います。

  • パッケージとそのサービスを実行したり停止する制御スクリプトの実行

  • 監視されているリソースの状態の変化への対応

パッケージのタイプ

クラスタでは、3 種類のパッケージを実行できます。最も一般的なのは、フェイルオーバーパッケージです。同時に複数のノードで動作し、フェイルオーバーすることがない、特殊な目的のパッケージもあります。このようなパッケージは、通常、特定のフェイルオーバーパッケージのリソースを管理するために使われます。

フェイルオーバーしないパッケージ

フェイルオーバーすることがなく、同時に複数のノードで動作する、2 種類の特殊な目的のパッケージがあります。クラスタ内のすべてのノードで動作するシステムマルチノードパッケージと、クラスタ内のすべてまたは一部のノードで動作するように構成できるマルチノードパッケージです。 システムマルチノードパッケージは、Veritas Cluster Volume Manager (CVM) や Cluster File System (CFS) など、当社が提供するアプリケーション用に予約されています。

この項の残りの部分では、フェイルオーバーパッケージについて説明します。

フェイルオーバーパッケージ

フェイルオーバーパッケージは、クラスタの起動時に、適切なノード上で実行を開始します。パッケージコーディネータがパッケージを新しいノード上で起動した時点で、パッケージのフェイルオーバーが発生します。パッケージのフェイルオーバーは、既存のパッケージの停止 (サービス、ネットワーク、またはリソースの異常終了の場合)、およびパッケージの新しいインスタンスの起動から成ります。

以下の図を参照してください。

図 3-4 フェイルオーバー中に移動するパッケージ

フェイルオーバー中に移動するパッケージ
フェイルオーバーパッケージの構成

各パッケージは、個別に構成します。フェイルオーバーパッケージを作成するには、パッケージ構成ファイルテンプレートを生成して編集した後、パッケージをクラスタ構成データベースに追加します。第6章 「パッケージとサービスの構成」を参照してください。

従来のパッケージ (A.11.18 より前のバージョンの Serviceguard で使われていた方法で作成されたパッケージ) では、パッケージサービスの実行を管理するパッケージ制御スクリプトも各パッケージに対して作成しなければなりません。詳細は、「従来のパッケージの構成」を参照してください。

カスタマイズされたパッケージ制御スクリプトは、モジュラーパッケージ (Serviceguard A.11.18 で導入された方法で作成されたパッケージ) では必要ありません。これらのパッケージは、Serviceguard と共にインストールされるマスター制御スクリプトにより管理されます。モジュラーパッケージの作成手順については、第6章 「パッケージとサービスの構成」を参照してください。

フェイルオーバーパッケージを実行/停止する時期と場所の決定

パッケージ構成ファイルには、パッケージに名前が割り当てられており、パッケージが実行可能なノードのリストが記述されています。

フェイルオーバーパッケージでは、優先順位順にノードがリストされています (すなわち、リストの最初のノードの優先順位が最も高い)。さらに、フェイルオーバーパッケージのファイルには、フェイルオーバー動作を決定する次の 3 つのパラメータ auto_runfailover_policyfailback_policy が記述されています。

フェイルオーバーパッケージの切り替え動作

auto_run パラメータ (Serviceguard の初期のバージョンでは PKG_SWITCHING_ENABLED パラメータ) は、クラスタ起動時のフェイルオーバーパッケージのデフォルトのグローバル切り替え属性、つまりクラスタの起動時にパッケージを自動的に起動させるかどうか、また障害が発生した場合パッケージを自動的に別のノードで再起動させるかどうかを定義します。各パッケージの切り替え属性は、クラスタの起動後に、cmmodpkg コマンドで一時的に設定できます。リブートすると、構成した値が復元されます。

このパラメータは、パッケージ構成ファイルに設定されています。

パッケージ切り替えでは、フェイルオーバーパッケージとそれに関連付けられた IP アドレスを新しいシステムに移動します。新しいシステムでは、すでに同じサブネットが適切に構成され、動作している必要があります。そうでなければ、パッケージは起動されません。

パッケージがフェイルオーバーすると、TCP 接続が切断されます。接続を回復するために TCP アプリケーションは再度接続する必要があります。ただし、これは自動的に処理されません。パッケージが複数のサブネットに依存している場合、パッケージを起動する前に、すべてのサブネットがターゲットノードで使用可能でなければならないので注意してください。

パッケージがリソースや別のパッケージに依存している場合には、ターゲットノードでパッケージを起動する前に、依存関係が満たされている必要があります。

再配置可能 IP アドレスの切り替えを 図 3-5 「パッケージの切り替え前」図 3-6 「パッケージの切り替え後」に示します。図 3-5 「パッケージの切り替え前」は、ノード 1 で動作中のパッケージ 1 とノード 2 で動作中のパッケージ 2 を持つ 2 つのノードのクラスタを切り替え前の状態で示します。ユーザーは、使用するパッケージの IP アドレスを使ってノードに接続します。各ノードはノードに関連する定常 IP アドレスを持ち、各パッケージはパッケージに関連する IP アドレスを持ちます。

図 3-5 パッケージの切り替え前

パッケージの切り替え前

ノード 1 に障害が発生し、パッケージ 1 がノード 2 に移動された状態を 図 3-6 「パッケージの切り替え後」に示します。パッケージ 1 の IP アドレスは、パッケージと共にノード 2 に移動されています。パッケージ 1 は引き続き使用可能で、現在はノード 2 で動作しています。また、ノード 2 はパッケージ 1 のディスクとパッケージ 2 のディスクのどちらにもアクセスできることにも注意してください。

図 3-6 パッケージの切り替え後

パッケージの切り替え後
フェイルオーバー方針

パッケージマネージャによるフェイルオーバーパッケージ実行ノードの選択は、パッケージ構成ファイルに記述されている優先順位リストと、同じくパッケージ構成ファイル中の failover_policy パラメータに基づいています。フェイルオーバー方針により、特定のノードが指定されていないときにパッケージを実行するノードや起動される必要のあるパッケージをパッケージマネージャがどう選択するかを決定します。フェイルオーバー方針により、フェイルオーバーの動作だけではなくパッケージの起動時の動作 (初回の起動も含めて) も決定されます。フェイルオーバー方針には、configured_node (デフォルト) とmin_package_node の 2 つの方針があります。このパラメータは、パッケージ構成ファイルに設定されています。

フェイルオーバー方針にconfigured_node を指定すると、パッケージは、ノードリスト中の使用可能なノードの内、優先順位が最も高いノード上で起動されます。フェイルオーバーが発生すると、パッケージは、ノードリスト中の使用可能なノードの内、次に優先順位の高いノードに移動します。

min_package_node をフェイルオーバー方針に指定すると、パッケージは、実行中の他のパッケージが最も少ないノードで起動されます。(ただし、負荷が最小のノードが選択されるとは限りません。ノード上で実行されているパッケージの数のみで決まります。)

自動交替用待機

min_package_node フェイルオーバー方針を使用すると、1 つのノードをクラスタに対する自動交替用待機ノードとして使用するクラスタを構成できます。以下に示すような 4 つのノードから成るクラスタを考えてみます。パッケージは、すべてどのノードで実行可能で、同一の node_name リストを持っていると仮定します。ただし、例ではパッケージのノード名の順序が異なっていますが、これは必須ではありません。

表 3-1 パッケージ構成データ

パッケージ名

NODE_NAME リスト

FAILOVER_POLICY

pkgA

ノード 1、ノード 2、ノード 3、ノード 4

MIN_PACKAGE_NODE

pkgB

ノード 2、ノード 3、ノード 4、ノード 1

MIN_PACKAGE_NODE

pkgC

ノード 3、ノード 4、ノード 1、ノード 2

MIN_PACKAGE_NODE

 

クラスタが起動すると、各パッケージは、図 3-7 「交替用待機構成 (フェイルオーバー前)」に示すように実行を開始します。

図 3-7 交替用待機構成 (フェイルオーバー前)

交替用待機構成 (フェイルオーバー前)

障害が発生すると、パッケージは図 3-8 「交替用待機構成 (フェイルオーバー後)」のように、実行中のパッケージが最も少ないノードに移動します。この図では、障害はノード 2 に発生しています。

図 3-8 交替用待機構成 (フェイルオーバー後)

交替用待機構成 (フェイルオーバー後)
注記: min_package_node 方針を使用している場合、ノード 2 を修理してクラスタに復帰させた時点で、ノード 2 は実行するパッケージ数が最も少ないため、新しい待機ノードになります。

これらのパッケージがconfigured_node フェイルオーバー方針で設定されている場合、クラスタ起動時は、図 3-7 「交替用待機構成 (フェイルオーバー前)」のような状態になりますが、ノード 2 に障害が発生すると、パッケージは図 3-9 「CONFIGURED_NODE 方針パッケージ (フェイルオーバー後)」のようにノード 3 で実行されます。

図 3-9 CONFIGURED_NODE 方針パッケージ (フェイルオーバー後)

CONFIGURED_NODE 方針パッケージ (フェイルオーバー後)

フェイルオーバー方針にconfigured_node を指定すると、パッケージは、ノードリストの内、優先順位が最も高いノード上で起動します。このとき、このノードは、クラスタのメンバーであることが前提となります。フェイルオーバーが発生すると、パッケージは、ノードリスト中の使用可能なノードの内、次に優先順位の高いノードに移動します。

フェイルバック方針

failback_policy パラメータを使用することにより、一次ノードが利用可能になった時点で、一次ノードからフェイルオーバーされていたパッケージを一次ノードに戻すかどうかを決定することができます。一次ノードとは、パッケージのノードリストの最上位にあるノードのことです。

この方針で考えられる 2 つの値は、automatic およびmanual です。このパラメータは、パッケージ構成ファイルに設定されています。

例として、次の 4 ノード構成を示します。ここでは、failover_policyconfigured_node に設定されており、failback_policyautomatic に設定されています。

図 3-10 自動フェイルバック用構成 (フェイルオーバー前)

自動フェイルバック用構成 (フェイルオーバー前)

表 3-2 クラスタのノードリスト例

パッケージ名

NODE_NAME リスト

FAILOVERPOLICY

FAILBACK POLICY

pkgA

ノード 1、ノード 4

CONFIGURED_NODE

AUTOMATIC

pkgB

ノード 2、ノード 4

CONFIGURED_NODE

AUTOMATIC

pkgC

ノード 3、ノード 4

CONFIGURED_NODE

AUTOMATIC

 

ノード 1 にシステムパニックが発生した場合、クラスタが再編成された後、pkgA はノード 4 で実行されます。

図 3-11 自動フェイルバック構成 (フェイルオーバー後)

自動フェイルバック構成 (フェイルオーバー後)

ノード 1 がリブートされ、クラスタに再結合された時点で、pkgA は自動的にノード 4 上で停止され、ノード 1 上で再起動されます。

図 3-12 自動フェイルバック構成 (ノード 1 再起動後)

自動フェイルバック構成 (ノード 1 再起動後)
注記: failback_policyautomatic に設定した場合、業務上重要な時間帯にパッケージのフェイルバックが発生しアプリケーションが使用できなくなるおそれがあります。自動フェイルバックを使用する場合は、パッケージを再び一次ノードに切り替えている間このパッケージによるサービスが一時的に使用できなくなるため、このサービスを使用しない時期が来るまでパッケージの一次ノードをクラスタに追加するのを待つことができます。
フェイルオーバー方針とフェイルバック方針の組合せ

failover_policymin_package_node と、failback_policyautomatic を組み合わせて使用すると、予測していなかったノード上でパッケージが実行される場合があります。これは、フェイルオーバーが発生したときに、パッケージの実行数が最も少ないノードが毎回同じノードであるとは限らないためです。

古いパッケージ構成ファイルの使用

旧バージョンの Serviceguard を使って作成したパッケージ構成ファイルを使用する場合は、cmmakepkg コマンドを使って新しいテンプレートを開き、その中にパラメータの値をコピーすることをお勧めします。新しいテンプレート内の、元の構成を作成したときにはなかった選択肢の説明とデフォルト値に目を通してください。たとえば、failover_policy のデフォルトは、configured_node に変わり、failback_policy のデフォルトは、manual に変わっています。

現在のパラメータとそのデフォルト値についての詳細は、第6章 「パッケージとサービスの構成」と、パッケージ構成ファイルのテンプレートを参照してください。

Event Monitoring Service の使用

基本的なパッケージリソースには、ノード、LAN インタフェース、サービスがあります。サービスはアプリケーション内の個々のプロセスです。これらはすべて Serviceguard によって直接監視されます。また、Event Monitoring Service のレジストリを使って、追加モニターを構成することもできます。このレジストリにより、他のソフトウェア構成要素が Serviceguard の代わりにリソースを監視できます。他のソフトウェア製品で現在提供されているモニターには、EMS (Event Monitoring Service) HA Monitors および ATM Monitor があります。

監視対象リソースをパッケージ内に構成した場合、パッケージマネージャはリソースレジストラを呼び出して、このリソースに対する外部モニターを起動します。リソースの構成によって、ノードがクラスタに追加されたとき、またはパッケージが起動される直前にモニターが起動されます。モニターはメッセージを Serviceguard へ返送し、Serviceguard はパッケージを起動する前にリソースが使用可能かどうかを確認します。さらに、パッケージ起動後にリソースが使用不可能になった場合、パッケージマネージャはパッケージを別のノードへフェイルオーバーするか、他の処置を実行します。

パッケージの監視対象リソースを指定するには、Serviceguard Manager を使うか、HP-UX のコマンド行でコマンド/opt/resmon/bin/resls を使います。詳細については、resls(1m) のマンページを参照してください。

EMS HA モニターの使用

別途提供される EMS (Event Monitoring Service) HA モニター (B5736DA) を使うと、パッケージリソースの依存関係として、ディスクや他のリソースの監視を設定できます。EMS を使って監視できるリソース属性の例を以下に示します。

  • 論理ボリュームの状態

  • 物理ボリュームの状態

  • システム負荷

  • ユーザーの数

  • ファイルシステムの使用状態

  • LAN の状態

モニターをパッケージリソースの依存関係として構成しておくと、リソースが停止したことを示すイベントが発生した場合、モニターはそのイベントをパッケージマネージャに通知します。これにより、パッケージは引き継ぎノードへフェイルオーバーされます。

また EMS HA モニターを使って、監視されているイベントをターゲットアプリケーション (OpenView IT/Operations など) へ通知して、グラフィック表示したりオペレータへ通知することもできます。詳しくは、『High Availability Monitors ユーザーガイド』を参照してください。

パッケージフェイルオーバー動作の選択

フェイルオーバー動作を決定するために、実行中でないパッケージをどのノード上で自動的に起動するかを指定するパッケージフェイルオーバー方針を指定できます。さらに、一次ノードが復旧したときに、パッケージを一次ノードに自動的に戻すかどうかを決定するフェイルバック方針も指定できます。

下表では、さまざまなタイプのフェイルオーバー動作を示します。また、各動作を決定する設定を Serviceguard Manager (従来のパッケージ用) のオプションまたはパッケージ構成ファイルのパラメータで示します。

表 3-3 パッケージフェイルオーバー動作

切り替え動作

Serviceguard Manager のオプション

構成ファイルのパラメータ

サービス、ネットワークまたは EMS の障害の検出後、または構成されているリソースの依存関係が満たされなかった場合に、普通にパッケージを切り替える。切り替えが行われる前に、停止スクリプトが実行される (デフォルト)。

  • すべてのサービスで Service Failfast を設定しない (デフォルト)

  • Node Fail Fast を設定しない (デフォルト)

  • パッケージの Auto Run を設定 (デフォルト)

  • node_fail_fast_enabledno に設定 (デフォルト)

  • すべてのサービスの service_fail_fast_enabled no に設定 (デフォルト)

  • パッケージの auto_runyes に設定 (デフォルト)

パッケージは、アクティブなパッケージが最も少ないノードにフェイルオーバーする。

  • フェイルオーバー方針として最小パッケージノードを設定

  • failover_policymin_package_node に設定

パッケージは、ノードリスト上の次のノードにフェイルオーバーする (デフォルト)。

  • フェイルオーバー方針として構成ノードを設定 (デフォルト)

  • failover_policyconfigured_node に設定 (デフォルト)

一次ノードが使用可能であり、一次ノード以外のノードでパッケージが実行されている場合、パッケージは自動的に停止し、一次ノードで再起動される。

  • フェイルバック方針として自動を設定

  • failback_policyautomatic に設定

パッケージが一次ノード以外のノードで実行されている場合、必要であれば、パッケージは手動で一次ノードに戻される。

  • フェイルバック方針として手動を設定 (デフォルト)

  • フェイルオーバー方針として構成ノードを設定 (デフォルト)

  • failback_policymanual に設定 (デフォルト)

  • failover_policyconfigured_node に設定 (デフォルト)

特定のサービスで障害が発生した場合、システムリセット (シャットダウン手順を実行しない即時停止) に続いて、ノード上のすべてのパッケージを切り替える。システムリセットの実行前にシステムのリブートが行われる。停止スクリプトは実行されない。

  • 特定のサービスの Service Failfast を設定

  • すべてのパッケージの Auto Run を設定

  • 特定のサービスの service_fail_fast_enabledyes に設定

  • すべてのパッケージの auto_runyes に設定

サービスで障害が発生した場合、ノード上のすべてのパッケージをシステムリセットに続いて切り替える。システムリセットの実行前にまずシステムのリブートが行われる。

  • すべてのサービスの Service Failfast を設定

  • すべてのパッケージの Auto Run を設定

  • すべてのサービスの service_fail_fast_enabledyes に設定

  • すべてのパッケージの auto_runyes に設定

 

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1995-2007 Hewlett-Packard Development Company, L.P.