我们如何将核心单元的启动时间从几小时缩短到几分钟

我们调查了为什么固件更新导致我们的核心服务器需要四个小时才能重新启动。通过深入研究UEFI数据结构和iPXE自动化,我们消除了不必要的超时,并将启动时间缩短到几分钟。

Cloudflare的核心是运行控制平面、计费和分析的集中式数据中心,这与处理用户流量的全球分布式边缘不同。核心服务器是裸机,当重启过程中出现问题时,后果可能会快速级联。他们的启动序列由UEFI编排, UEFI是现代固件标准,用于初始化硬件并将控制权交给操作系统。

这种交接中的小怪癖可能会产生巨大的后果。在例行固件更新后,我们的一些核心服务器需要四个小时才能恢复上线,而不是像以前那样只需要几分钟。本应为期一天的全车队推广将延伸到多日活动中。新节点在第一次启动时就面临着完全超时的挑战。维护窗口膨胀。

工程团队不得不在无人看管的情况下进行升级。当我们将长时间关闭的节点联机时,我们看到的行为被曝光。这些节点的固件已过期,需要多次更新才能解决。将此与我们某些位置的服务器使用的引导协议的最新更新相结合,受影响节点的引导时间变得不可接受。

这是我们如何通过每个可用的网络引导接口跟踪固件怪癖和过度渴望线性搜索的原因,以及我们如何将总引导和升级时间从几小时缩短到几分钟的故事。在此过程中,我们将分享我们对UEFI内部、供应商特定怪癖以及最终解决问题的自动化策略的了解。

网络引导接口允许服务器通过网络而不是从本地存储引导其操作系统。这对于集中、自动化和可扩展的机器启动控制至关重要,尤其是在服务于不同工作负载的全球分布式机队中。由于我们的服务器位于不同的环境中,用于不同的目的,因此它们对特定的网络引导接口有不同的要求。