| 日本−日本語 |
|
|
|
![]() |
Serviceguard の管理 > 第3章 Serviceguard のソフトウェア構成要素パッケージマネージャの動作 |
|
パッケージは、Serviceguard が、構成済みのアプリケーションを起動したり停止するための仕組みです。パッケージとは、可用性を保証するために Serviceguard によって管理されるサービス、ディスクボリューム、IP アドレスを集めたものです。 クラスタ内の各ノードは、パッケージマネージャのインスタンスを実行します。クラスタコーディネータ上に常駐するパッケージマネージャを、パッケージコーディネータと呼びます。 パッケージコーディネータは、以下のことを行います。
パッケージマネージャは、以下のことを行います。
クラスタでは、3 種類のパッケージを実行できます。最も一般的なのは、フェイルオーバーパッケージです。同時に複数のノードで動作し、フェイルオーバーすることがない、特殊な目的のパッケージもあります。このようなパッケージは、通常、特定のフェイルオーバーパッケージのリソースを管理するために使われます。 フェイルオーバーすることがなく、同時に複数のノードで動作する、2 種類の特殊な目的のパッケージがあります。クラスタ内のすべてのノードで動作するシステムマルチノードパッケージと、クラスタ内のすべてまたは一部のノードで動作するように構成できるマルチノードパッケージです。 システムマルチノードパッケージは、Veritas Cluster Volume Manager (CVM) や Cluster File System (CFS) など、当社が提供するアプリケーション用に予約されています。 この項の残りの部分では、フェイルオーバーパッケージについて説明します。 フェイルオーバーパッケージは、クラスタの起動時に、適切なノード上で実行を開始します。パッケージコーディネータがパッケージを新しいノード上で起動した時点で、パッケージのフェイルオーバーが発生します。パッケージのフェイルオーバーは、既存のパッケージの停止 (サービス、ネットワーク、またはリソースの異常終了の場合)、およびパッケージの新しいインスタンスの起動から成ります。 以下の図を参照してください。 各パッケージは、個別に構成します。フェイルオーバーパッケージを作成するには、パッケージ構成ファイルテンプレートを生成して編集した後、パッケージをクラスタ構成データベースに追加します。第6章 「パッケージとサービスの構成」を参照してください。 従来のパッケージ (A.11.18 より前のバージョンの Serviceguard で使われていた方法で作成されたパッケージ) では、パッケージサービスの実行を管理するパッケージ制御スクリプトも各パッケージに対して作成しなければなりません。詳細は、「従来のパッケージの構成」を参照してください。 カスタマイズされたパッケージ制御スクリプトは、モジュラーパッケージ (Serviceguard A.11.18 で導入された方法で作成されたパッケージ) では必要ありません。これらのパッケージは、Serviceguard と共にインストールされるマスター制御スクリプトにより管理されます。モジュラーパッケージの作成手順については、第6章 「パッケージとサービスの構成」を参照してください。 パッケージ構成ファイルには、パッケージに名前が割り当てられており、パッケージが実行可能なノードのリストが記述されています。 フェイルオーバーパッケージでは、優先順位順にノードがリストされています (すなわち、リストの最初のノードの優先順位が最も高い)。さらに、フェイルオーバーパッケージのファイルには、フェイルオーバー動作を決定する次の 3 つのパラメータ auto_run、failover_policy、failback_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 アドレスを持ちます。 ノード 1 に障害が発生し、パッケージ 1 がノード 2 に移動された状態を 図 3-6 「パッケージの切り替え後」に示します。パッケージ 1 の IP アドレスは、パッケージと共にノード 2 に移動されています。パッケージ 1 は引き続き使用可能で、現在はノード 2 で動作しています。また、ノード 2 はパッケージ 1 のディスクとパッケージ 2 のディスクのどちらにもアクセスできることにも注意してください。 パッケージマネージャによるフェイルオーバーパッケージ実行ノードの選択は、パッケージ構成ファイルに記述されている優先順位リストと、同じくパッケージ構成ファイル中の failover_policy パラメータに基づいています。フェイルオーバー方針により、特定のノードが指定されていないときにパッケージを実行するノードや起動される必要のあるパッケージをパッケージマネージャがどう選択するかを決定します。フェイルオーバー方針により、フェイルオーバーの動作だけではなくパッケージの起動時の動作 (初回の起動も含めて) も決定されます。フェイルオーバー方針には、configured_node (デフォルト) とmin_package_node の 2 つの方針があります。このパラメータは、パッケージ構成ファイルに設定されています。 フェイルオーバー方針にconfigured_node を指定すると、パッケージは、ノードリスト中の使用可能なノードの内、優先順位が最も高いノード上で起動されます。フェイルオーバーが発生すると、パッケージは、ノードリスト中の使用可能なノードの内、次に優先順位の高いノードに移動します。 min_package_node をフェイルオーバー方針に指定すると、パッケージは、実行中の他のパッケージが最も少ないノードで起動されます。(ただし、負荷が最小のノードが選択されるとは限りません。ノード上で実行されているパッケージの数のみで決まります。) min_package_node フェイルオーバー方針を使用すると、1 つのノードをクラスタに対する自動交替用待機ノードとして使用するクラスタを構成できます。以下に示すような 4 つのノードから成るクラスタを考えてみます。パッケージは、すべてどのノードで実行可能で、同一の node_name リストを持っていると仮定します。ただし、例ではパッケージのノード名の順序が異なっていますが、これは必須ではありません。 表 3-1 パッケージ構成データ
クラスタが起動すると、各パッケージは、図 3-7 「交替用待機構成 (フェイルオーバー前)」に示すように実行を開始します。 障害が発生すると、パッケージは図 3-8 「交替用待機構成 (フェイルオーバー後)」のように、実行中のパッケージが最も少ないノードに移動します。この図では、障害はノード 2 に発生しています。
これらのパッケージがconfigured_node フェイルオーバー方針で設定されている場合、クラスタ起動時は、図 3-7 「交替用待機構成 (フェイルオーバー前)」のような状態になりますが、ノード 2 に障害が発生すると、パッケージは図 3-9 「CONFIGURED_NODE 方針パッケージ (フェイルオーバー後)」のようにノード 3 で実行されます。 フェイルオーバー方針にconfigured_node を指定すると、パッケージは、ノードリストの内、優先順位が最も高いノード上で起動します。このとき、このノードは、クラスタのメンバーであることが前提となります。フェイルオーバーが発生すると、パッケージは、ノードリスト中の使用可能なノードの内、次に優先順位の高いノードに移動します。 failback_policy パラメータを使用することにより、一次ノードが利用可能になった時点で、一次ノードからフェイルオーバーされていたパッケージを一次ノードに戻すかどうかを決定することができます。一次ノードとは、パッケージのノードリストの最上位にあるノードのことです。 この方針で考えられる 2 つの値は、automatic およびmanual です。このパラメータは、パッケージ構成ファイルに設定されています。 例として、次の 4 ノード構成を示します。ここでは、failover_policy がconfigured_node に設定されており、failback_policy はautomatic に設定されています。 表 3-2 クラスタのノードリスト例
ノード 1 にシステムパニックが発生した場合、クラスタが再編成された後、pkgA はノード 4 で実行されます。 ノード 1 がリブートされ、クラスタに再結合された時点で、pkgA は自動的にノード 4 上で停止され、ノード 1 上で再起動されます。
旧バージョンの Serviceguard を使って作成したパッケージ構成ファイルを使用する場合は、cmmakepkg コマンドを使って新しいテンプレートを開き、その中にパラメータの値をコピーすることをお勧めします。新しいテンプレート内の、元の構成を作成したときにはなかった選択肢の説明とデフォルト値に目を通してください。たとえば、failover_policy のデフォルトは、configured_node に変わり、failback_policy のデフォルトは、manual に変わっています。 現在のパラメータとそのデフォルト値についての詳細は、第6章 「パッケージとサービスの構成」と、パッケージ構成ファイルのテンプレートを参照してください。 基本的なパッケージリソースには、ノード、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 (Event Monitoring Service) HA モニター (B5736DA) を使うと、パッケージリソースの依存関係として、ディスクや他のリソースの監視を設定できます。EMS を使って監視できるリソース属性の例を以下に示します。
モニターをパッケージリソースの依存関係として構成しておくと、リソースが停止したことを示すイベントが発生した場合、モニターはそのイベントをパッケージマネージャに通知します。これにより、パッケージは引き継ぎノードへフェイルオーバーされます。 また EMS HA モニターを使って、監視されているイベントをターゲットアプリケーション (OpenView IT/Operations など) へ通知して、グラフィック表示したりオペレータへ通知することもできます。詳しくは、『High Availability Monitors ユーザーガイド』を参照してください。 フェイルオーバー動作を決定するために、実行中でないパッケージをどのノード上で自動的に起動するかを指定するパッケージフェイルオーバー方針を指定できます。さらに、一次ノードが復旧したときに、パッケージを一次ノードに自動的に戻すかどうかを決定するフェイルバック方針も指定できます。 下表では、さまざまなタイプのフェイルオーバー動作を示します。また、各動作を決定する設定を Serviceguard Manager (従来のパッケージ用) のオプションまたはパッケージ構成ファイルのパラメータで示します。 表 3-3 パッケージフェイルオーバー動作
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||