Postmortem: Gateway Ruim
Relatório de incidente para a interrupção do serviço Logto em 2024-01-11 devido a falha na renovação do domínio.
Relatório de incidente para a interrupção do serviço Logto em 2024-01-11 devido a falha na renovação do domínio.
Em 2024-01-11, os serviços Logto experimentaram uma interrupção com muitos erros 502 Gateway Ruim.
logto.app expirou e a renovação falhou em completar.logto.app pode ter expirado. Verificamos o registrador de domínios e descobrimos que não renovou com sucesso e o domínio expirou.Nossos domínios são normalmente renovados automaticamente por meio do nosso registrador de domínios. No entanto, nesta instância, o processo de renovação falhou devido a uma potencial configuração incorreta. Consequentemente, o domínio logto.app expirou, e os registros DNS foram atualizados para apontar para a página de estacionamento do registrador.
Até agora, o serviço de autenticação continua operacional, mas a maioria das solicitações não consegue alcançá-lo. A exceção é o tenant admin do Logto, que está vinculado ao domínio auth.logto.io e não é afetado pela expiração.
Além do serviço de autenticação, também temos um serviço cloud que orquestra os tenants do Logto e serve o Logto Cloud Console (um aplicativo frontend).
Quando um usuário opera o Cloud Console, o aplicativo não chama diretamente o serviço de autenticação; ao invés disso, ele chama o serviço cloud para todas as operações de gerenciamento.
Para alinhar com a API de Gerenciamento Logto, projetamos um endpoint "proxy da API de Gerenciamento" para delegar solicitações ao serviço de autenticação. O fluxo completo é assim:
Como o domínio *.logto.app tem um problema de incompatibilidade de certificado, o serviço cloud (Node.js) rejeita a solicitação e gera um erro.
Normalmente, os erros de solicitação são capturados para evitar o colapso total do serviço. No entanto, como o erro foi propagado do módulo proxy, a lógica de tratamento de erro existente não foi capaz de capturá-lo, levando a um colapso do serviço.
Apesar de todo serviço Logto ter pelo menos três réplicas, todas as réplicas colapsaram facilmente devido ao erro ocorrer em quase todas as solicitações do Cloud Console. Leva tempo para o mecanismo de auto-recuperação entrar em ação, causando a indisponibilidade do serviço por um tempo.
Essa é a razão pela qual os usuários veem erros 502 Gateway Ruim (todas as réplicas colapsaram). Uma vez que o serviço cloud está ativo, novas solicitações e tentativas de retry do Cloud Console entram, e o ciclo de colapso continua.
Quando o serviço cloud está fora do ar, afeta também o serviço de autenticação em certos endpoints, principalmente /api/.well-known/sign-in-exp. Este endpoint é usado para buscar a configuração de experiência de login, que inclui informações de conectores que precisam ser buscadas no serviço cloud.
logto.app.