事后分析 – WireGuard 伺服器连接问题

这篇博客文章已有 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 或更早开始,以便大多数工程师在场,应对潜在的部署问题。
  • 改进现有的端到端与功能测试工具,以验证伺服器在部署后的功能。

Leave a Reply

Your email address will not be published. Required fields are marked *