11 月 18 日,Cloudflare 在全球范围内经历了一次严重的网络中断事件,导致大量依赖其服务的网站、API 和内部系统出现访问异常。故障持续数小时,期间产生明显的 HTTP 5xx 错误、Dashboard 登录失败、Workers KV 访问异常等问题。
此次事件并非源于攻击或外部因素,而是由内部配置与权限调整引发的一连串连锁反应。
一、故障的根本原因
根据 Cloudflare 官方说明,
1. 数据库权限变更引发查询结果异常
Cloudflare 在其 ClickHouse 集群中修改了 distributed 查询的权限逻辑。原计划是简化 metadata 查询,但变更后查询返回了更多底层数据库(例如 r0 库)的元数据,导致特征生成管道得到比预期更多的行。
这些特征行用于生成 Bot Management(机器人管理)模块的运行配置文件。
2. 特征文件规模超出限制
错误的查询结果使得生成的特征文件行数超过系统预设上限。该上限用于保证配置可控,但意外的增长没有被拦截,最终生成了异常巨大的配置文件。
3. 特征文件推送触发代理服务异常
这个异常的特征文件被推送到网络中的所有边缘节点。Cloudflare 的代理服务在解析这份文件时触发未捕获的错误(panic),导致核心流量处理能力下降,大量请求无法通过代理层正常处理。
此模块是流量路径的关键组件,因此故障迅速扩大到整个网络。
二、故障影响
1. 全球范围的 HTTP 5xx 错误
大量网站和 API 出现 502、503 等错误,属于核心代理层故障的直接表现。
2. Dashboard 和登录服务受影响
由于 Turnstile 及 Access 依赖 Workers KV,而 KV 受到代理影响,用户无法登录 Cloudflare Dashboard。
3. Workers 服务及相关内部系统出现异常
Workers KV 出现响应率下降,部分依赖 KV 的功能出现不可用状态。Cloudflare 内部控制面也受到波及。
4. 故障范围覆盖广、恢复需要多步回滚与旁路
Cloudflare 最终通过以下方式恢复系统:
- 使用旧版本的已知正常特征文件替换错误文件
- 为 KV、Access 等服务临时绕过代理路径
- 验证全网推送的恢复配置生效
最终在约 17:06 全部恢复。
人话:当你用了 unwrap() 而未经测试的时候
