사후 분석: 나쁜 게이트웨이
2024-01-11에 도메인 갱신 실패로 인한 Logto 서비스 중단 사건 보고서입니다.
2024-01-11에 도메인 갱신 실패로 인한 Logto 서비스 중단 사건 보고서입니다.
2024-01-11에 Logto 서비스는 수많은 502 Bad Gateway 오류와 함께 서비스 중단을 경험했습니다.
logto.app 도메인이 만료되고 갱신이 완료되지 않았습니다.logto.app 도메인이 만료되었을 수 있다는 것을 알게 되었습니다. 도메인 등록기관을 확인한 결과 갱신에 실패했고 도메인이 만료되었습니다.우리의 도메인은 일반적으로 도메인 등록기관을 통해 자동으로 갱신됩니다. 그러나 이번에는 갱신 과정이 잠재적인 잘못된 구성으로 인해 실패했습니다. 그 결과 logto.app 도메인이 만료되었고 DNS 기록이 등록기관의 주차 페이지를 가리키도록 업데이트되었습니다.
현재 인증 서비스는 운영 중이지만 대부분의 요청은 도달하지 못합니다. Logto 관리자 테넌트만 auth.logto.io 도메인에 연결되어 만료에 영향을 받지 않습니다.
인증 서비스 외에도 Logto 테넌트를 조정하고 Logto 클라우드 콘솔(프론트엔드 앱)을 제공하는 클라우드 서비스가 있습니다.
사용자가 클라우드 콘솔을 운영할 때, 앱은 인증 서비스를 직접 호출하지 않고 모든 관리 작업을 위해 클라우드 서비스를 호출합니다.
Logto 관리 API와 일치시키기 위해, 우리는 인증 서비스로 요청을 위임하는 "관리 API 프록시" 엔드포인트를 설계했습니다. 전체 흐름은 이렇게 보입니다:
*.logto.app 도메인에 인증서 불일치 문제가 있기 때문에, 클라우드 서비스 (Node.js)는 요청을 거부하고 오류를 발생시킵니다.
일반적으로 요청 오류는 전체 서비스가 중단되지 않도록 잡히지만, 오류가 프록시 모듈에서 전파되었기 때문에 기존의 오류 처리 로직이 이를 잡을 수 없어 서비스 중단이 발생했습니다.
모든 Logto 서비스에는 적어도 세 개의 복제본이 있지만, 거의 모든 클라우드 콘솔의 요청으로 오류가 발생해 모든 복제본이 쉽게 중단되었습니다. 자동 복구 메커니즘이 작동하기까지 시간이 걸리므로 서비스가 잠시 동안 사용할 수 없게 됩니다.
이것이 사용자가 502 Bad Gateway 오류를 보게 되는 이유입니다(모든 복제본 중단). 클라우드 서비스가 활성화되면 새로운 클라우드 콘솔 요청과 재시도 요청이 들어오고, 중단 루프가 계속됩니다.
클라우드 서비스가 중단되면 인증 서비스에도 영향을 미칩니다, 주로 /api/.well-known/sign-in-exp 엔드포인트에요. 이 엔드포인트는 클라우드 서비스에서 가져와야 하는 커넥터 정보를 포함한 로그인 경험 구성을 가져오는 데 사용됩니다.
logto.app에 대한 모니터링 추가합니다.