简体中文
事后分析:错误网关
2024-01-11 的 Logto 服务中断事件报告,原因是域名续订失败。
2024-01-11 的 Logto 服务中断事件报告,原因是域名续订失败。
在 2024-01-11,Logto 服务出现了很多 502 错误网关错误,导致服务中断。
logto.app 域名过期,续订未能成功完成。logto.app 域名可能已经过期。我们检查了域名注册商,发现它没有成功续订并且域名已过期。我们的域名通常通过我们的域名注册商自动续订。然而,在这个实例中,由于可能的配置错误,续订过程失败了。因此,logto.app 域名过期,DNS 记录被更新指向注册商的停放页面。
目前,认证服务仍然在运行,但大多数请求无法到达它。例外的是 Logto 管理租户,它绑定到 auth.logto.io 域并不受过期影响。
除了认证服务,我们还有一个云服务,用于协调 Logto 租户并服务于 Logto 云控制台(一个前端应用)。
当用户操作云控制台时,应用不会直接调用认证服务;相反,它会调用云服务进行所有管理操作。
为了与 Logto 管理 API 对齐,我们设计了一个“管理 API 代理”端点来委托请求到认证服务。整个流程如下所示:
由于 *.logto.app 域存在证书不匹配问题,云服务(Node.js)拒绝请求并抛出错误。
通常,请求错误会被捕获以防止整个服务崩溃。然而,由于错误是从代理模块传播出来的,现有的错误处理逻辑无法捕获它,导致服务崩溃。
尽管每个 Logto 服务至少有三个副本,但所有副本都因几乎每个来自云控制台的请求都有错误而容易崩溃。自动恢复机制需要时间启动,导致服务暂时不可用。
这就是用户看到 502 错误网关错误(所有副本崩溃)的原因。一旦云服务启动,新的和重试的云控制台请求进入,崩溃循环继续。
当云服务宕机时,它也影响认证服务的某些端点,主要是 /api/.well-known/sign-in-exp。这个端点用于获取登录体验配置,其中包括需要从云服务中获取的连接器信息。
logto.app 添加监控。