如何利用 Workers 驅動內部維護排程管道
2025-12-22
Kevin Deems, Michael Hoffmann
10 分鐘閱讀
Cloudflare 的資料中心遍佈全球超過 330 個城市,您可能會認為我們能輕鬆地進行維護,而用戶不會察覺。然而,現實是,任何中斷性的維護都需要精心規劃。隨著 Cloudflare 的成長,透過人工協調來管理這些複雜性變得幾乎不可能。
建立系統以降低維護風險
為了避免同時中斷影響用戶,我們需要一個集中化的自動化系統作為保障。我們透過 Cloudflare Workers 建立了一個排程器,確保在快速運作的同時,服務穩定性不會受到影響。
設想一個邊緣路由器,作為一組小型冗餘網關的一部分,這些網關共同連接公共互聯網和 Cloudflare 的多個資料中心。我們必須確保不會因為所有路由器同時離線而切斷後面的數據中心。
我們的維護排程器可以確保總有至少一個邊緣路由器在某地區保持活躍,並在安排維護時檢查多個事件的組合是否會導致所有數據中心同時離線。
維護限制
每個限制都從一組建議的維護項目開始,如網絡路由器或伺服器列表。我們會找到所有與建議的維護時間窗口重疊的維護事件。接下來,我們會聚合產品 API,例如 Aegis 客戶 IP 池列表,確保至少一個數據中心在線。
例如,Aegis 返回一組客戶要求特定資料中心 ID 的 IP 範圍:
[
{
"cidr": "104.28.0.32/32",
"pool_name": "customer-9876",
"port_slots": [
{ "dc_id": 21, "other_colos_enabled": true },
{ "dc_id": 45, "other_colos_enabled": true }
],
"modified_at": "2023-10-22T13:32:47.213767Z"
}
]
在這種情況下,數據中心 21 和 45 是相互關聯的,因為我們需要至少一個數據中心在線,以滿足 Aegis 客戶 9876 的要求。