概要
PowerHAのネットワーク周りのKeepAliveで使用されるnetmon.cfファイルについて、そしてネットワーク障害発生時のPowerHAの挙動についてまとめてみました。
PowerHA 7.2.8の環境での動作検証、ドキュメントがベースとなっています。また、PowerHA SystemMirror for AIXを対象としており、Linuxでの動作は確認しておりません。
netmon.cfとネットワーク障害監視項目
PowerHAのマニュアルに設定方法などの記載があります。
PowerHA SystemMirror での仮想ネットワーク
https://www.ibm.com/docs/ja/powerha-aix/7.2.x?topic=conditions-virtual-networks-in-powerha-systemmirror
平たく言うと、仮想ネットワーク環境で外部との接続ができていることを確認するために、仮想ネットワーク外のping先を設定しておきましょう、ということですが、実際にどのようなタイミングで使用されているのかについては上記では記載されていません。
また、ネットワーク障害が発生した場合のテークオーバーまでの時間についてのチューニング項目について、ドキュメント内には記載はないのですが、SMITのメニューで「カスタムクラスタ構成」→「クラスタノードとネットワーク」→「クラスタの管理」→「クラスタのハートビート設定」のメニューに「ネットワーク障害検出時刻」という項目があります。
上記SMITメニューの項目についてのマニュアルページは以下になります。
クラスター・ハートビート設定の構成
https://www.ibm.com/docs/ja/powerha-aix/7.2.x?topic=networks-configuring-cluster-heartbeat-settings
検証
AIX 7.3、PowerHA 7.2.8 の2ノードクラスタにおいて、netmon.cfに指定したping先のアドレス(長いのでこの記事では以降、「netmonアドレス」と略します。記事内だけの略称です。)に対してどのようなタイミングでpingが飛ぶのか、また各クラスタノードとnetmonアドレスが不通になった場合の挙動について検証してみました。
結果
検証内容の詳細は割愛しますが概ね以下のような挙動をしていることが確認できました。
-
netmonアドレスに対してpingが飛ぶタイミング
過去のバージョンでは常にpingが飛んでいたこともあったようですが、検証したバージョンではPowerHAサービスの起動時にクラスタの各ノードから一度アクセスがあるのみで、通常時は基本的にpingは飛びません。そして、当然この状態で両ノードからnetmonアドレスに到達できない状態にしても特にPowerHAのイベントは発生しません。
では、どのタイミングでnetmonアドレスにpingを飛ばすかというと、対向ノードのネットワークインターフェースをダウンさせる等、ノード間のネットワーク疎通が確認できなくなったタイミングから10秒後にnetmonアドレスへのpingが飛び始めました。
この10秒については、ドキュメントに特に記載がなく、内部的に固定されているようです。 -
netmonアドレスに障害が発生した際の動き
-
アクティブ/スタンバイの両ノード間のハードビートが可能な場合
上の項目で記載しましたが、前提としてアクティブ/スタンバイの両ノード間でのハードビートが可能な場合はnetmonアドレスに障害が発生しても特にイベントは発生しません。 -
アクティブ/スタンバイの両ノード間のハードビートが不可になった場合
10秒後に両ノードからnetmonアドレスに対してpingを行います。この時に各ノードがnetmonアドレスに到達できるかによって以下のような動きになります。- スタンバイノードからはOKだがアクティブノードからはNGの場合
アクティブノードのローカルネットワーク障害と判断されTKOが発生します。 - アクティブノードからはOKだがスタンバイノードからはNGの場合
スタンバイノードのローカルネットワーク障害と判断されます。この状態でアクティブノードに障害が発生してもスタンバイノードも障害状態なのでTKOは発生しません。 - アクティブノード、スタンバイノードともnetmonアドレスに到達できない場合
グローバルネットワーク障害と判断されTKOは発生しません。
- スタンバイノードからはOKだがアクティブノードからはNGの場合
-
TKO発生までの時間
障害発生後実際にTKOが発生するのは、netmonアドレスにpingが開始される10秒+「ネットワーク障害検出時刻」で設定した時間が経過した後になります。
-
結論として
- 基本的にPowerHA 7.2ではノード間の疎通ができなくなった場合にしかnetmonアドレスへpingを行わない
→ netmonアドレスにはルーターやゲートウェイを設定していることが多いと思いますが、これらの機器のメンテナンス等で一時的に不通になる場合でも、短時間なら特にPowerHA側での対応は必須ではなさそうです。 - ネットワーク障害でTKOが発生するのは「ネットワーク障害検出時刻」+10秒後となる