Postmortem: Zły Gateway
Raport dotyczący awarii usługi Logto w dniu 2024-01-11 z powodu niepowodzenia odnowienia domeny.
Raport dotyczący awarii usługi Logto w dniu 2024-01-11 z powodu niepowodzenia odnowienia domeny.
W dniu 2024-01-11 usługi Logto doświadczyły przerwy w działaniu z wieloma błędami 502 Zły Gateway.
logto.app wygasła, a odnowienie nie zostało zakończone.logto.app mogła wygasnąć. Sprawdziliśmy rejestratora domen i odkryliśmy, że nie została odnowiona powodzeniem, a domena wygasła.Nasze domeny są zazwyczaj automatycznie odnawiane przez naszego rejestratora domen. W tym przypadku proces odnowienia nie powiódł się z powodu potencjalnej błędnej konfiguracji. W konsekwencji domena logto.app wygasła, a rekordy DNS zostały zaktualizowane, aby wskazywały na stronę parkingową rejestratora.
Jak dotąd usługa autoryzacji pozostaje operacyjna, ale większość żądań nie może jej osiągnąć. Wyjątkiem jest administrator Logto, który jest związany z domeną auth.logto.io i nie został dotknięty wygaśnięciem.
Oprócz usługi autoryzacji mamy także usługę Cloud, która organizuje dzierżawy Logto i obsługuje konsolę Logto Cloud (aplikacja frontendowa).
Gdy użytkownik korzysta z Konsoli Cloud, aplikacja nie bezpośrednio wywołuje usługę autoryzacji; zamiast tego wywołuje usługę Cloud dla wszystkich operacji zarządzania.
Aby dostosować się do API zarządzania Logto, zaprojektowaliśmy punkt „proxy API zarządzania”, aby delegować żądania do usługi autoryzacji. Cały przepływ wygląda tak:
Ponieważ domena *.logto.app ma problem z niezgodnością certyfikatu, usługa Cloud (Node.js) odrzuca żądanie i generuje błąd.
Normalnie błędy żądań są wychwytywane, aby zapobiec awarii całej usługi. Jednak ponieważ błąd został propagowany z modułu proxy, istniejąca logika obsługi błędów nie była w stanie go wychwycić, co spowodowało awarię usługi.
Chociaż każda usługa Logto ma co najmniej trzy repliki, wszystkie repliki łatwo się zawiesiły z powodu błędu występującego podczas prawie każdego żądania z Konsoli Cloud. Mechanizm automatycznego odzyskiwania zajmuje trochę czasu, co powoduje, że usługa jest chwilowo niedostępna.
To jest powód, dla którego użytkownicy widzą błędy 502 Zły Gateway (wszystkie repliki zawieszone). Gdy usługa Cloud jest dostępna, nowe i ponawiane żądania z Konsoli Cloud wpływają, a pętla zawieszenia trwa.
Gdy usługa Cloud nie działa, ma to również wpływ na usługę autoryzacji dla niektórych punktów końcowych, głównie /api/.well-known/sign-in-exp. Ten punkt końcowy jest używany do pobierania konfiguracji doświadczenia logowania, która zawiera informacje o łącznikach, które muszą być pobrane z usługi Cloud.
logto.app.