作者|汤姆·克莱因彼得和杰米·特纳
翻译|王强
策划|万佳
一个
停机事件摘要
本文总结了过去遇到的许多停机事件中反复出现的问题。当工程团队处理这些事件时,几乎每次都会遇到一些模式。
从这些重复出现的模式中,我们提取了一些工程团队准备采用的经验和教训。希望你能从他们身上学到有用的知识,做好准备。
2
第1课:循环依赖会破坏您的操作和维护工具
用自己做的东西是一个很好的做法——毕竟如果不做,怎么能指望客户用你的产品和服务呢?如果你不赌你公司的生产力,你怎么能认可实现这些产品和服务的过程呢?
但是,这种健康的习惯也会适得其反,因为这种行为会造成依赖的循环。所谓依赖循环,就是你依靠自己的系统……去修复你的系统。
这种依赖模式还有其他例子,都违背了一个座右铭:不要重复自己。为什么运行另一个数据库只是为了监控?你的生产数据库运行良好,所以把遥测数据放在那里。
这些循环在停机期间也会产生严重的后果。例如,您可能需要身份验证来访问操作系统,修复身份验证模块...或者监视应该正常运行的数据库,以获取索引数据并找出数据库的问题。简而言之,就是这样一个无限循环。
甚至客户通信系统有时也会中断,因为您使用自己的系统向客户传输系统状态。
行情
在第一集中,Slack和TGW:Slack无法访问控制面板来找出他们的系统有什么问题,因为AWS Transit Gateway需要处于健康状态才能将http流量传输到控制面板。不幸的是,这个TGW是不健康的。
第三集,2019年Monzo的Cassandra宕机:Monzo的生产数据库出现了问题,只能通过验证系统访问权限和部署代码来解决,但前者必须使用这个生产数据库。
第十集,驱动达到线程限制:AWS无法更新驱动相关中断的状态页,因为状态页的更新依赖于驱动。
在第11集,Salesforce发布了一个有争议的事后分析:Salesforce无法更新他们的状态页面,因为他们将其托管在基于Heroku的服务上,并且由于Heroku归他们所有并集成到他们的基础架构中,Heroku的运行状态取决于他们的系统健康状况。
三
第二课:愚蠢的自动化
每个人都对现代公共云及其提供的无数API感到非常兴奋。弹性!编排!所有操作都可以自动化,这样人类就不会被吵醒了!
但是这种热情有时会让我们过度自动化系统,这使得测试降级的用例变得困难。此外,这些未经测试的退化案例可能会产生巨大的不利影响。相比之下,在健康的系统状态下,自动决策带来的效率或经济优势是不够的。
但即使自动化真的很明智,自动化有时也缺乏必要的“恐慌模式”,无法识别参数何时超出正常范围。在这些情况下,自动化应该停止自动化操作并通知运维人员,因为它即将开始做出一些非常不合逻辑的决策。
行情
第一集,Slack和TGW:由于网络问题期间CPU空闲,Slack的自动化操作丢弃了一堆他们“不需要”的服务器,然后在流量激增时启动了太多服务器,超过了系统上的文件描述符限制。
第六集,GitHub的43秒网络分区:GitHub的数据库自动化在43秒网络分区期间,对一个主数据库进行了不完全的跨国升级。
第八集,Auth0严重拥堵的数据库:当请求因为数据库瓶颈而变慢时,Auth0启动了两次前端,带来了更多的流量,让问题变得更严重。
四
第三课:现在是2021年,数据库仍然很棘手
如果一切都是无状态的呢?那些讨厌的数据库总是给我们带来麻烦。即使是前端层的问题,也往往是上游数据库的堵塞造成的,源头可以追溯到深层服务栈的瓶颈。
推荐阅读
- 婚姻中,夫妻之间的感情和信任问题
- 豆瓣评分在哪才能评 免费的《囧妈》为何豆瓣评分才6分 问题出在了哪
- 魔兽怀旧服近战崛起多少人被冲昏头了历史“遗留”的问题
- “高分复读”是一个值得深思的问题
- 婚姻危机中的女人,往往无法冷静处理感情问题
- 模具厂是做什么的 40岁的我从模具厂离职了 却发现找不到工作了 该何去何从
- 死神0番队 死神关于零番队的人员选择问题
- 汉中清风 汉中市纪委监委关于深化违规收送礼金问题专项整治举报方式的公告
- 舒芯宝真的能治妇科吗 倩氏舒芯宝可以调理妇科问题吗
- 因彩礼问题不欢而散,男子花光所有积蓄流落街头