Obduktion: Dålig Gateway
Incidentrapport för Logto tjänstens avbrott den 2024-01-11 på grund av misslyckad förnyelse av domän.
Incidentrapport för Logto tjänstens avbrott den 2024-01-11 på grund av misslyckad förnyelse av domän.
Den 2024-01-11 upplevde Logto tjänster ett avbrott med många 502 Bad Gateway fel.
logto.app domän löpte ut, och förnyelsen misslyckades.logto.app domän kan ha löpt ut. Vi kontrollerade domänregistratorn och upptäckte att den inte förnyades framgångsrikt och domänen hade löpt ut.Våra domäner förnyas vanligtvis automatiskt genom vår domänregistrator. Men i detta fall, misslyckades förnyelseprocessen på grund av en möjlig felkonfiguration. Följaktligen löpte logto.app domän ut och DNS-posterna uppdaterades för att peka på registratorns parkeringsplats.
För närvarande är auth-tjänsten fortfarande operativ, men de flesta förfrågningar kan inte nå den. Undantaget är Logto admin-tenant som binder till auth.logto.io domänen och påverkas inte av utgången.
Utöver auth-tjänsten har vi också en molntjänst som orkestrerar Logto-tenanterna och tjänar Logto Cloud Console (en frontend-app).
När en användare arbetar med Cloud Console ringer appen inte direkt auth-tjänsten; istället kallar den molntjänsten för alla hanteringsoperationer.
För att anpassa sig till Logto Management API designade vi en "Management API proxy" slutpunkt för att delegera förfrågningar till auth-tjänsten. Hela flödet ser ut så här:
Eftersom *.logto.app domänen har ett certifikatmatchningsproblem, avvisar molntjänsten (Node.js) förfrågan och kastar ett fel.
Normalt fångas förfrågningsfel för att förhindra att hela tjänsten kraschar. Men eftersom felet propagerades från proxymodulen kunde den befintliga felhanteringslogiken inte fånga det, vilket ledde till en tjänstkrasch.
Även om varje Logto tjänst har minst tre repliker, kraschade alla repliker lätt på grund av felet uppstod i nästan varje förfrågan från Cloud Console. Det tar tid för den automatiska återhämtningsmekanismen att slå ihjäl, vilket gör att tjänsten blir otillgänglig ett tag.
Detta är anledningen till att användare ser 502 Bad Gateway fel (alla repliker kraschade). När molntjänsten är uppe kommer nya och återförsökande Cloud Console förfrågningar in och kraschslingan fortsätter.
När molntjänsten är nere påverkar det också auth-tjänsten för vissa slutpunkter, mest /api/.well-known/sign-in-exp. Denna slutpunkt används för att hämta inloggningskonfigurationen som inkluderar kontaktinformation som behöver hämtas från molntjänsten.
logto.app.