这篇博客文章已有 4 年,可能已经过时。
事后分析 – WireGuard 伺服器连接问题
2020 年 4 月 29 日
发生了什么
在 4 月 27 日的晚上,我们经历了部分 WireGuard® 服务中断,大约在瑞典时间 19:00 到 23:30 之间。由于运行 4.15版本内核的伺服器出现 NAT 问题,导致一些伺服器无法转发流量。总计约 130 台伺服器在这段时间内受到影响。
促成因素
结论是,只有运行 4.15 版本内核的伺服器受到影响。无论操作系统版本是 Ubuntu 16.04 还是 18.04,情况皆是如此。
至于为什么这个内核版本会成为罪魁祸首,以及在这次部署中造成问题的具体原因仍不清楚。
解决方案
通过将受影响伺服器的内核更新或降级到不受影响的版本,问题得以解决。
影响
部分降服务时间:4.5 小时。
受影响伺服器:132 台线上 202 台的 WireGuard 伺服器。
时间表
所有时间均为瑞典当地时间。
2020-04-27 18:14 – 开始部署扩展的端口范围和系统监控变更至我们的 WireGuard 伺服器。
2020-04-27 19:16 – 客户有关 WireGuard 伺服器无法连接的电子邮件数量急剧增加。
2020-04-27 19:30 – 工程师开始排查问题。
2020-04-27 19:40 – 确认问题与 NAT 有关,伺服器未能正确转发流量。
2020-04-27 20:32 – 确认问题源于内核版本 4.15,24 日时几台伺服器也已识别出同样问题。
2020-04-27 20:35 – 实施替换内核为不受影响版本的暂时解决方案得到确认。
2020-04-27 20:42 – 开始制作受影响伺服器的列表。
2020-04-27 21:08 – 开始修复。伺服器逐一恢复上线。
2020-04-27 23:30 – 大部分伺服器的修复工作完成,剩余伺服器标记为下线。
2020-04-28 06:50 – 在最初的修复过程中失效的 6 台伺服器恢复上线。
对我们部署程序的改进
为了减少类似事件再次发生的可能性及其影响,我们对部署程序进行了调整,包括以下几点:
- 增加最低的变更部署时间,并在生产伺服器的子集上确认变更有效,至少提前 24 小时再部署到其余伺服器。
- 确保部署在当地瑞典时间 13:00 或更早开始,以便大多数工程师在场,应对潜在的部署问题。
- 改进现有的端到端与功能测试工具,以验证伺服器在部署后的功能。