한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L5 数据中心网络设备

网络设备故障切换(主备切换) Network device failover

原因 ID dc-failover · 主责 运维团队·网络运维 · 配合 研发团队·服务器开发, 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

某台路由器或防火墙发生故障、切换到备用设备(故障切换)的几秒内,所有人都会卡住。

起因 设备故障或维护时切换到备用设备 → 结果 切换需要几秒;会话信息未同步时连接会被重置 → 画面表现 该服务器的所有玩家同时卡住,大量掉线

症状
卡住, 掉线
因素
丢包
谁会遇到
全服
何时出现
偶尔随机
负责方
主责 运维团队·网络运维 · 配合 研发团队·服务器开发, 研发团队·客户端开发
研发团队要做的事
服务器:超时设置要能扛住短暂中断(几秒);断开后重连时,凭会话令牌接续会话。客户端:断开后自动重连(重试间隔随机打散,避免同时涌入)。
运维团队要做的事
采用共享连接状态的冗余方案;用 BFD 在 1 秒内检测故障;定期做切换演练。
数值参考
设备能立即检测到故障时,大约 1~3 秒。没有快速故障检测(BFD)、只靠 BGP 默认定时器时,邻居设备要 90~180 秒才能察觉,期间路由可能一直中断。
监控图上
连接成批断开 · 连接数、服务器整体收发流量
查看位置
查看路由器、防火墙的事件日志(VRRP 角色变化、BFD/BGP 会话 down、故障切换记录),以及同一时刻服务器整体的连接数、收发流量
确认依据
设备日志记录的切换时刻,该设备后面所有服务器的流量有几秒降为 0,或连接数同时下跌
排除依据
只有一台服务器的连接数下跌,看“服务器崩溃”或“网卡驱动/固件问题”。设备日志干净,停住的服务器是单台云虚拟机,看“云宿主机维护/热迁移”
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. RFC 5880: Bidirectional Forwarding Detection (BFD) IETF
    路由协议的 Hello 机制检测故障要 1 秒以上,BFD 就是为了在更短时间内检测而设计的
  2. RFC 7938: Use of BGP for Routing in Large-Scale Data Centers IETF
    只靠 BGP keepalive 收敛很慢;直接根据链路 down 事件断开会话,可以在 ms 级检测并重新收敛
  3. RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6 IETF
    VRRP 通告默认 1 秒一次,备用设备在约 3 倍通告间隔内收不到通告就接管角色(默认设置下 3 秒多一点)

相关原因

同一层:L5 数据中心网络设备

其他层中同样导致“卡住”的原因

查看含图示和实验的原卡片