繁體中文(台灣)
事後分析: Bad Gateway
2024-01-11 Logto 服務中斷事件報告,由於域名續約失敗所致。
2024-01-11 Logto 服務中斷事件報告,由於域名續約失敗所致。
2024-01-11,Logto 服務出現中斷,並出現大量 502 Bad Gateway 錯誤。
logto.app 域名過期,續約未能成功完成。logto.app 域名可能已經過期。我們檢查了域名註冊商後發現它沒有成功續約並且域名已過期。我們的域名通常通過域名註冊商自動續約。然而,在這個案例中,因為可能的配置錯誤導致續約過程失敗。因此,logto.app 域名過期,並且 DNS 記錄被更新指向註冊商的停泊頁。
截至目前,認證服務保持運行,但大多數請求無法到達它。例外的是 Logto 管理員租戶,它綁定到 auth.logto.io 域名並不受過期影響。
除了認證服務,我們還有一個雲服務,負責協調 Logto 租戶並提供 Logto 雲控制台(前端應用)。
當使用者操作雲控制台時,應用並不直接調用認證服務;而是向雲服務發出所有管理操作的請求。
為了與 Logto 管理 API 保持一致,我們設計了一個「管理 API 代理」端點,將請求委託給認證服務。整個流程如下所示:
由於 *.logto.app 域名有憑證不匹配問題,雲服務 (Node.js) 拒絕請求並拋出錯誤。
通常,請求錯誤會被捕捉以防止整個服務崩潰。然而,因為錯誤是從代理模組傳播出來的,現有的錯誤處理邏輯無法捕捉到它,導致服務崩潰。
儘管每個 Logto 服務至少有三個副本,但由於錯誤發生在幾乎每個來自雲控制台的請求,所有副本都容易崩潰。自動恢復機制啓動需要時間,導致服務暫時不可用。
這就是為什麼使用者會看到 502 Bad Gateway 錯誤(所有副本崩潰)。當雲服務恢復,新的和重試的雲控制台請求進來,崩潰循環繼續。
當雲服務宕機,它也會影響認證服務的某些端點,主要是 /api/.well-known/sign-in-exp。這個端點用於獲取登入體驗配置,包括需要從雲服務獲取的連接器信息。
logto.app 的監控。