FortiGate HA フェイルオーバー 冗長化 override

FortiGateのHA(High Availability)構成では、障害時に自動で切り替わることで可用性を確保できます。しかし、計画作業中のケーブル抜去やポートメンテナンス時に想定外のフェイルオーバーが発生するケースがあります。

本記事では、HA構成においてケーブル抜去時にフェイルオーバーが発生した原因と対策を整理します。特に、監視ポートのリンク状態・HAのage・override設定の関係を理解したい方に参考になる内容です。検証結果ベースで解説します。

🚨 この記事の最重要ポイント 監視ポートを抜去するとHA内部のageがリセットされる仕様があります。これにより「リンク本数が同じになるだけだからActiveは維持されるだろう」という想定が外れ、意図しないフェイルオーバーが発生する可能性があります。
👷 現場での体験談

本番環境のFortiGate HA構成で内部ポートのケーブル抜去試験を実施しました。「切り替わりが起きないことを確認する試験」のつもりで実施したのに、まさにその瞬間にフェイルオーバーが発生してしまいました。

原因を調査すると、監視ポートのageリセットという仕様が絡んでいたことがわかりました。それまでHAの選出ロジックをpriorityとリンク数だけで理解していたため、ageが重要な判定要素になっていることを完全に見落としていました。この経験を機に、HA設計では選出ロジックを一通り理解してから検証を組む必要があると痛感しました。

FortiGate HAケーブル抜去フェイルオーバー図
HA監視ポートのケーブル抜去でフェイルオーバーが発生する原因とoverride設定の対策
FortiGate HAケーブル抜去フェイルオーバー図
HA監視ポートのケーブル抜去でフェイルオーバーが発生する原因とoverride設定の対策

FortiGate HAの基本概念

FortiGate HAは主にActive-Passive(A-P)Active-Active(A-A)の2モードがあります。本記事ではActive-Passiveを前提に解説します。

🟢 Active機
実際にトラフィックを処理する。設定変更・ポリシー適用はこちらで行う
🔵 Standby機
Active機の状態を常に同期。Active機の障害を検知すると自動でActive昇格
🔗 HAリンク
2台間の状態同期・ハートビートに使用する専用リンク。通常は2本推奨
👁️ 監視ポート
リンクダウンをHA判定に使用するポート。設定次第でフェイルオーバーの引き金になる

ケーブル抜去時にフェイルオーバーが発生した事象

HA構成のFortiGateで、切り替わりを防ぐことを前提に内部ポートのケーブル抜去試験を実施しました。しかし、監視対象として設定されていたポートを抜去したタイミングでStandby機へActiveが切り替わる事象が発生しました。

状況詳細
実施内容内部ポートのケーブル抜去試験(切り替わりなしを想定)
対象ポートの位置付けHAの監視ポートに含まれていた
事象ケーブル抜去直後にStandby機がActive昇格(意図しないフェイルオーバー)
原因監視ポートのリンクアップ数変化 + ageリセット + override無効

物理的には単純なケーブル抜去であっても、HAの監視条件に含まれているポートである場合、装置側は単なるリンクダウンではなくHA状態の再評価を伴うイベントとして扱います。その結果、意図しないフェイルオーバーにつながることがあります。

原因:HAのActive選出ロジック

FortiGate HAでは、Active装置の選出に複数の判定要素が関わります。override設定の有無によって優先順位が変わります。

override disable(デフォルト)
1 監視ポートのリンクアップ数
2 HAのage(稼働時間)← 問題箇所
3 プライオリティ
ageが2番目に評価されるため、ageリセットが発生すると切り替わりやすい
override enable(推奨)
1 監視ポートのリンクアップ数
2 プライオリティ ← ageより先に評価
3 HAのage(稼働時間)
プライオリティが高い装置をActiveとして維持しやすくなる
図1:override有無によるActive選出ロジックの違い(ケーブル抜去でリンクアップ数同一になった場合)

監視ポート抜去でageがリセットされる仕様

今回のトラブルで特に重要なのが、監視ポートを抜去した際にHA内部のage情報がリセットされる仕様です。

この挙動によって以下のことが起きます。

図2:ageリセットによるフェイルオーバー発生の流れ(override disable時)
FortiGate-A(Active)
age: 500h / Priority: 200
FortiGate-B(Standby)
age: 480h / Priority: 200
⬇ FortiGate-Aの監視ポートをケーブル抜去 ⬇
FortiGate-A
リンクアップ数が減少
age: 0(リセット)
FortiGate-B(Active昇格!)
リンクアップ数:同数
age: 480h(上回る)
❌ リンク数が同一になった時点でageが比較 → FortiGate-BがActiveに
⚠ 運用上の落とし穴 「リンク本数が同じになるだけだからActiveは維持されるだろう」という想定は誤りです。override disableの環境ではリンク数が同一になった瞬間にageが評価されるため、ageリセットが発生した側が不利になり切り替わりが起きます。この仕様を前提に設計・検証することが必要です。

フェイルオーバーを防ぐ2つの対策

今回の検証で有効だった対策は主に2つです。

対策1:override設定を有効化する

set override enableを設定すると、HAの選出優先順位が変わります。ageよりプライオリティが先に評価されるため、プライオリティの高い装置をActiveとして維持しやすくなります。

config system ha
    set mode a-p
    set group-name "FGT-HA"
    set priority 200          ! Active機を高優先度に(Standby機は低く設定)
    set override enable       ! ← プライオリティをageより優先させる
    set monitor "port1" "port2"
end
設定効果注意点
set override enableageよりプライオリティを優先評価両装置のpriorityが同じだと効果が薄い。Active機を高く設定すること
set priority 200(Active機)
set priority 100(Standby機)
プライオリティの差があるため確実に選出デフォルトは128。Active機を高く・Standby機を低く設定する
ℹ override enableの副作用に注意 override enableを設定すると、障害から復旧したActive機が自動でActiveに戻る(プリエンプション動作)ことがあります。意図しないタイミングで再度フェイルオーバーが発生する可能性があるため、プライオリティ設定と組み合わせて慎重に設計してください。

対策2:抜去予定ポートを事前に監視対象から外す

もう1つの有効な対策は、作業対象となるポートを事前にHAの監視ポート設定から削除することです。あらかじめ監視対象から外しておけば、リンクダウンがHA判定に影響しなくなるため、想定外の切り替わりを回避できます。

! 作業前:port3を監視対象から除外
config system ha
    set monitor "port1" "port2"    ! port3を外したリストに変更
end

! 作業実施(port3のケーブル抜去・メンテナンス)

! 作業後:port3を監視対象に戻す
config system ha
    set monitor "port1" "port2" "port3"
end
⚠ 監視ポート変更時の注意点 監視ポートの設定変更自体がHA再評価のきっかけになる場合があります。変更前に必ずHA状態を確認し、両装置の監視ポート数が均等になる状態を作らないよう注意して作業を進めてください。また、作業後は必ず監視ポートを元の設定に戻すことを忘れずに。

2つの対策の比較

対策有効なシーンメリット注意点
override enable計画作業を繰り返す環境・常時安定させたい常時有効。設定変更の都度作業不要プリエンプション動作に注意。priority差の設定が必要
監視ポートから除外一時的なメンテナンスが明確な場合シンプルで直感的。副作用が少ない作業後に元に戻す手順が必要。変更漏れリスク

検証結果・HA状態の確認コマンド

override設定の有効化、または抜去対象ポートの監視設定見直しを行った状態で再試験を実施したところ、ケーブル抜去時にHAの切り替わりは発生しませんでした。

この結果から、今回のフェイルオーバーは機器異常ではなく、HAの選出ロジックおよび監視ポート設定に起因する仕様上の挙動であったと判断できます。

HA状態の確認コマンド

作業前後・トラブル時に使うHA確認コマンドを整理します。

! HA全体の状態確認(最もよく使う)
get system ha status

! HA設定の確認
show system ha

! HA統計情報(切り替え回数等)
diagnose sys ha status

! 特定装置のHA詳細
diagnose sys ha dump-by-vcluster
(get system ha status の出力例)
HA Health Status:          OK
Model:                     FortiGate-100F
Mode:                      HA Active-Passive
Group:                     FGT-HA
Debug:                     0
Cluster Uptime:            10 days 5:30:00
Master:
  FGT-A    Role: Master    Priority: 200    Age: 50400    ← ageが表示される
  Monitored Interfaces:    port1 port2 port3
Slave:
  FGT-B    Role: Slave     Priority: 100    Age: 50000

Ageの値が両装置でどの程度の差があるか、Monitored Interfacesが意図した設定になっているかを事前に確認しておくことが重要です。

図3:対策適用前後のHA安定性比較(計画作業中のフェイルオーバーリスク)

FortiGate HA運用で押さえるべきポイント

FortiGateのHA構成では、単に冗長化を組んだだけでは安定運用は実現しません。特に次のポイントは事前に確認しておく必要があります。

確認ポイント確認方法・対策重要度
Active選出ロジックの理解override有無でpriorityとageの優先順位が変わることを把握最重要
監視ポートダウン時の挙動ageリセットが発生することを理解したうえで設計・検証最重要
override設定の有無確認show system ha | grep override重要
保守対象ポートの監視設定確認作業前に監視ポート一覧を確認し、対象ポートが含まれていないか確認重要
計画作業前の検証実施本番と同等の構成で事前にフェイルオーバー動作を確認する重要

まとめ

FortiGate HA構成でケーブル抜去時にフェイルオーバーが発生する主な原因は、監視ポートのリンクアップ数・HAのage・プライオリティの評価順にあります。

  • 監視ポートを抜去するとageがリセットされる。リンク数が同一になった際に意図しない装置がActiveとして再選出される
  • override disable(デフォルト):監視ポート数 → age → priority の順に評価
  • override enable(推奨):監視ポート数 → priority → age の順に評価。プライオリティの高い装置を維持しやすい
  • 計画作業時は作業対象ポートを事前に監視設定から除外するのがシンプルで確実
  • get system ha statusでHA状態・ageを事前確認する習慣をつける

FortiGate HAを安定運用するためには、障害対策だけでなく、計画作業時の挙動まで含めて設計・検証しておくことが重要です。