2.4 KiB
2.4 KiB
一台你根本不知道它存在的计算机的故障
- 期号: SRE Weekly Issue #242(2020-11-01)
- 作者: Oren Eini — RavenDB
- 链接: https://ayende.com/blog/192261-B/the-failure-of-a-computer-you-didnt-even-know-existed?Key=37a80133-d4db-498a-a62a-321ed12678fc
简介
"CRL 服务器宕机"——在排查数据库连接故障时,这不会是你第一个想到的原因。
正文
一台你根本不知道它存在的计算机的故障
2 分钟阅读
323 词
这篇文章的标题化用了 Leslie Lamport 的一句名言:"分布式系统就是这样的系统:一台你根本不知道它存在的计算机的故障,也能让你的计算机无法使用。"
几天前,我的博客挂了。网站是能打开的,但它一直报错,说无法连接数据库。这很出人意料,因为那个数据库运行在一个三重冗余的系统中,而且经受住了不少折腾。我花了一番功夫才弄清楚到底发生了什么,但根本原因很简单——某台我压根不知道存在的服务器挂了。
具体来说,是 crl.identrust.com 服务器宕机了。我对我们的内部架构相当熟悉,而那台服务器并不是我们依赖的东西。至少我以前是这么想的。CRL 是证书吊销列表(Certificate Revocation List)的缩写。让我们来看看它是从哪冒出来的吧。这是本博客的证书:
它由 Let's Encrypt 签发——整个互联网上超过 50% 的网站都是它签的。而 Let's Encrypt 的证书里藏着这样一个有趣的小细节:
注意,这个 CRL 只在 Let's Encrypt 自身被吊销的情况下才会被用到。而那种情况对整个互联网来说大概都是灾难性的事件(别忘了 > 50%)。
当那台服务器宕机时,RavenDB 客户端无法验证证书链是否有效,于是拒绝了请求。这是我们没有预料到的,也是我们正在考虑默认禁用的东西。如今证书吊销列表其实用得不多,更常见的是 OCSP(在线证书状态协议,Online Certificate Status Protocol),而即便是 OCSP 也有它的问题。
如果您对此有任何反馈,我将不胜感激。