Canva API 网关故障事件总结
事件概述
2024年11月12日,Canva 经历了一次严重的服务中断,导致 canva.com 在 UTC 时间 9:08 AM 至 10:00 AM 期间无法访问。此次中断由 API Gateway 集群故障引发,故障原因包括 Canva 编辑器的软件部署问题、锁争用问题以及 CDN 提供商 Cloudflare 的网络问题。
事件原因分析
- CDN 路由问题:Cloudflare 的 CDN 在两个区域之间的路由出现问题,导致客户端无法正常获取资源。
- 资源下载突发性激增:当资源在 CDN 上可用后,所有客户端同时开始下载,导致超过 270,000 个请求同时完成。
- API Gateway 过载:突发性请求激增至每秒 1.5 百万次,是正常峰值的三倍,导致负载均衡器转变为“过载均衡器”,健康节点迅速变为不健康节点。
- 自动扩展失效:自动扩展未能及时响应,API Gateway 任务因内存耗尽而失败,最终导致系统完全崩溃。
事件处理过程
- 临时流量阻断:在 UTC 时间 9:29 AM,Canva 团队在 Cloudflare 上添加了一条临时防火墙规则,完全阻断所有流量到达 API Gateway,以便新任务能够启动而不被请求淹没。
- 逐步恢复流量:团队逐步恢复流量,大约在 20 分钟内完全恢复了服务。
- 用户通知:在服务恢复期间,Canva 将 canva.com 重定向到状态页面,向用户明确说明正在处理事故。
事件教训与改进措施
- 事故响应流程改进:团队编写了流量阻断和恢复的操作手册,以提高事故响应效率。
- API Gateway 增强弹性:通过增加任务的内存预留和优化线程池配置,提高了 API Gateway 的弹性。
- 监控与预警系统优化:改进了监控和预警系统,以更早地检测和响应类似问题。
专家观点
- Lorin Hochstein:此次事件是一个典型的饱和和弹性问题,强调了在系统进入未设计处理的状态时,事故响应者需要调整系统行为的重要性。
- John Nagle:将此次问题类比为电力系统中的“负载恢复”问题,强调了逐步恢复的重要性。
结论
此次事件凸显了在复杂系统中,小问题可能引发连锁反应,导致严重的中断。Canva 团队通过及时的事故响应和后续的改进措施,致力于减少类似事件的发生,并提高系统的整体弹性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。