游戏卡顿白皮书 › L5 数据中心网络设备
网络设备故障切换(主备切换) Network device failover
原因 ID dc-failover · 主责 运维团队·网络运维 · 配合 研发团队·服务器开发, 研发团队·客户端开发
在含图示和实验的完整版中打开此卡片 →
某台路由器或防火墙发生故障、切换到备用设备(故障切换)的几秒内,所有人都会卡住。
起因 设备故障或维护时切换到备用设备 → 结果 切换需要几秒;会话信息未同步时连接会被重置 → 画面表现 该服务器的所有玩家同时卡住,大量掉线
- 症状
- 卡住, 掉线
- 因素
- 丢包
- 谁会遇到
- 全服
- 何时出现
- 偶尔随机
- 负责方
- 主责 运维团队·网络运维 · 配合 研发团队·服务器开发, 研发团队·客户端开发
- 研发团队要做的事
- 服务器:超时设置要能扛住短暂中断(几秒);断开后重连时,凭会话令牌接续会话。客户端:断开后自动重连(重试间隔随机打散,避免同时涌入)。
- 运维团队要做的事
- 采用共享连接状态的冗余方案;用 BFD 在 1 秒内检测故障;定期做切换演练。
- 数值参考
- 设备能立即检测到故障时,大约 1~3 秒。没有快速故障检测(BFD)、只靠 BGP 默认定时器时,邻居设备要 90~180 秒才能察觉,期间路由可能一直中断。
- 监控图上
- 连接成批断开 · 连接数、服务器整体收发流量
- 查看位置
- 查看路由器、防火墙的事件日志(VRRP 角色变化、BFD/BGP 会话 down、故障切换记录),以及同一时刻服务器整体的连接数、收发流量
- 确认依据
- 设备日志记录的切换时刻,该设备后面所有服务器的流量有几秒降为 0,或连接数同时下跌
- 排除依据
- 只有一台服务器的连接数下跌,看“服务器崩溃”或“网卡驱动/固件问题”。设备日志干净,停住的服务器是单台云虚拟机,看“云宿主机维护/热迁移”
- 确认手段
- 运维工具即可确认(无需游戏代码)
出处
- 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 收敛很慢;直接根据链路 down 事件断开会话,可以在 ms 级检测并重新收敛 - RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6 IETF
VRRP 通告默认 1 秒一次,备用设备在约 3 倍通告间隔内收不到通告就接管角色(默认设置下 3 秒多一点)
相关原因
同一层:L5 数据中心网络设备
其他层中同样导致“卡住”的原因
查看含图示和实验的原卡片