事後分析: Bad Gateway
2024-01-11 にドメイン更新失敗によって発生した Logto サービス障害のインシデントレポート。
2024-01-11 にドメイン更新失敗によって発生した Logto サービス障害のインシデントレポート。
2024-01-11 に、Logto サービスは多くの 502 Bad Gateway エラーを伴うサービス停止を経験しました。
logto.app ドメインが失効し、更新が完了しなかったため。logto.app ドメインが失効している可能性に気づく。ドメインレジストラを確認すると、正常に更新されずにドメインが失効していました。私たちのドメインは通常、ドメインレジストラを介して自動的に更新されます。しかし、今回の事例では、潜在的な誤設定により更新プロセスが失敗しました。その結果、logto.app ドメインが失効し、DNS 設定がレジストラの駐車ページを指すように更新されました。
現在、認証サービスは稼働していますが、大半のリクエストはそれに到達できません。唯一の例外は、auth.logto.io ドメインにバインドされている Logto 管理テナントであり、失効の影響を受けていません。
認証サービスに加え、Logto テナントを調整し、Logto Cloud Console(フロントエンドアプリ)を提供するクラウドサービスもあります。
ユーザーが Cloud Console を操作する際、アプリは直接認証サービスを呼び出すのではなく、すべての管理操作にクラウドサービスを呼び出します。
Logto Management API に合致するよう、リクエストを認証サービスに委ねるために「Management API プロキシ」エンドポイントを設計しました。全体のフローは次のようになります:
*.logto.app ドメインに証明書不一致の問題があるため、クラウドサービス(Node.js)はリクエストを拒否し、エラーをスローします。
通常、リクエストエラーはサービス全体のクラッシュを防ぐためにキャッチされます。しかし、プロキシモジュールから伝播されたエラーのため、既存のエラーハンドリングロジックではキャッチできず、サービスクラッシュにつながりました。
すべての Logto サービスには少なくとも 3 つのレプリカがあるが、クラウドコンソールからのほぼすべてのリクエストでエラーが発生したため、すべてのレプリカが容易にクラッシュしました。自動回復メカニズムが作動するまでに時間がかかるため、サービスがしばらく利用できなくなります。
これがユーザーが 502 Bad Gateway エラーを目にする理由です(すべてのレプリカがクラッシュ)。クラウドサービスが復旧すると、新しいクラウドコンソールリクエストと再試行リクエストが入り、クラッシュループが続きます。
クラウドサービスが停止すると、認証サービスの特定のエンドポイント、主に /api/.well-known/sign-in-exp にも影響します。このエンドポイントは、クラウドサービスから取得する必要のあるコネクタ情報を含むサインイン体験設定を取得するために使用されます。
logto.app の監視を追加。