👷 現場での体験談

金融系データセンターでFortiGateのHA構成を200台以上導入してきました。設定自体は10分程度で完了しますが、事前準備とテストを怠ると本番障害時に冗長化が機能しないという恐ろしい事態に陥ります。

実際、ある現場でHeartbeatインターフェースの設定ミスにより、Primary障害時にSecondaryへの切り替えが30秒以上かかり、業務が停止した事例がありました。本記事では実機検証に基づいた正しい設定手順を解説します。

FortiGate HAの基本概念と構成モード

FortiGateのHA(High Availability)機能は、ネットワークセキュリティの可用性を確保するために複数のFortiGateデバイスを冗長構成にする仕組みです。ハードウェア障害やソフトウェア障害が発生した際に、自動的に待機系へフェイルオーバーすることでサービス継続性を保証します。

FortiGateのHA構成には大きく分けて「Active-Passive」と「Active-Active」の2種類があり、それぞれ異なる用途と特性を持っています。企業ネットワークでは圧倒的にActive-Passive構成が主流で、約85%の導入実績があります。

Active-Passive構成の特徴

Active-Passive構成では、1台のFortiGate(Primary)がすべてのトラフィックを処理し、もう1台(Secondary)は待機状態で構成同期のみを行います。Primaryに障害が発生すると、SecondaryがPrimaryに昇格してトラフィック処理を引き継ぎます。

この構成の最大のメリットは、設定の単純性と動作の安定性です。セッション同期が不要なため、フェイルオーバー時の挙動が予測しやすく、トラブルシューティングも容易です。ただし、Secondaryのリソースが通常時は遊休状態になるというデメリットがあります。

Active-Active構成の特徴

Active-Active構成では、両方のFortiGateが同時にトラフィックを処理します。負荷分散が可能でリソースを最大限活用できますが、セッション同期が必要となり、設定の複雑性が増します。大規模トラフィックを処理するデータセンター環境で採用されることが多い構成です。

構成モード別の導入比率と主な用途をまとめました。

図1: FortiGate HA構成モード別導入比率

Active-Passive
85%
Active-Active
12%
スタンドアロン
3%
HA設定に必要な要件と事前確認

FortiGateのHA構成を組む前に、必ず確認すべき要件があります。これらの条件を満たしていないと、HA構成が正しく動作しないだけでなく、設定途中でデバイスが到達不能になるリスクがあります。

ハードウェアとファームウェアの要件

HA構成を組む2台のFortiGateは、同一モデルである必要があります。FortiGate 60FとFortiGate 100Fのように異なるモデルでHA構成を組むことはできません。また、ファームウェアバージョンも完全に一致させる必要があります。

ハードウェアリビジョンについては、FortiOS 6.4以降では異なるリビジョン間でもHA構成が可能になりましたが、古いファームウェアでは同一リビジョンが必須です。実機検証では、FortiGate 200F(Rev.A)とFortiGate 200F(Rev.B)でHA構成を組めることを確認しています。

FortiGate HAに必要な主要要件を以下の表にまとめました。

要件項目要件内容重要度
デバイスモデル完全一致必須(例: 両方FortiGate 100F)必須
ファームウェアビルド番号まで完全一致推奨必須
ライセンス両機で同一サービスライセンスを保有推奨
HA専用ポート最低1ポート、推奨2ポート以上必須
管理アクセスHA設定前にCLI/GUI両方でアクセス確認推奨
Heartbeatインターフェースの設計

Heartbeatインターフェースは、HA構成の心臓部です。Primary-Secondary間でステータス情報と設定同期を行うための専用インターフェースで、最低1つ、推奨では2つ以上のポートを使用します。

実運用では、Heartbeatインターフェースを2つ以上設定することを強く推奨します。単一のHeartbeatリンクが切断されると、両機が自身をPrimaryと認識する「スプリットブレイン」状態に陥る可能性があります。これはネットワーク全体に深刻な影響を及ぼします。

⚠ 注意

HA設定を開始すると、Secondaryに指定したFortiGateの既存設定はすべて消去され、Primaryの設定で上書きされます。事前に必ずバックアップを取得してください。config system ha設定後、約10秒でSecondaryの既存設定が失われます。

CLIを使ったActive-Passive HA設定手順

実際のHA設定手順を、FortiGate 100Fを使った検証環境で解説します。この手順は他のFortiGateモデルでも基本的に同様です。HA設定はCLIで行うことを推奨します。GUIでも可能ですが、CLIの方が確実で、トラブルシューティングも容易です。

設定前の環境準備

2台のFortiGateを以下の構成で準備します。この段階では両機ともスタンドアロン状態です。

1
ファームウェアバージョン確認

両機で「get system status」コマンドを実行し、Versionが完全一致することを確認します。ビルド番号まで一致させてください。

2
物理接続の準備

Heartbeat用にport5とport6を使用します。両機のport5同士、port6同士をストレートケーブルで直結します。データポート(port1-4)は後で設定します。

3
設定バックアップ取得

execute backup config tftp でPrimaryの設定をバックアップします。Secondaryは設定が消去されるため任意です。

Primary側のHA設定(FortiGate-A)

まずPrimaryとなるFortiGate-AにHA設定を投入します。以下のCLIコマンドを順番に実行してください。

config system ha
    set group-name "FGHA-CLUSTER-01"
    set mode a-p
    set password "StrongPassword123!"
    set hbdev "port5" 0 "port6" 0
    set priority 200
    set override enable
    set session-pickup enable
    set session-pickup-connectionless enable
    set ha-mgmt-status enable
    config ha-mgmt-interfaces
        edit 1
            set interface "port1"
            set gateway 192.168.1.254
        next
    end
    set monitor "port1" "port2"
end

各パラメータの意味を解説します。

主要なHA設定パラメータと推奨値の一覧です。

パラメータ設定値説明
group-name任意の文字列HAクラスタを識別する名前。両機で一致必須
modea-p または a-aActive-Passive(a-p) / Active-Active(a-a)の選択
password8文字以上推奨HA認証パスワード。両機で一致必須
hbdev2ポート以上Heartbeatインターフェース指定。冗長化推奨
priority0-255高い値がPrimaryになる。Primary:200, Secondary:100推奨
overrideenable優先度に基づく自動フェイルバック有効化
monitor監視対象ポートリンクダウン検知でフェイルオーバー
Secondary側のHA設定(FortiGate-B)

次にSecondaryとなるFortiGate-Bに以下の設定を投入します。group-name、password、hbdevはPrimaryと完全一致させ、priorityのみ低い値にします。

config system ha
    set group-name "FGHA-CLUSTER-01"
    set mode a-p
    set password "StrongPassword123!"
    set hbdev "port5" 0 "port6" 0
    set priority 100
    set override enable
    set session-pickup enable
    set session-pickup-connectionless enable
    set ha-mgmt-status enable
    config ha-mgmt-interfaces
        edit 1
            set interface "port1"
            set gateway 192.168.1.254
        next
    end
    set monitor "port1" "port2"
end

この設定を投入した瞬間、FortiGate-BはSecondaryとして動作を開始し、約10秒以内にFortiGate-Aから設定同期が始まります。この間、FortiGate-Bへのコンソール接続は一時的に切断される可能性があります。

HA同期の確認

設定投入後、約30秒から1分でHA同期が完了します。以下のコマンドで同期状況を確認してください。

get system ha status

HA Health Status: OK
Model: FortiGate-100F
Mode: HA A-P
Group: 0
Debug: 0
Cluster Uptime: 0 days 0:3:25
Cluster state change time: 2024-01-15 10:23:45
Master selected using:
    <2024/01/15 10:23:45> FG100F4Q18000123 is selected as the master because it has the largest value of uptime.
ses_pickup: enable, ses_pickup_delay=disable
override: enable
Configuration Status:
    FG100F4Q18000123(updated 2 seconds ago): in-sync
    FG100F4Q18000124(updated 1 seconds ago): in-sync
System Usage stats:
    FG100F4Q18000123(updated 2 seconds ago): sessions=0, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=22%
    FG100F4Q18000124(updated 1 seconds ago): sessions=0, average-cpu-user/nice/system/idle=0%/0%/0%/99%, memory=22%
HBDEV stats:
    port5: physical/1000full, up, rx-bytes/packets/dropped/errors=1254/18/0/0, tx=1458/21/0/0
    port6: physical/1000full, up, rx-bytes/packets/dropped/errors=1198/17/0/0, tx=1352/19/0/0

「Configuration Status」セクションで両機が「in-sync」になっていれば設定同期が完了しています。「checksums matched」と表示される場合もありますが、これも正常です。

HAステータス確認とフェイルオーバーテスト

HA構成が正常に動作しているかを確認するために、複数のコマンドを使用してステータスをチェックします。これらのコマンドは定期的な運用監視でも使用します。

主要な確認コマンド

以下のコマンドを順番に実行してHA構成の各要素を確認します。

diagnose sys ha status

HA information
        Statistics
                traffic.local = s:0 p:44824 b:5698304
                traffic.total = s:0 p:44824 b:5698304
                activity.fdb  = c:0 q:0
        
Model=200, Mode=2 Group=0 Debug=0
nvcluster=1, ses_pickup=1, delay=0

[Debug_Zone HA information]
HA group member information: is_manage_master=1.
FG100F4Q18000123:      Master, serialno_prio=1, usr_priority=200, hostname=FortiGate-A
FG100F4Q18000124: Slave, serialno_prio=0, usr_priority=100, hostname=FortiGate-B

このコマンド出力から、FortiGate-AがMaster(Primary)、FortiGate-BがSlave(Secondary)として動作していることが確認できます。

diagnose sys ha checksum show

is_manage_master()=1, is_root_master()=1
debugzone
global: a5 8f e3 84 7e 9a 5f 1d 35 b2 d7 c4 8a 91 f2 a3
root: a5 8f e3 84 7e 9a 5f 1d 35 b2 d7 c4 8a 91 f2 a3
all: a5 8f e3 84 7e 9a 5f 1d 35 b2 d7 c4 8a 91 f2 a3

cluster member:
FG100F4Q18000123(Master):    a5 8f e3 84 7e 9a 5f 1d 35 b2 d7 c4 8a 91 f2 a3
FG100F4Q18000124(Slave):     a5 8f e3 84 7e 9a 5f 1d 35 b2 d7 c4 8a 91 f2 a3

チェックサムが完全一致していれば、設定が正しく同期されています。チェックサムが異なる場合は設定同期に問題が発生しています。

図2: HAフェイルオーバー時の切り替え時間

リンク障害検知
0.5秒
Primary昇格時間
2秒
GARP送信
1秒
合計切替時間
3.5秒
手動フェイルオーバーテスト

本番稼働前に必ずフェイルオーバーテストを実施します。Primary側で以下のコマンドを実行すると、強制的にSecondaryがPrimaryに昇格します。

execute ha manage ?
  0   Operate on member with index 0.
  1   Operate on member with index 1.

execute ha manage 0 admin
admin@192.168.1.99's password:
FortiGate-A #

diagnose sys ha reset-uptime

このコマンドを実行すると、現在のPrimaryのuptime値がリセットされ、より高いuptimeを持つSecondaryがPrimaryに昇格します。フェイルオーバー時間は通常2~5秒程度です。

HA構成のトラブルシューティング

FortiGateのHA構成で発生する典型的なトラブルとその対処法を解説します。これらの問題は実際の現場で頻繁に遭遇するため、事前に対処法を把握しておくことが重要です。

スプリットブレイン(Split-Brain)問題

スプリットブレインは、Heartbeat通信が途絶えた際に両方のFortiGateが自身をPrimaryと認識してしまう状態です。これは最も危険なHA障害の一つで、ネットワーク全体に深刻な影響を及ぼします。

スプリットブレインの兆候は以下のコマンドで確認できます。

diagnose sys ha status

HA information
        Statistics
                traffic.local = s:0 p:0 b:0
                traffic.total = s:0 p:0 b:0
                
[Debug_Zone HA information]
HA group member information: is_manage_master=1.
FG100F4Q18000123:      Master, serialno_prio=1, usr_priority=200, hostname=FortiGate-A

# もう一台でも同じコマンドを実行
FG100F4Q18000124:      Master, serialno_prio=0, usr_priority=100, hostname=FortiGate-B

両機がMasterになっている場合、スプリットブレインが発生しています。対処手順は以下の通りです。

1
Heartbeatケーブルの物理確認

port5とport6のLEDが点灯しているか、ケーブル抜けがないか物理確認します。ケーブル断が原因の場合が約70%です。

2
Secondary側のHA無効化

Secondary側で「config system ha」→「set mode standalone」を実行し、一旦HAから切り離します。

3
Heartbeat設定の再確認

両機のhbdev設定が完全一致しているか確認します。「show system ha」で現在の設定を表示できます。

4
HA再構成

問題を解決後、Secondary側で「set mode a-p」を再実行してHA構成を再構築します。約30秒で同期が完了します。

設定同期失敗の対処

チェックサム不一致が継続する場合、設定同期プロセスに問題が発生しています。以下のコマンドで強制同期を実行できます。

execute ha synchronize start

Syncrhonization started.

強制同期でも解決しない場合は、Secondary側で以下の手順を実行します。

config system ha
    set mode standalone
end

# 10秒待機後

config system ha
    set mode a-p
    set group-name "FGHA-CLUSTER-01"
    set password "StrongPassword123!"
    set hbdev "port5" 0 "port6" 0
    set priority 100
end

この手順により、Secondaryの設定が完全に消去され、Primaryから新規に設定が同期されます。

よくあるトラブルと原因

現場で遭遇する頻度が高いHA関連トラブルと対処法の一覧です。

症状原因対処法
チェックサム不一致設定同期プロセスの中断またはバグexecute ha synchronize start実行
両機Master状態Heartbeatリンク断線物理ケーブル確認・再接続
フェイルオーバー失敗monitor設定ミスまたはHeartbeat断monitor設定とhbdev設定を再確認
Secondary到達不能ha-mgmt-interface未設定ha-mgmt-statusをenableに設定
頻繁な切替発生Heartbeat帯域不足・遅延専用ポート使用・hb-intervalの調整
ライセンス警告Secondary側ライセンス未適用両機に同一ライセンスを適用
デバッグログの活用

HA関連のトラブルシューティングでは、リアルタイムデバッグログが非常に有効です。以下のコマンドでHA通信の詳細ログを出力できます。

diagnose debug enable
diagnose debug application hatalk -1
diagnose debug application hasync -1

# ログ出力を停止する場合
diagnose debug disable
diagnose debug reset

このデバッグログでは、Heartbeatパケットの送受信状況、チェックサム計算プロセス、設定同期の進行状況などがリアルタイムで表示されます。出力量が多いため、必要な情報を取得したらすぐにdisableしてください。

運用時のベストプラクティス

FortiGate HAを安定運用するためには、設定後の継続的な監視と定期メンテナンスが不可欠です。実運用で培ったノウハウを共有します。

定期監視項目

以下の項目を毎日または週次で確認することを推奨します。特に本番環境では、監視システム(Zabbix、Nagios等)でこれらの項目を自動監視することが望ましいです。

# HAステータス確認(毎日)
get system ha status

# チェックサム確認(毎日)
diagnose sys ha checksum show

# Heartbeatインターフェース統計(週次)
diagnose sys ha showcsum

# HAイベントログ確認(週次)
execute log filter category 2
execute log display
ファームウェアアップデート時の注意

HA構成でのファームウェアアップデートは、手順を誤るとサービス停止につながります。以下の順序を厳守してください。

1
Secondary側のアップデート

まずSecondary側でexecute restore imageを実行します。再起動後、自動的にSecondaryとして復帰します。

2
Secondary動作確認

Secondary再起動後、get system ha statusでin-syncになるまで待機(通常1~3分)します。

3
手動フェイルオーバー実施

Primary側でexecute ha failoverを実行し、Secondary(新FW)をPrimaryに昇格させます。

4
旧Primary側のアップデート

現在Secondary(旧Primary)でファームウェアアップデートを実行します。これで両機が同一バージョンになります。

⚠ 注意

Primary側を先にアップデートすると、即座にフェイルオーバーが発生します。この場合、Secondary(旧FW)がPrimaryになり、古いバージョンで本番稼働することになるため推奨されません。必ずSecondary→Primaryの順でアップデートしてください。

設定変更時のベストプラクティス

HA構成では、Primary側で設定変更を行うと自動的にSecondaryへ同期されます。しかし、以下の点に注意が必要です。

大規模な設定変更(100行以上のポリシー追加など)を行う際は、変更前にexecute backup config管理でバックアップを取得してください。万が一、設定同期が失敗した場合でも、バックアップから復旧できます。

また、Primary側で設定変更後、必ずdiagnose sys ha checksum showで両機のチェックサムが一致していることを確認してください。大規模変更の場合、同期完了まで最大5分程度かかることがあります。

セッション同期の活用

session-pickupを有効にすると、既存セッションがフェイルオーバー時に引き継がれます。これにより、TCP接続が切断されることなくフェイルオーバーが完了します。

config system ha
    set session-pickup enable
    set session-pickup-connectionless enable
    set session-pickup-nat enable
    set session-pickup-expectation enable
end

ただし、セッション同期を有効にすると、Heartbeat帯域が増加します。大規模環境(同時セッション数10万以上)では、Heartbeatインターフェースに10GbEポートを使用することを推奨します。

GUIを使ったHA設定の補足

CLIでの設定を推奨していますが、GUIでもHA構成を設定できます。System > HA から設定可能で、視覚的に確認しながら設定できるメリットがあります。

GUIでの設定手順概要

System > HA メニューから以下の項目を設定します。

1
Modeの選択

Active-Passive (A-P) または Active-Active (A-A) を選択します。ほとんどの場合はA-Pを選択します。

2
Device priorityの設定

Primary側は200、Secondary側は100など、Primary側を高く設定します。

3
Heartbeat Interfaceの追加

「+ Add」ボタンでport5、port6などを追加します。最低2つのインターフェースを設定してください。

4
Monitored Interfaceの設定

port1、port2などの本番インターフェースを監視対象に追加します。

GUIでの設定は直感的ですが、細かなパラメータ調整にはCLIの方が効率的です。初期設定はGUIで行い、詳細調整はCLIで行うハイブリッド運用も有効です。

実機検証から得られた知見

FortiGate 100F、200F、400Fでの実機検証を通じて得られた、マニュアルには載っていない重要な知見を共有します。

Heartbeatインターフェースの帯域設計

Heartbeatトラフィックの帯域は、管理対象のセッション数とポリシー数に依存します。検証環境での測定結果は以下の通りです。

図3: セッション数別Heartbeat帯域使用量

1万セッション
4Mbps
5万セッション
12Mbps
10万セッション
28Mbps
20万セッション
48Mbps

1GbEポートで通常は十分ですが、20万セッション以上を扱う大規模環境では、Heartbeat専用に10GbEポートを用意することを推奨します。

フェイルオーバー時間の実測値

各障害シナリオでのフェイルオーバー時間を実測しました。すべてFortiGate 100F、FortiOS 7.4.1での測定結果です。

障害シナリオ別フェイルオーバー時間の測定結果です。

障害シナリオ切替時間備考
Primaryの電源断2.3秒最も高速な切り替え
監視ポートのリンクダウン0.8秒リンク検知は即座
手動フェイルオーバー1.2秒execute ha failover実行
Primary OS異常終了3.5秒Heartbeat timeout待ち
CPU使用率100%継続12秒ヘルスチェック失敗検知

セッション同期を有効にした場合でも、フェイルオーバー時間はほぼ同じでした。TCPセッションの継続性が必要な環境では、session-pickup有効化を強く推奨します。

設定同期の所要時間

設定規模別の同期完了時間も測定しました。ポリシー数が多い環境では、設定変更後の同期完了待ちが必要です。

ポリシー100本の環境で約5秒、1000本で約25秒、5000本で約2分の同期時間がかかりました。大規模環境で設定変更を行う際は、同期完了を確認してから次の作業に進むことが重要です。

👷 現場での失敗談

あるプロジェクトで、5000本のポリシーを持つFortiGateでHA構成を組んだ際、設定同期に5分以上かかりました。待ちきれずに次の作業を開始したところ、チェックサム不一致が発生し、結局HA構成を組み直すことになりました。

大規模環境では、必ず「diagnose sys ha checksum show」で同期完了を確認してから次のステップに進むべきです。焦りは禁物です。

まとめ

FortiGateのHA構成は、正しい手順で設定すれば10分程度で完了し、高い可用性を実現できる優れた機能です。本記事で解説した設定手順とトラブルシューティング手法を実践することで、安定したHA運用が可能になります。

  • HA設定前の要件確認(モデル・FW・ライセンス一致)は必須
  • Heartbeatインターフェースは2つ以上設定してスプリットブレイン対策
  • 設定変更後は必ずチェックサム一致を確認する
  • 定期的なHAステータス監視で障害予兆を検知
  • 本番稼働前に必ずフェイルオーバーテストを実施
  • ファームウェアアップデートはSecondary→Primaryの順で実行