フェイルオーバー時間を短縮するための具体的チューニング方法【設計〜実装まで完全解説】

  • URLをコピーしました!

冗長構成を組んでいるのに、

  • 切替に30秒以上かかる
  • アプリがタイムアウトする
  • ユーザから「一瞬落ちた」と言われる

このような問題に悩んでいませんか?

本記事では、ネットワーク/FW/L3SW/サーバを跨ぐ構成において、 フェイルオーバー時間が長くなる本当の原因と、 現場で実際に効果がある具体的チューニング方法を体系的に解説します。

この記事を読むだけで、

  • どこを調整すれば何秒短縮できるのか
  • どのレイヤがボトルネックか
  • 安全な短縮手順

まで理解できる構成になっています。

目次

■ 結論:フェイルオーバー時間は「最も遅いレイヤ」で決まる

フェイルオーバー時間は以下の合計です。

検知時間 + 収束時間 + ARP更新時間 + セッション再確立時間

つまり、 どれか1つでも遅ければ全体が遅くなります。

■ レイヤ別:フェイルオーバー時間の内訳と短縮方法


① L2レイヤ(STP関連)

■ 遅くなる原因

  • STPがListening/Learningを経由
  • PortFast未設定
  • トポロジ変更通知(TCN)によるMACフラッシュ

■ チューニング方法

spanning-tree portfast
spanning-tree portfast trunk

可能なら:

  • RSTPへ移行
  • STP依存をやめてL3設計へ移行

👉 期待短縮:30秒 → 1秒未満

② FHRP(HSRP / VRRP)

■ デフォルト値(遅い)

Hello: 3秒
Hold: 10秒

→ 最大10秒停止

■ 推奨チューニング

standby 1 timers msec 200 msec 600

200ms Hello / 600ms Hold

👉 期待短縮:10秒 → 0.6秒

※CPU負荷とのバランス要確認

③ ルーティングプロトコル(OSPF/BGP)

■ OSPFの場合

デフォルト:

Hello: 10秒
Dead: 40秒

■ 高速化設定

ip ospf dead-interval minimal hello-multiplier 5

→ 約1秒以内検知

■ BGPの場合

デフォルト:

Keepalive: 60秒
Hold: 180秒

高速化:

neighbor x.x.x.x timers 3 9

👉 9秒以内検知

さらに高速化したい場合:

  • BFD併用(100ms単位)

④ FWクラスタ(セッション同期)

■ 遅延要因

  • セッション同期未設定
  • 同期遅延
  • 非対称ルーティング

■ 確認ポイント

  • session syncが有効か
  • 同期リンク帯域に余裕があるか
  • ECMPで経路が揺れていないか

同期が正しく動いていれば、 TCP再接続なしで切替可能。

⑤ ARPキャッシュ問題

VIP切替後、 クライアント側が古いMACを保持していると通信断が発生します。

■ 対策

  • Gratuitous ARP送信確認
  • arp gratuitous enable
  • arp timeout短縮

⑥ アプリ/TCP側の要因

ネットワークが1秒で復旧しても、 アプリが以下設定だと復旧しません。

  • TCP再送タイマーが長い
  • Keepalive未設定
  • DB接続プール未再接続

Linux確認例

sysctl net.ipv4.tcp_retries2
sysctl net.ipv4.tcp_keepalive_time

■ 実践:フェイルオーバー時間短縮の最適手順

Step1:どこで止まっているか測定

  • パケットキャプチャ
  • show standby / show vrrp
  • show ip route
  • FWログ確認

Step2:検知時間を1秒以下にする

優先順位:

  1. FHRPタイマー調整
  2. OSPF Dead短縮
  3. BFD導入

Step3:L2依存を減らす

  • L3化
  • STP依存削減
  • ループ構成見直し

Step4:セッション維持設計へ移行

  • FW同期確認
  • ステートフル切替検証
  • ECMP無効化検証

■ 目標値の現実的ライン

構成目標フェイルオーバー時間
STP依存構成3〜10秒
FHRP高速化構成1秒未満
BFD + セッション同期300ms以下

■ よくある誤解

誤解①:冗長にすれば速くなる

冗長は「止まらない設計」であり、 速さは「タイマー設計」で決まります。

誤解②:全部最小値にすればいい

タイマーを短くしすぎると、 誤検知 → フラップ → 逆に不安定になります。

■ まとめ

フェイルオーバー時間は、

  • 検知時間
  • 収束時間
  • ARP更新
  • セッション維持

この4要素で決まります。

最も効果が大きいのは:

  • FHRPタイマー短縮
  • OSPF/BFD高速化
  • FWセッション同期確認

設計段階でここまで考慮できていれば、 「切替で落ちるネットワーク」から卒業できます。
フェイルオーバーは「起きる前提」で設計するものです。 ぜひ一度、実機でタイマーと切替時間を計測してみてください。

目次