FortiGate HA設定完全ガイド|Active-Passive構成の構築手順

FortiGate HA Active-Passive構成図|Primary・Secondary・heartbeat接続

「FortiGateでHAを組みたいけど、何から手をつければいいか分からない」——そんな悩み、ネットワークエンジニアなら一度は通る道だと思う。

この記事では、FortiGateのHA(High Availability)をActive-Passive構成で構築する手順を、CLIとGUI両方でまとめた。事前準備のチェックリストから、実際の設定コマンド、HA同期の確認、フェイルオーバーテストの方法、そして現場でよくハマるポイントまで、実務ベースで解説している。ちなみに、自分は過去にFortiGate 60E〜600Eまで計20台以上のHA構成を組んできた経験があるので、その中で学んだ落とし穴も隠さず書いていく。

FortiGate HAの基本とActive-Passive / Active-Activeの違い

FortiGate HAとは?冗長化の仕組みをざっくり理解する

FortiGate HAは、2台のFortiGateをクラスター構成にして、片方が故障しても自動的にもう1台が処理を引き継ぐ仕組み。要するに「壊れても止まらない」を実現するための機能だ。

FortiGateのHAにはActive-Passive(A-P)とActive-Active(A-A)の2つのモードがある。正直なところ、実務で使うのは圧倒的にActive-Passiveの方が多い。理由は単純で、トラブルシュートが楽だから。Active-Activeはセッション分散の仕組みが絡むので、障害時の切り分けが一気に複雑になる。

📝 FGCP(FortiGate Clustering Protocol)

FortiGateのHAはFGCP(FortiGate Clustering Protocol)という独自プロトコルで動作する。HA heartbeatポート経由で死活監視とコンフィグ同期を行い、プライマリ障害時にはセカンダリが仮想MACアドレスを引き継ぐ。Fortinet公式ドキュメントでは「FGSP(FortiGate Session Life Support Protocol)」との混同に注意するよう記載されている。

💡 現場での体験談

以前、客先でFortiGate 200EのHA構成を組んだとき、最初Active-Activeで設計してしまった。結果、セッション同期周りでパケットロスが断続的に発生して、原因特定に丸2日かかった。結局Active-Passiveに変更して安定稼働した。それ以来、「特別な理由がない限りA-P一択」が自分のポリシーになった。

Active-Passive vs Active-Active 比較

図1: Active-Passive vs Active-Active 運用難易度比較

A-P 設定の簡単さ

90%

A-A 設定の簡単さ

50%

A-P トラブルシュート容易さ

85%

A-A トラブルシュート容易さ

35%

比較項目Active-PassiveActive-Active
動作モード1台が処理、1台は待機2台ともトラフィックを処理
スループット1台分のスペック最大2倍(UTM処理時のみ分散)
フェイルオーバー時間約1〜3秒約1〜3秒
セッション同期TCP/UDP/ICMPセッション同期セッション同期+負荷分散
設定難易度低い(おすすめ)やや高い
主な用途一般的な冗長化構成UTM負荷が高い大規模環境
推奨シーン迷ったらこっちIPS/AV処理がボトルネックの場合
HA設定の事前準備チェックリスト

HA構成を組む前に確認すべきこと

HAの設定自体はそこまで複雑じゃない。ただ、事前準備を怠ると「設定したのにHAが組めない」という事態に陥る。ここで紹介するチェックリストは、自分が現場で毎回確認している項目だ。

確認項目要件備考
機種(モデル)2台とも同一モデル60Eと60Fなど異なるモデルではHA不可
FortiOSバージョン2台とも同一バージョンマイナーバージョンまで一致させる
HA heartbeatポート専用ポートまたは任意ポートを確保100E以上はha1/ha2専用ポートあり
HA heartbeatケーブル直結またはスイッチ経由で接続直結推奨(クロスケーブル不要、Auto MDI-X対応)
ライセンス2台とも有効なライセンスUTMライセンスはプライマリのみ必要な場合あり
管理用IPアドレスHA管理IPを別途用意ha-mgmt-interfaceで個別管理IP設定
初期設定の状態セカンダリ側は工場出荷状態が理想コンフィグが入っているとHA join時に上書きされる
⚠ よくあるミス:ファームウェアバージョン不一致

FortiOSのバージョンが「7.2.5」と「7.2.6」のように1つでもズレていると、HAクラスターが組めない。片方だけアップデートしてしまったケースを何度も見てきた。get system statusでファームウェアバージョンを必ず両方で確認してから作業に入ること。

あと、地味に忘れがちなのがheartbeatケーブルの物理接続。ラックマウント後にLANケーブルだけ繋いでheartbeatポートを繋ぎ忘れるパターン、自分も一回やった。コンソールで設定を流し終えて「あれ、HA組めないな…」と30分悩んだ末に気づいたときの脱力感は忘れられない。

CLIでのFortiGate HA設定手順

config system haでActive-Passive構成を設定する

ここからが本題。CLIでのHA設定は config system ha ブロックに集約されている。まずプライマリ機から設定し、次にセカンダリ機を設定する。

Step 1: プライマリ機のHA設定(CLI)

プライマリ機(Active側になる方)にコンソール接続して、以下のコマンドを投入する。

config system ha
    set mode a-p
    set group-name "FG-HA-CLUSTER"
    set group-id 10
    set password <HA用パスワード>
    set priority 200
    set hbdev "ha1" 50 "ha2" 100
    set session-pickup enable
    set session-pickup-connectionless enable
    set override disable
    set monitor "port1" "port2" "port3"
end

各パラメータの意味を整理しておく。

パラメータ説明推奨値
modeHAモード(a-p / a-a / standalone)a-p
group-nameHAグループの識別名(2台で同一にする)任意の文字列
group-idHAグループID(同一LAN上に複数HAがある場合に区別)デフォルト0、複数HAなら変更
passwordHA認証パスワード(2台で同一にする)強固なパスワード
priorityプライオリティ値(高い方がプライマリになる)プライマリ: 200 / セカンダリ: 100
hbdevheartbeatに使うインターフェースと優先度“ha1” 50 “ha2” 100
session-pickupフェイルオーバー時のTCPセッション引き継ぎenable
overrideプライマリ復旧時に自動で切り戻すかdisable(意図しない切り戻しを防ぐ)
monitorリンク監視対象のインターフェース通信に使う物理ポートを全て指定
Step 2: セカンダリ機のHA設定(CLI)

セカンダリ機にも同じ構成を入れるが、priorityだけ低い値にする。

config system ha
    set mode a-p
    set group-name "FG-HA-CLUSTER"
    set group-id 10
    set password <HA用パスワード>
    set priority 100
    set hbdev "ha1" 50 "ha2" 100
    set session-pickup enable
    set session-pickup-connectionless enable
    set override disable
    set monitor "port1" "port2" "port3"
end

コマンドを投入すると、heartbeatポート経由で相手を検出し、自動的にHAクラスターが形成される。この瞬間、セカンダリ側はプライマリからコンフィグを同期され始める。だから、セカンダリ側に独自設定が入っていると全部上書きされる。これ、知らないと焦る。

Step 3: HA管理インターフェースの設定(任意だが推奨)

HA構成後、セカンダリ機に直接アクセスするには「HA管理インターフェース」の設定が必要。これを設定しないと、セカンダリ単体にSSHやHTTPSで入れなくなる。

config system ha
    set ha-mgmt-status enable
    config ha-mgmt-interfaces
        edit 1
            set interface "mgmt"
            set gateway 192.168.99.1
        next
    end
end

# プライマリの管理IP
config system interface
    edit "mgmt"
        set ip 192.168.99.11 255.255.255.0
        set allowaccess ping https ssh
    next
end

余談だけど、この管理インターフェースの予約設定は60Eクラスのエントリーモデルだとmgmt専用ポートがないから、データポートの1つを管理用に割り当てる必要がある。地味に面倒。

GUIでのFortiGate HA設定手順

FortiGate GUIからHA設定を行う方法

GUIでもHA設定は可能。CLIほど細かいパラメータ制御はできないけれど、基本的なActive-Passive構成なら十分対応できる。

Step 1: System → HA画面を開く

FortiGateの管理画面にHTTPSでログインし、左メニューから「System」→「HA」を選択する。デフォルトでは「Standalone」が選択されている状態。

Step 2: HAモードとパラメータを設定

HA画面で以下を設定する。

Modeを「Active-Passive」に変更。Group Nameにクラスター名を入力(例:FG-HA-CLUSTER)。PasswordにHA認証パスワードを入力。Device Priorityをプライマリ側は200、セカンダリ側は100に設定。Heartbeat Interfaceでha1, ha2にチェックを入れる。Port Monitorで監視対象のインターフェースを選択する。

設定が終わったら「OK」をクリック。この瞬間FortiGateが再起動的な動作をして一時的にGUI接続が切れるので慌てないこと。だいたい30秒〜1分で復帰する。

⚠ 注意:GUIでの制限事項

GUIではha-mgmt-interface(個別管理IP)の設定ができない場合がある(FortiOSバージョンによる)。また、session-pickup-connectionlessなどの細かいパラメータはCLIでしか設定できない。実務ではGUIで基本設定→CLIで追加パラメータという流れが多い。

HA同期の確認コマンドとフェイルオーバーテスト

HAが正しく動作しているか確認する方法

設定を入れたら終わりじゃない。HAが正しく組めているか、フェイルオーバーが期待通りに動くか、必ず確認する。この確認を怠って本番障害で初めて「実はHA動いてませんでした」と発覚したら目も当てられない。

HA状態の確認コマンド一覧
コマンド確認できること
get system ha statusHAモード、グループ名、各ノードの役割と優先度
diagnose sys ha status詳細なHA状態(heartbeat状態、同期状態、uptime)
diagnose sys ha checksum clusterコンフィグ同期のチェックサム比較(不一致を検出)
execute ha manage ?HAクラスター内のノード一覧を表示
execute ha manage 1セカンダリのCLIに直接ログイン
diagnose sys ha statusの出力例
FG-PRIMARY # diagnose sys ha status
HA information
Statistics
  traffic.local = s:0 p:0 b:0
  traffic.total = s:0 p:0 b:0
  activity.ha_id_changes = 1
  activity.ha_role_changes = 0
Model=FortiGate-200E, Mode=HA A-P, Group=10, Master_up=1
ses_pickup=1, override=0
[Debug_Zone HA information]
HA group member information: is_manage_primary=1.
  FG200E-PRIMARY     , 200, FG200EXXXXXXXXXX
  FG200E-SECONDARY   , 100, FG200EYYYYYYYYYY

cluster uptime: 45 days 12:33:20

ここで確認すべきは3つ。Mode=HA A-Pになっていること。Master_up=1でプライマリが稼働中であること。そして2台のノードが両方リストに出ていること。どれか1つでも欠けていたらHAが正常に動作していない。

フェイルオーバーのテスト方法

HAの設定が終わったら、必ずフェイルオーバーテストを実施する。テスト方法は主に3つ。

方法1: CLIコマンドで手動切り替え——最も安全な方法。プライマリのCLIで以下を実行する。

# プライマリからセカンダリに手動で切り替え
diagnose sys ha reset-uptime

# またはセカンダリのCLI上で
execute ha failover set 1

方法2: 監視ポートのケーブル抜去——monitorに設定したポートのLANケーブルを抜く。物理的な障害をシミュレートできるが、本番環境でやる場合は影響範囲をよく確認すること。

方法3: プライマリの電源OFF——最もリアルなテスト。ただし、復旧時にoverride設定によっては意図しない切り戻しが発生する可能性がある。

テスト時は端末から連続pingを打ちながら切り替え時間を計測するのが定番。正常なら1〜3秒程度のロスで収まるはず。5秒以上ロスが続く場合は何かおかしい。

よくあるハマりどころとトラブルシューティング

FortiGate HAで現場でハマるポイントと対処法

ハマり1: HAが組めない(クラスターが形成されない)

一番多いトラブル。原因はだいたい以下のどれか。

heartbeatケーブルが接続されていない(物理的な確認不足)。group-nameまたはpasswordが2台で一致していない(タイポ含む)。FortiOSバージョンが不一致。モデルが異なる。group-idが同一LAN上の別HAクラスターと衝突している。

切り分けは diagnose sys ha status の出力を確認するところから。1台しか表示されない場合、heartbeatの疎通ができていない。

ハマり2: コンフィグが同期されない

HAが組めたのに設定変更がセカンダリに反映されないケース。diagnose sys ha checksum cluster でチェックサムを比較して、不一致のセクションを特定する。

# チェックサム比較
diagnose sys ha checksum cluster

# 不一致がある場合、手動同期を実行
execute ha synchronize start

それでも直らない場合は、セカンダリを一度standaloneに戻してから再度HAに参加させるという荒業もある。ただしこれは最終手段。

ハマり3: override設定による意図しない切り戻し

overrideをenableにしていると、プライマリが復旧した瞬間に自動的に切り戻しが発生する。つまりフェイルオーバーが2回起きることになり、その都度通信断が発生する。特に理由がなければ set override disable にしておくのが安全。

⚠ 注意:ハードウェアスイッチモードの罠

FortiGate 60E/60Fなどのエントリーモデルでは、LANポートがデフォルトで「ハードウェアスイッチ」モードになっている。この状態だとHA heartbeatに個別ポートを指定できない場合がある。ハードウェアスイッチを解除して個別インターフェースモードに変更するか、専用のHA設定に対応したポート構成にする必要がある。この変更はインターフェース設定のリセットを伴うので、事前にコンフィグのバックアップを取ること。

まとめ

FortiGate HA設定のポイント整理

📋 まとめ

FortiGateのHA(Active-Passive)は config system ha で設定する。事前に同一モデル・同一FortiOSバージョン・heartbeatケーブル接続を確認するのが最重要。設定後は diagnose sys ha statusdiagnose sys ha checksum cluster で同期状態を確認し、手動フェイルオーバーテストまで実施して初めて「HA設定完了」と言える。overrideは基本disableにしておくのが安全。

よくある質問(FAQ)

Q. FortiGate HAのActive-PassiveとActive-Activeはどっちを選ぶべき?

特別な理由がない限り、Active-Passive(A-P)がおすすめ。A-Pは設定がシンプルで、障害時の切り分けも楽。Active-ActiveはUTM機能(IPS、アンチウイルス等)の負荷分散が必要な大規模環境向け。ただし、セッション分散の仕組みが複雑になるため、運用負荷は確実に上がる。

Q. HA構成でFortiGateのファームウェアアップデートはどうやる?

HA構成ではuninterruptible upgrade(無停止アップグレード)機能が使える。プライマリ側からファームウェアをアップロードすると、セカンダリ→プライマリの順に自動でアップデートされる。この間、フェイルオーバーが発生するので一時的に通信断(約3〜10秒)が発生する。メンテナンスウィンドウ内での実施を推奨する。

Q. HAのheartbeatポートはスイッチ経由でも大丈夫?

技術的にはスイッチ経由でも動作する。ただし、Fortinet公式では直結を推奨している。スイッチ経由にすると、スイッチ障害でheartbeatが途絶えてスプリットブレイン(両方がプライマリになる)を起こすリスクがある。直結の場合、Auto MDI-Xに対応しているのでクロスケーブルは不要。ストレートケーブルでOK。