事後報告:Bad Gateway
2024年1月11日 Logto 服務中斷的事故報告,原因是域名續期失敗。
2024年1月11日 Logto 服務中斷的事故報告,原因是域名續期失敗。
在 2024 年 1 月 11 日,Logto 服務經歷了服務中斷,出現許多 502 Bad Gateway 錯誤。
logto.app 域名到期,續期未能完成。logto.app 域名可能已經到期。檢查域名註冊商後發現未成功續期,域名已過期。我們的域名通常通過域名註冊商自動續期。然而,此次續期過程因潛在的配置錯誤而失敗。因此,logto.app 域名過期,DNS 記錄被更新指向註冊商的停車頁面。
目前,驗證服務仍在運行,但大多數請求無法到達。惟一例外的是綁定到 auth.logto.io 域名的 Logto 管理租戶,不受過期影響。
除了驗證服務,我們還有一個協調 Logto 租戶和提供 Logto 雲端控制台(前端應用程式)的雲端服務。
當使用者操作雲端控制台時,應用程式不直接調用驗證服務,而是調用雲端服務進行所有管理操作。
為了對應 Logto 管理 API,我們設計了一個 "管理 API 代理" 端點來轉發請求到驗證服務。整個流程如下:
由於 *.logto.app 域名存在證書不匹配問題,雲端服務(Node.js)拒絕請求並拋出錯誤。
通常情況下,請求錯誤會被捕獲以防止整個服務崩潰。然而,由於錯誤是從代理模塊傳遞出來的,現有的錯誤處理邏輯未能捕獲,導致服務崩潰。
儘管每個 Logto 服務至少有三個副本,所有副本因雲端控制台的幾乎每個請求都會發生錯誤而輕易崩潰。自動恢復機制需要一些時間來生效,導致服務在一段時間內無法使用。
這就是為什麼使用者看到 502 Bad Gateway 錯誤的原因(所有副本崩潰)。一旦雲端服務恢復,上新的及重試的雲端控制台請求進來,崩潰循環繼續。
當雲端服務中斷時,它也影響驗證服務的某些端點,主要是 /api/.well-known/sign-in-exp。這個端點用於獲取包含連接器信息的登錄體驗配置,需要從雲端服務獲取。
logto.app 的監控。