FortiGateのHA(High Availability)構成では、障害時に自動で切り替わることで可用性を確保できます。しかし、計画作業中のケーブル抜去やポートメンテナンス時に想定外のフェイルオーバーが発生するケースがあります。
本記事では、HA構成においてケーブル抜去時にフェイルオーバーが発生した原因と対策を整理します。特に、監視ポートのリンク状態・HAのage・override設定の関係を理解したい方に参考になる内容です。検証結果ベースで解説します。
本番環境のFortiGate HA構成で内部ポートのケーブル抜去試験を実施しました。「切り替わりが起きないことを確認する試験」のつもりで実施したのに、まさにその瞬間にフェイルオーバーが発生してしまいました。
原因を調査すると、監視ポートのageリセットという仕様が絡んでいたことがわかりました。それまでHAの選出ロジックをpriorityとリンク数だけで理解していたため、ageが重要な判定要素になっていることを完全に見落としていました。この経験を機に、HA設計では選出ロジックを一通り理解してから検証を組む必要があると痛感しました。


FortiGate HAの基本概念
FortiGate HAは主にActive-Passive(A-P)とActive-Active(A-A)の2モードがあります。本記事ではActive-Passiveを前提に解説します。
ケーブル抜去時にフェイルオーバーが発生した事象
HA構成のFortiGateで、切り替わりを防ぐことを前提に内部ポートのケーブル抜去試験を実施しました。しかし、監視対象として設定されていたポートを抜去したタイミングでStandby機へActiveが切り替わる事象が発生しました。
| 状況 | 詳細 |
|---|---|
| 実施内容 | 内部ポートのケーブル抜去試験(切り替わりなしを想定) |
| 対象ポートの位置付け | HAの監視ポートに含まれていた |
| 事象 | ケーブル抜去直後にStandby機がActive昇格(意図しないフェイルオーバー) |
| 原因 | 監視ポートのリンクアップ数変化 + ageリセット + override無効 |
物理的には単純なケーブル抜去であっても、HAの監視条件に含まれているポートである場合、装置側は単なるリンクダウンではなくHA状態の再評価を伴うイベントとして扱います。その結果、意図しないフェイルオーバーにつながることがあります。
原因:HAのActive選出ロジック
FortiGate HAでは、Active装置の選出に複数の判定要素が関わります。override設定の有無によって優先順位が変わります。
監視ポート抜去でageがリセットされる仕様
今回のトラブルで特に重要なのが、監視ポートを抜去した際にHA内部のage情報がリセットされる仕様です。
この挙動によって以下のことが起きます。
age: 500h / Priority: 200
age: 480h / Priority: 200
リンクアップ数が減少
age: 0(リセット)
リンクアップ数:同数
age: 480h(上回る)
フェイルオーバーを防ぐ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 enable | ageよりプライオリティを優先評価 | 両装置のpriorityが同じだと効果が薄い。Active機を高く設定すること |
| set priority 200(Active機) set priority 100(Standby機) | プライオリティの差があるため確実に選出 | デフォルトは128。Active機を高く・Standby機を低く設定する |
対策2:抜去予定ポートを事前に監視対象から外す
もう1つの有効な対策は、作業対象となるポートを事前にHAの監視ポート設定から削除することです。あらかじめ監視対象から外しておけば、リンクダウンがHA判定に影響しなくなるため、想定外の切り替わりを回避できます。
! 作業前:port3を監視対象から除外
config system ha
set monitor "port1" "port2" ! port3を外したリストに変更
end
! 作業実施(port3のケーブル抜去・メンテナンス)
! 作業後:port3を監視対象に戻す
config system ha
set monitor "port1" "port2" "port3"
end2つの対策の比較
| 対策 | 有効なシーン | メリット | 注意点 |
|---|---|---|---|
| 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: 50000Ageの値が両装置でどの程度の差があるか、Monitored Interfacesが意図した設定になっているかを事前に確認しておくことが重要です。
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を安定運用するためには、障害対策だけでなく、計画作業時の挙動まで含めて設計・検証しておくことが重要です。



