FortiGate HA 2025年10月2日
HAにおけるセッションピックアップの基礎と運用ポイント
はじめに
- FortiGateをHA (High Availability) 構成で運用する際、フェイルオーバー時にユーザ影響を最小化するための鍵となるのがセッション同期です。
特に「セッションピックアップ (Session Pickup)」を有効化することで、アクティブ機からスタンバイ機への切替時にセッションを引き継ぎ、再接続を伴わない通信継続を可能にします。 - 本記事ではセッションピックアップの仕組みや設定、運用上の注意点について整理します。
※HA全体の仕組みやプライマリ選定、ハートビート設計については別記事で詳しく解説していますので、あわせてご参照ください。
1. セッションピックアップとは
- セッションピックアップは、HAフェイルオーバー時にセッションテーブルを同期させ、TCPセッションを継続させるための仕組みです。
TCPが基本対象
- set session-pickup enable を設定すると、TCPセッションが同期対象になります。
- TCPシーケンス番号やフラグ情報も複製されるため、フェイルオーバー後もアプリケーションはほぼ無停止で通信継続が可能です。
UDP/ICMPなどのコネクションレスプロトコルも対応可能
- set session-pickup-connectionless enable を追加するとUDPやICMPなども同期対象に含められます。
- ただし、これらは一般的にTTLが短く、再確立の影響が小さいため、装置の負荷を下げたい場合は無効にする運用も選択肢になります。
CPUリソースの消費に注意
- セッション同期はCPUで処理されるため、大量セッション環境では有効化によって負荷が上がる可能性があります。
2. セッション情報の同期方法
- セッション同期は、クラスタを構成するFortiGate間でハートビートリンクを用いて行われます。
ハートビートインターフェイスのみを設定している場合
- セッション同期トラフィックもハートビートインターフェイスを経由します。
セッションシンク専用インターフェイスを設定している場合
- config system ha 内で set session-sync-dev
を指定することで、セッション同期を専用インターフェイスで実施可能です。 - この場合、ハートビートトラフィックとセッション同期トラフィックを分離できるため、安定性・セキュリティの観点から推奨されます。
ハートビート保護の観点からの分離推奨
- ハートビートパケットはクラスタ維持に不可欠であり、他トラフィックで輻輳が起きるとクラスタ不安定のリスクがあります。
- そのため、ハートビートとセッションシンクは物理的に分離する設計が望ましいとされています。
設定例:セッションシンク専用インターフェイスを利用する場合
config system ha
set group-id 10
set mode a-p
set password
set hbdev "port3" 100 "port4" 50
set session-pickup enable
set session-pickup-connectionless disable
set session-sync-dev "port5"
end
- hbdev … ハートビート用インターフェイス(例: port3/port4)
- session-sync-dev … セッション同期専用インターフェイス(例: port5)
- TCPのみ同期(UDP/ICMPは除外する例)
3. 運用のベストプラクティス
- TCPのみ同期を基本とし、UDP/ICMPは必要性に応じて選択
- CPU負荷を監視し、セッション同期の影響を定期的に確認
- 専用のセッションシンクインターフェイスを用意し、ハートビートと分離
- フェイルオーバーテストを実施し、実際のアプリケーション影響を検証
まとめ
- セッションピックアップは、HAフェイルオーバーの信頼性を大きく向上させる有効な機能です。ただし、すべてのセッションを同期対象にすれば良いわけではなく、CPU負荷やTTLの短い通信の性質を理解した上で最適化する必要があります。
特に大規模環境では、ハートビートとセッションシンクを分けて設計すること、対象プロトコルを取捨選択することが安定稼働の鍵となります。