美國時間2024年12月11日,OpenAI 發生一起罕見的服務中斷事件,API、ChatGPT 與 Sora 等關鍵產品全面崩潰。 該事件從當日下午3:16(PST)開始,至晚上7:38才全面恢復。此故障並非因安全漏洞或新產品發布引起,而是來自一次新的「遙測服務」部署,意外導致 Kubernetes 系統的核心控制平面癱瘓。
事件影響:
- ChatGPT:於5:45 PM 部分恢復,7:01 PM 完全恢復。
- API:5:36 PM 開始復原,至7:38 PM 全面恢復。
- Sora:7:01 PM 恢復運作。
根本原因:Kubernetes 控制平面過載
OpenAI 運行著數百個 Kubernetes 叢集,該系統分為「控制平面」與「資料平面」兩部分,前者負責管理叢集運作,後者則負責執行服務工作負載。
事件發生前,OpenAI 推出了新的遙測服務,目的是收集更詳盡的 Kubernetes 控制平面指標,以提升系統可見性。然而,這項服務的配置問題導致每個節點都同時執行大量 Kubernetes API 請求。由於 OpenAI 擁有成千上萬的節點,API 伺服器瞬間負載過高,導致控制平面全面崩潰。
重要關鍵:
- DNS 解析依賴控制平面:資料平面雖能獨立運作,但服務間的 DNS 解析必須依賴 Kubernetes 控制平面。當控制平面癱瘓後,DNS 服務開始失效,服務之間無法正常通訊。
- 測試盲點:部署前的測試未涵蓋大型叢集的特定場景,且 DNS 快取延遲使問題在短時間內未被察覺,讓部署持續進行。
問題修復:多管齊下的救援方案
在確認問題後,工程團隊同時啟動多個應急措施:
- 縮小叢集規模:降低整體 API 請求壓力。
- 限制網路存取:阻斷新請求,讓控制平面逐漸恢復。
- 擴充 API 伺服器資源:增加處理能力,解除控制平面瓶頸。
上述措施逐漸恢復 Kubernetes 控制平面的存取權限,工程團隊隨即撤回問題遙測服務,並分批將流量轉移至健康叢集。部分叢集仍需額外干預,因為許多服務同時下載資源,導致資源飽和。
時間軸:
- 12月10日:新遙測服務部署至測試環境,運行正常。
- 12月11日 2:23 PM:正式部署啟動。
- 3:16 PM:系統開始降級,問題確認。
- 4:36 PM:首個叢集恢復運作。
- 7:38 PM:所有叢集全面恢復。
預防措施:
為避免類似事故再發,OpenAI 計畫執行以下五大措施:
- 逐步分階段部署:加強監控基礎設施變更,確保早期發現異常並控制影響範圍。
- 故障注入測試:模擬惡劣場景,測試資料平面在控制平面故障時的存活能力。
- 緊急存取機制:設置「斷點修復」工具,確保即使控制平面超載時也能強制存取。
- 資料平面與控制平面解耦:減少 DNS 依賴性,確保資料平面可獨立運行。
- 加速恢復機制:改善快取與動態限流機制,並定期演練快速叢集恢復。
結論:
這起事件暴露了 OpenAI 系統在基礎設施變更管理和容錯能力上的不足。OpenAI 深知服務可靠性的重要性,並承諾持續改進,提供穩定可靠的服務給用戶。
OpenAI 對此次事件給予的影響向所有使用者致歉,並感謝大家的耐心等待與支持。
事件解決時間:2024年12月11日 7:38 PM PST
更新時間:2024年12月12日 5:19 PM PST