Postmortem: Bad Gateway
Vorfallbericht für den Logto-Dienstausfall am 2024-01-11 aufgrund eines Fehlers bei der Domainverlängerung.
Vorfallbericht für den Logto-Dienstausfall am 2024-01-11 aufgrund eines Fehlers bei der Domainverlängerung.
Am 2024-01-11 erlebten die Logto-Dienste einen Dienstausfall mit vielen 502 Bad Gateway-Fehlern.
logto.app-Domain ist abgelaufen, und die Verlängerung konnte nicht abgeschlossen werden.logto.app-Domain möglicherweise abgelaufen ist. Wir überprüften den Domain-Registrar und stellten fest, dass sie nicht erfolgreich verlängert wurde und die Domain abgelaufen war.Unsere Domains werden normalerweise automatisch über unseren Domain-Registrar verlängert. In diesem Fall jedoch schlug der Verlängerungsprozess aufgrund einer möglichen Fehlkonfiguration fehl. Folglich lief die logto.app-Domain ab und die DNS-Einträge wurden aktualisiert, um auf die Parkplatzseite des Registrars zu verweisen.
Der Auth-Dienst ist noch in Betrieb, aber die meisten Anfragen können ihn nicht erreichen. Eine Ausnahme ist der Logto-Admin-Mieter, der an die auth.logto.io-Domain gebunden ist und von der Ablaufzeit nicht betroffen ist.
Zusätzlich zum Auth-Dienst haben wir auch einen Cloud-Dienst, der die Logto-Mieter orchestriert und die Logto Cloud-Konsole (eine Frontend-App) bereitstellt.
Wenn ein Benutzer die Cloud-Konsole bedient, ruft die App den Auth-Dienst nicht direkt auf; stattdessen ruft sie den Cloud-Dienst für alle Verwaltungsoperationen auf.
Um dem Logto-Management-API zu entsprechen, haben wir einen "Management-API-Proxy"-Endpunkt entworfen, um Anforderungen an den Auth-Dienst zu delegieren. Der gesamte Ablauf sieht so aus:
Da die *.logto.app-Domain ein Zertifikatsfehlerproblem hat, lehnt der Cloud-Dienst (Node.js) die Anfrage ab und wirft einen Fehler.
Normalerweise werden Anforderungsfehler abgefangen, um zu verhindern, dass der gesamte Dienst abstürzt. Da der Fehler jedoch vom Proxy-Modul weitergegeben wurde, konnte die bestehende Fehlerbehandlungslogik ihn nicht abfangen, was zu einem Dienstabsturz führte.
Obwohl jeder Logto-Dienst mindestens drei Replikate hat, stürzten alle Replikate leicht ab, da der Fehler bei fast jeder Anfrage aus der Cloud-Konsole auftrat. Es dauert, bis der Selbstheilungsmechanismus greift, was den Dienst für eine Weile nicht verfügbar macht.
Das ist der Grund, warum Benutzer 502 Bad Gateway-Fehler sehen (alle Replikate sind abgestürzt). Sobald der Cloud-Dienst wieder verfügbar ist, treffen neue und wiederholte Cloud-Konsolenanfragen ein, und die Absturzschleife geht weiter.
Wenn der Cloud-Dienst ausfällt, hat dies auch Auswirkungen auf den Auth-Dienst für bestimmte Endpunkte, überwiegend /api/.well-known/sign-in-exp. Dieser Endpunkt wird verwendet, um die Anmeldeerfahrungskonfiguration abzurufen, die Connector-Informationen enthält, die vom Cloud-Dienst abgerufen werden müssen.
logto.app hinzufügen.