ゲームラグ白書 › L5 データセンターのネットワーク機器
ネットワーク機器のフェイルオーバー Network device failover
原因ID dc-failover · 主担当 インフラチーム・ネットワークインフラ · 副担当 ゲーム開発チーム・サーバー開発, ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
ルーター・ファイアウォールの1台が故障して予備機に切り替わる(フェイルオーバー)数秒の間、全員が止まります。
なぜ 機器の故障またはメンテナンスで予備機に切り替え → すると 切り替えに数秒、セッション情報が同期されていなければ接続がリセットされる → 画面では サーバーの全ユーザーが同時にフリーズ、大量の切断
- 症状
- フリーズ, 切断
- 要因
- パケットロス
- 誰に起きるか
- サーバー全体
- いつ
- ときどきランダムに
- 担当
- 主担当 インフラチーム・ネットワークインフラ · 副担当 ゲーム開発チーム・サーバー開発, ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- サーバー:短い途切れ(数秒)に耐えるタイムアウト、切れても再接続すればセッショントークンでセッションを引き継げるようにする。クライアント:切れたら自動で再接続(一斉に殺到しないよう再試行間隔をランダムに分散)。
- インフラチームの対応
- 接続状態を共有する冗長化、BFDで故障を1秒以内に検知、切り替え試験を定期的に実施。
- 数値の目安
- 機器が故障をすぐに検知すれば1〜3秒前後です。高速な故障検知(BFD)なしでBGPのデフォルトのタイマーだけに任せると、隣接する機器が検知するまでの90〜180秒間、経路が途切れることがあります。
- グラフでは
- 接続が一斉に切れる · 接続数、サーバー全体の送受信量
- 確認箇所
- ルーター・ファイアウォールのイベントログ(VRRPの役割変更、BFD・BGPセッションのダウン、フェイルオーバーの記録)と、同じ時刻のサーバー全体の接続数・送受信量を確認
- 該当する場合
- 機器ログの切り替え時刻に、その機器の配下にあるすべてのサーバーのトラフィックが数秒間0になるか、接続数が同時に落ちる
- 該当しない場合
- 1台のサーバーの接続だけが落ちるなら「サーバークラッシュ」か「NICドライバー・ファームウェアの問題」。機器ログがきれいで、止まったサーバーがクラウドの仮想マシン1台なら「クラウドホストのメンテナンス・ライブマイグレーション」
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- RFC 5880: Bidirectional Forwarding Detection (BFD) IETF
ルーティングプロトコルのHello方式は故障の検知に1秒以上かかるため、より短い時間で検知するために作られたBFD - RFC 7938: Use of BGP for Routing in Large-Scale Data Centers IETF
BGPのkeepaliveだけに頼ると収束が遅く、リンクダウンを即座に受け取ってセッションを切ればms単位で検知して再収束 - RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6 IETF
VRRPアドバタイズメントはデフォルト1秒間隔、予備機はアドバタイズメントが約3倍の間隔を超えて途切れると役割を引き継ぐ(デフォルト設定で3秒強)
あわせて読みたい原因
同じ層:L5 データセンターのネットワーク機器
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る