FortiGate設定マニュアル - HA徹底入門
【第4回】HAの同期と切り替え
プライマリの選出基準
下記のフロー図は、プライマリとセカンダリがどのような基準で選出されるのかを示したものです。ポイントは「オーバーライド設定」の有効/無効によって、②と③のプロセスが入れ替わるところです。
HAの稼働時間でエイジの差が300秒(デフォルト)未満の場合、処理はスキップされます。エイジの時間は変更可能です。
| オーバーライド無効(デフォルト) | オーバーライド有効 |
|---|---|
![]() |
![]() |
Age(エイジ)の差に要注意
FortiGateには、HAの稼働時間を測るための「Age」と呼ばれるタイマーが内蔵されています。Ageのカウンタは、HAを設定されている機器ごとに、それぞれ上がっていきます(セカンダリが存在する必要はありません)。Ageはシステムの再起動またはモニターインターフェースの切断によってリセットされます。
デフォルトでは、フェイルオーバー発生時にプライマリとセカンダリの間でAgeの差が300秒(5分)以上必要です。Ageの差が300秒(5分)未満の場合、デフォルトでは機器のプライオリティが優先されます。この場合、フェイルオーバーによって1号機から2号機へ一瞬切り替わった後、(機器の瞬断等の理由で)1号機が短い時間で復旧すると、すぐにプライマリ権限が1号機へと戻ってしまいます。利用者には、あたかも機器のフラッピングが起きたように見えますが、プライマリ選出のルールに従った動きになります。このような動きを起こさないためには、フェイルオーバー前に300秒以上待つことが重要です。
| Step① HA構成後、300秒間待つ | Step② 1号機から2号機への切り替え |
|---|---|
| HAを構成した後は、300秒間待ちましょう。同期も忘れずに行ってください。300秒以上経ったら準備完了です。 | フェイルオーバーが起きると、Ageがリセットされます。この時、両者に300秒の差があれば、Ageの高い方がプライマリに選出されます。 |
![]() |
![]() |
| Step③ 差を保って300秒間待つ | Step④ 2号機から1号機への切り替え |
| その後はAgeの差を保った状態で、お互いのカウンタが上がっていきます。次回のフェイルオーバーに備えて再び300秒間待ちましょう。 | フェイルオーバーが起きると、Ageがリセットされます。この時、両者に300秒の差があれば、Ageの高い方がプライマリに選出されます。 |
![]() |
![]() |
| Step⑤ 差を保って300秒間待つ | Step⑥ 1号機から2号機への切り替え |
| その後はAgeの差を保った状態で、お互いのカウンタが上がっていきます。次回のフェイルオーバーに備えて再び300秒間待ちましょう。 | Step③に戻って、同様の動きを繰り返します。常に300秒以上待ってから運用することが安全なHAの運用方法です。 |
![]() |
![]() |
オーバーライド設定の変更
オーバーライドを有効にすると、プライマリの選出基準として稼働時間(Age)よりもプライオリティが優先されます。設定変更はWebGUIとCLIコマンドのどちらでも行えます。オーバーライド設定は同期されないため、変更する場合は必ず1号機と2号機の両方で行いましょう。
[システム] > [HA] を選択 → 機器を選択して[編集] し、「優先度の効果を上げる」を有効にしてください。

(ha) # set override enable <<オーバーライドを有効
(ha) # set override-wait-time 0 <<待ち時間を入力
# end
| 種類 | 解説 |
|---|---|
| override | 有効にすると、プライマリの選出基準として稼働時間(Age)よりもプライオリティが優先されます。 |
| override-wait-time | プライマリ権限が移るまでの待ち時間(秒)です。デフォルトは”0”で、範囲は[0-3600]です。プライオリティの高い機器が短い時間で復旧した場合、セッション同期が完了する前に切り戻ってしまい、多くの通信が切断されてしまうため、切り戻りを遅らせて同期の時間を稼ぎたい場合に有効です。このオプションはoverrideが有効のとき利用できます。 |
手動によるHAの切り替え方法
下記のコマンドを現プライマリで実行することで、意図的にHAを切り替えることができます。ただし、1号機と2号機の両方が起動から300秒(5分)以上経っていることが条件です。これは本来、HAの稼働時間を測るタイマーである「Age」のカウンタを強制的にリセットするためのコマンドですが、これをフェイルオーバーを発生させるためのトリガーとして利用できます。
ある意味、超危険コマンドのため、細心の注意を払った上で実行してください。
例えば、1号機がプライマリの状態で、2号機がセカンダリの状態だったとします。オーバーライド設定は無効(デフォルト)です。この状態で起動から300秒以上経った後、1号機のカウンタが”0”にリセットされると、2号機のAgeが1号機を上回り、プライマリ権限が2号機へと移ります。その後は再び300秒間待つことで、次回の切り替え準備が整います。Ageのカウンタを表示する方法はありませんが、下記のコマンドで両者のAgeの差分を表示することが可能です。「uptime」がAgeの差分(秒)に当たります。
下記の例では、1号機のAgeが2号機を「2789秒」上回っているため、プライマリに選出されていることが分かります。
HA information.
vcluster_nr=1
vcluster-1: start_time=1758605659(2025-09-22 14:34:19), state/o/chg_time=2(work)/3(standby)/1758608449(2025-09-22 15:20:49)
pingsvr_flip_timeout/expire=3600s/3572s
mondev: internal1(prio=50,is_aggr=0,status=1) wan1(prio=50,is_aggr=0,status=1)
'FGT70FTKXXXXXXXX': ha_prio/o=0/0, link_failure=0, pingsvr_failure=0, flag=0x00000001, mem_failover=0, uptime/reset_cnt=2789/2
'FGT70FTKYYYYYYYY': ha_prio/o=1/1, link_failure=0, pingsvr_failure=0, flag=0x00000000, mem_failover=0, uptime/reset_cnt=0/2
Ageのカウンタが上がらない?
HAとして起動後、1号機と2号機のAgeのカウンタは同時に上がっていくため、両者の起動のタイミングが同時であったり、短い時間でカウンタがリセットされたりした場合、両者の間に差分が無くなります。下記の例では、1号機のAgeが2号機を「7秒」しか上回っていないため、プライオリティの高さによってプライマリに選出されていることが分かります。
HA information.
vcluster_nr=1
vcluster-1: start_time=1758632245(2025-09-22 17:57:25), state/o/chg_time=2(work)/1(helo)/1758632252(2025-09-22 17:57:32)
pingsvr_flip_timeout/expire=3600s/1682s
mondev: internal1(prio=50,is_aggr=0,status=1) wan1(prio=50,is_aggr=0,status=1)
'FGT70FTKXXXXXXXX': ha_prio/o=0/0, link_failure=0, pingsvr_failure=0, flag=0x00000001, mem_failover=0, uptime/reset_cnt=7/1
'FGT70FTKYYYYYYYY': ha_prio/o=1/1, link_failure=0, pingsvr_failure=0, flag=0x00000000, mem_failover=0, uptime/reset_cnt=0/1
果たしてこれで正常動作するのか?と疑問を持つユーザーもいますが、特に問題はありません。この瞬間も、両者の内部カウンタは同時に上がり続けています。プライマリに選出されるためのカウンタ値が十分に上がり切るまで待てば、どちらかが脱落した時、Ageに差が生まれます。その時、Ageのカウンタが300秒以上ある方がプライマリに選出されます。オーバーライド設定が無効(デフォルト)の状態で、HAを最も安全に運用する方法は、フェイルオーバーやカウンタリセット等のアクション後、「とにかく300秒以上待つこと」です。
HA徹底入門 シリーズ一覧
著者
関連製品
-
FortiGate/FortiGateCloud強固なセキュリティ機能を一台で提供する統合脅威管理(UTM)アプライアンスです。
- Cloud / SaaS
- Network Security
- OT Security








