2024年11月14日,Cloudflare发生了一个事件,影响了大多数使用Cloudflare日志的客户。在大约3.5小时的服务中断期间,约55%的日志未能发送给客户并因此丢失。
在大规模系统中,故障是不可避免的,至关重要的是,子系统需要保护自己免受其他部分故障的影响,以防止连锁反应。在本案例中,系统某个部分的配置错误导致另一个部分的过载,而该部分本身也存在配置错误。如果该部分得到了正确配置,可能就能防止日志丢失。
背景
Cloudflare的网络是一个全球分布的系统,支持和提供各种服务。该系统的每个部分都会生成事件日志,记录有关全球各地系统运行的详细元数据。例如,Cloudflare的CDN每接到一个请求就会生成一个事件日志。Cloudflare Logs将这些事件日志提供给客户,客户可以用于合规性、可观察性和账务等多种场景。
在一个典型的工作日,Cloudflare向客户发送大约4.5万亿个事件日志。虽然这些日志只占总处理日志量50万亿中的不到10%,但在构建一个可靠和容错的系统时,仍然面临着独特的规模挑战。
系统架构
Cloudflare的网络由成千上万台单独的服务器、网络硬件组件和专门的软件程序组成,分布在全球330多个城市。虽然Cloudflare的Edge Log Delivery产品会直接从每个服务器