Postmortem: Bad Gateway
Rapporto sull'incidente per l'interruzione del servizio Logto del 2024-01-11 a causa del fallimento del rinnovo del dominio.
Rapporto sull'incidente per l'interruzione del servizio Logto del 2024-01-11 a causa del fallimento del rinnovo del dominio.
Il 2024-01-11, i servizi Logto hanno riscontrato un'interruzione del servizio con molti errori 502 Bad Gateway.
logto.app è scaduto e il rinnovo non è stato completato.logto.app potrebbe essere scaduto. Abbiamo controllato il registrar del dominio e abbiamo scoperto che non è stato rinnovato con successo e il dominio era scaduto.I nostri domini vengono solitamente rinnovati automaticamente attraverso il nostro registrar di domini. Tuttavia, in questo caso, il processo di rinnovo è fallito a causa di una possibile configurazione errata. Di conseguenza, il dominio logto.app è scaduto e i record DNS sono stati aggiornati per puntare alla pagina di parcheggio del registrar.
Al momento, il servizio di autenticazione rimane operativo, ma la maggior parte delle richieste non può raggiungerlo. L'eccezione è il tenant amministrativo di Logto, che si lega al dominio auth.logto.io e non è influenzato dalla scadenza.
Oltre al servizio di autenticazione, abbiamo anche un Servizio Cloud che orchestra i tenant Logto e fornisce il Logto Cloud Console (una app frontend).
Quando un utente opera nel Cloud Console, l'app non chiama direttamente il servizio di autenticazione; invece, chiama il Servizio Cloud per tutte le operazioni di gestione.
Per allinearci con l'API di gestione di Logto, abbiamo progettato un endpoint "proxy dell'API di gestione" per delegare le richieste al servizio di autenticazione. L'intero flusso appare così:
Poiché il dominio *.logto.app ha un problema di mancata corrispondenza del certificato, il Servizio Cloud (Node.js) rifiuta la richiesta e genera un errore.
Normalmente, gli errori di richiesta vengono catturati per evitare che l'intero servizio vada in crash. Tuttavia, poiché l'errore è stato propagato dal modulo proxy, la logica di gestione degli errori esistente non è stata in grado di catturarlo, portando a un crash del servizio.
Sebbene ogni servizio Logto abbia almeno tre repliche, tutte le repliche sono andate facilmente in crash a causa dell'errore che si verificava in quasi tutte le richieste dal Cloud Console. Il meccanismo di ripristino automatico richiede tempo per attivarsi, causando l'indisponibilità del servizio per un po'.
Questo è il motivo per cui gli utenti vedono errori 502 Bad Gateway (tutte le repliche sono andate in crash). Una volta che il servizio Cloud è attivo, entrano nuove richieste dal Cloud Console e riprovano, e il ciclo di crash continua.
Quando il Servizio Cloud è giù, ha anche un impatto sul servizio di autenticazione per determinati endpoint, principalmente /api/.well-known/sign-in-exp. Questo endpoint viene utilizzato per recuperare la configurazione dell'esperienza di accesso che include le informazioni sul connettore che devono essere recuperate dal Servizio Cloud.
logto.app.