管理の手引き


HACMP ES イベント・モニターおよびユーザー定義事象

ユーザー定義事象の例には、 ページング・スペースが一定の満了状態に達するときに、 AIX 物理ノードで DB2 データベース区画をシャットダウンする事象や、 特定のノードで処理が停止する場合に、 DB2 データベース区画を再始動したりフェールオーバー操作を開始したりする事象が挙げられます。 データベース区画のシャットダウン、 およびページング・スペースを解放するためのトランザクションの打ち切りといったユーザー定義事象を説明する例が samples サブディレクトリーにあります。

/user/sbin/cluster/events/rules.hacmprd 規則ファイルには HACMP 事象が含まれています。 このファイルの各事象記述には、 以下の 9 つの構成要素があります。

たとえ行を使用しない場合でも、 事象定義では各オブジェクトに 1 行が必要となります。 これらの行が削除されると、 HACMP ES クラスター管理プログラムは事象定義を適切に解析できなくなり、 これが原因でシステムがハングする可能性があります。 「#」で始まる行は注釈行として扱われます。
注:規則ファイルは、注釈行を数えないで、 事象定義ごとに 9 行だけを必要とします。 規則ファイルの最後にユーザー定義の事象を追加する場合、 ファイルの末尾の不要な空白行を削除することが重要です。 削除しなければ、ノードがハングします。

以下は node_up の事象定義の例です。

   ##### Beginning of the Event Definition: node_up
   #
   TE_JOIN_NODE
   0
   /usr/sbin/cluster/events/node_up.rp
   2
   0
   # 6) Resource variable - only used for event management events
   # 7) Instance vector - only used for event management events
   # 8) Predicate  - only used for event management events
   # 9) Rearm predicate - only used for event management events
   ###### End of the Event Definition: node_up

この例は、 rules.hacmprd ファイルにある事象定義の 1 つです。 この例では、 node_up 事象が発生すると、 回復プログラム /usr/sbin/cluster/events/node_up.rp が呼び出されます。 値は、状態、回復タイプ、および回復レベルについて指定されます。 ここでは、リソース変数、インスタンス変数、述部、 およびリアーム述部用に 4 つの空白行があります。

非標準 HACMP ES 事象に対応するために、 他の事象を定義することができます。 たとえば、/tmp ファイルが 90 パーセント以上いっぱいになった事象を定義するには、 rules.hacmprd ファイルを修正する必要があります。

IBM AIX 並列システム・サポート・プログラム (PSSP) では、 多くの事象が事前定義されています。 これらの事象は、(ユーザー定義事象内で使用されるときに) 次のように活用できます。

  1. クラスターを停止する。
  2. rules.hacmprd ファイルを編集する。 ファイルを修正する前にバックアップしてください。 事前定義した PSSP 事象を追加します。 クラスター内の全ノード間で同期点を必要とする場合は、 回復プログラムで barrier コマンドを使用します。 (バリア・コマンドおよび回復プログラムの同期については、 HACMP 概念、インストール、管理の手引きで詳細をお読みください。)
  3. クラスターを再始動する。 クラスター管理プログラムの始動時に rules.hacmprd ファイルがメモリーに保管されます。 変更を正確に実装するには、すべてのクラスターを再始動します。 クラスター内に矛盾する規則があってはなりません。
  4. クラスター管理プログラムは、 rules.hacmprd ファイルにあるすべての事象を使用します。

HACMP ES は PSSP 事象検出を使用して、ユーザー定義事象を取り扱います。 PSSP 事象管理サブシステムは、 さまざまなハードウェアおよびソフトウェア・リソースをモニターして、 包括的な事象検出を提供します。

リソース状態は、リソース変数によって表されます。 リソース条件は、述部と呼ばれる式によって表されます。

事象管理は、リソース・モニターからリソース変数を受け取ります。 リソース・モニターは、特定のリソースの状態を観察し、 その状態をいくつかのリソース変数に変換します。 これらの変数は周期的に事象管理に渡されます。 事象管理は、 rules.hacmprd で HACMP ES クラスター管理プログラムが指定した述部を各リソース変数に適用します。 述部が真として評価されると、事象が生成されて、 クラスター管理プログラムに送信されます。 クラスター管理プログラムは票決プロトコルを開始し、 回復プログラム内の「ノード・セット」で指定されたノード・セットで、 (事象優先順位にしたがって) 回復プログラム・ファイル (xxx.rp) が実行されます。

回復プログラム・ファイル (xxx.rp) は、 1 つまたは複数のプログラム行でできています。 各行は、次の書式で宣言されています。

   relationship     command_to_run     expected_status     NULL

行の各値の間には少なくとも 1 つのスペースがなければなりません。 「Relationship」は、 どの種類のノードでどのプログラムを実行するかを決定する値です。 次の 3 つの関係タイプがサポートされています。

「Command_to_run」は引用区切りストリングで、 実行可能プログラムに対する全パスが指定される場合もあれば、 指定されない場合もあります。 HACMP で送達される事象スクリプトでは、相対パス定義を使用できます。 他のスクリプトまたはプログラムでは、 HACMP 事象スクリプトと同じディレクトリーにある場合でも、 全パスの指定をしなければなりません。

「Expected_states」は、指定コマンドまたはプログラムの戻りコードです。 このコードは整数値または「x」です。 「x」を使用すると、クラスター管理プログラムは戻りコードを無視します。 他のすべてのコードでは、予期された戻りコードと等しくなければなりません。 等しくならない場合、 クラスター管理プログラムは事象障害を検出します。 この事象を処理すると、 (手作業による介入で) 回復が行われるまで、 処理が「停止」します。 手作業による介入がなければ、 ノードは他のノードとの同期を図れません。 クラスター管理プログラムが全ノードを制御するには、 全ノード間の同期が必須です。

「NULL」は、将来の利用のために予約されたフィールドです。 「NULL」という語は、バリア行を除いて、個々の行の末尾に表示されます。 2 つのバリア・コマンドの間、または最初のコマンドの前で複数の回復コマンドを指定すると、 ノード自身およびノード間で回復コマンドが並列処理されます。

バリア・コマンドは、全クラスター・ノード間の全コマンドを同期させるために使用します。 ノードが回復プログラムのバリア・ステートメントをヒットすると、 クラスター管理プログラムはそのノードでバリア・プロトコルを開始します。 バリア・プロトコルは 2 フェーズ・プロトコルなので、 すべてのノードが回復プログラム内のバリアに遭遇し、 プロトコルの承認を「票決した」ときに、 両方のフェーズが完了したことがすべてのノードに通知されます。

次のようにプロセスを要約することができます。

  1. (事前定義事象の) グループ・サービス /ES または (ユーザー定義事象の) 事象管理のいずれかが、 事象について HACMP ES クラスター管理プログラムに通知します。
  2. クラスター管理プログラムは rules.hacmprd ファイルを読み取り、 事象にマップされた回復プログラムを判別します。
  3. クラスター管理プログラムは、 一連の回復コマンドから成る回復プログラムを実行します。
  4. 回復プログラムは、シェル・スクリプトまたは 2 進コマンドである回復コマンドを実行します。 (HACMP for AIX では、 回復コマンドは、HACMP 事象スクリプトと同じです。)
  5. クラスター管理プログラムは、 回復コマンドから戻り状況を受け取ります。 予期しない状況により、 (smit cm_rec_aids または /usr/sbin/cluster/utilities/clruncmd コマンドによって) 手作業の介入が実行されるまで、 クラスターは「停止」されます。

HACMP ES スクリプト・ファイル

DB2 UDB EEE には、 フェールオーバー回復およびユーザー定義事象の以下のサンプル・スクリプトが組み込まれています。 スクリプト・ファイルは、 $INSTNAME/sqllib/samples/hacmp/es ディレクトリーにあります。 このスクリプトは、 「現状のまま」でも動作し、 また回復アクションをカスタマイズすることもできます。

回復スクリプトは、回復操作を実行する各ノードにインストールする必要があります。 スクリプト・ファイルは、 SP コントロール・ワークステーションまたは他の指定 SP ノードから集中方式でインストールすることができます。

  1. スクリプトを $INSTNAME/sqllib/samples/hacmp/es ディレクトリーから、 SP コントロール・ワークステーションか、 pcp および pexec コマンドを実行できる別の SPノードにコピーする。 これらのコマンドはインストール操作の際に必要です。
  2. フェールオーバー構成で (BUFFPAGE などの) キー・パラメーターを設定することにより、 実際の環境に合わせて reg.parms.SAMPLE ファイルおよび failover.parms.SAMPLE ファイルをカスタマイズする。 相互引き受け構成の場合、 一般にフェールオーバーの設定は、 通常の設定サイズの半分またはそれ以下に調整されます。 また、独自の名前 (「SAMPLE」ではない) で名前変更したこれらのファイルのコピーも使用します。
  3. 必要に応じて、rc.db2pe ファイルで 5 つのパラメーター、 NFS_RETRIES、START_RETRIES、MOUNT_NFS、STOP_RETRIES、および FAILOVER をカスタマイズする。 大半の実装では、 再試行およびフェールオーバーの設定で十分でしょう。 MOUNT_NFS 設定は、NFS サーバー可用性のパッケージを使用するかどうかに応じて構成します。 この設定は、rc.db2pe をマウントし、 DB2 インスタンス所有者の NFS ホーム・ディレクトリーを自分で検証する場合に設定してください。 FAILOVER パラメーターを「YES」に設定すると、 db2_proc_restart が呼び出され、 DB2 データベース区画の再始動が試行されます。 再始動操作が失敗すると、 HACMP はフェールオーバーによりシャットダウンします。
  4. 事象ファイルで db2_paging_actiondb2_proc_recoverynfs_auto_recovery をカスタマイズする。 pwq を編集して、 DB2 インスタンス所有者に変更します。 db2_paging_action をカスタマイズして、 ページング・スペースの使用量が 90 パーセントを超えた場合に実行するアクションを指定します。 (この処置が実行されない場合、DB2 データベース区画は停止します。) 回復アクションがさらに必要であれば、スクリプトを修正します。
  5. db2_inst_ha を使用して、 指定したノードにスクリプトと事象をインストールする。 (これらのノードには、インストール前に HACMP ES をインストールしておく必要があります。) db2_inst_ha の構文は、次のとおりです。

       db2_inst_ha $INSTNAME/sqllib/samples/hacmp/es <nodelist> <DATABASENAME>
       ここで、
          $INSTNAME/sqllib/samples/hacmp/es は、スクリプトおよび事象がある
             ディレクトリーを表します。
          <nodelist> は、ノードの pcp または pexec スタイルを表します。
             たとえば、1-16 または 1、2、3、4 です。
          <DATABASENAME> は、通常およびフェールオーバーのパラメーター・
             ファイルに使用するデータベースの名前です。
    

    reg.parms.SAMPLE および failover.parms.SAMPLE は各ノードにコピーされ、 reg.parms.DATABASENAME に名前変更されます。 db2_inst_ha/usr/bin の各ノードにファイルをコピーし、 次の HACMP 事象ファイルを更新します。

       /usr/sbin/cluster/events/rules.hacmprd
       /usr/sbin/cluster/events/network_up_complete
       /usr/sbin/cluster/events/network_down_complete
    
  6. HACMP を使用してシステムとスクリプトを構成する。
  7. create_db2_events コマンドを使用して、 問題管理リソース (pman) および SP GUI 透視図のモニター事象をインストールする。 透視図では、構成およびカスタマイズがさらに必要です。 透視図の詳細については、PSSP 管理の手引きを参照してください。
  8. ha_db2stop コマンドを使用して、 HACMP ES フェールオーバー回復を起こさずにデータベース区画を遮断します。 このコマンドを使用するには、 ファイルをデータベース・ユーザーのホーム・ディレクトリーにコピーし、 そのユーザーに許可と所有権が設定されていることを確認してください。 フェールオーバー回復なしでデータベースを停止するには、 そのユーザーとして次のように入力します。

       ha_db2stop
    

    注:コマンドが戻るのを待機することが必要です。 ctrl-C 割り込みを使用して終了するか、処理を強制終了すると、 フェールオーバー回復を早まって再度使用可能にしてしまい、 一部のデータ区画が停止しない可能性があります。

HACMP ES を使用した DB2 回復スクリプトの操作

HACMP ES は、次の方法で DB2 回復スクリプトを呼び出します。

注:すべての事象は、SP 問題管理および SP 透視図 GUI を使用してモニターできます。

他のスクリプト・ユーティリティー

他にも、以下のようなスクリプト・ユーティリティーを使用できます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]