史上增长最快的SaaS公司-Slack的混沌工程实践 | IDCF( 三 )
另外 , 这个理论上令人恐惧的时刻 , 实际上是相当平静的 。 所有的一切完成后 , 我们在运维频道中宣布故障全部清除 。
然后 , 我们开始总结和持续跟进:
- 找到问题根源和解决问题的时间点;
- 是否有用户已经注意到这个问题;
- 是否需要人工干预这个问题;
- 这个问题的严重程度;
- 演练计划的文档是否有差错;
- Grafana中的仪表板是否已过时 。
我们在Slack进行了数十次灾难剧院的演练 。 其中大多数能按计划进行 , 增强了我们对现有系统的信心 , 并验证了新功能的容错能力 。 当然 , 有些时候我们还是会发现Slack可用性的严重问题 , 并在影响客户之前找到提前修复的机会 。
以下是三个特别成功的演练:
1、避免缓存不一致
第一次的灾难剧院演练 , 我们把注意力投向了memcached , 用于证明在生产中自动实例替换能正常工作 。
这个演练很简单 , 选择将memcached的实例断开网络连接 , 观察备用实例是否能正常替换 。 最后 , 我们恢复了网络连接并终止了备用实例 。
演练计划审核时 , 我们发现了实例替换算法中的一个漏洞 , 并很快在开发环境确认了它的存在 。
根据最初的设计 , 如果实例在一组缓存键上丢失了租约 , 然后又获得相同的租约 , 则该实例不会刷新其缓存项 。 但是 , 在这种情况下 , 备用实例在此期间已使用了该组缓存键 , 这意味着原始实例中的数据已过时而且可能不准确了 。
在演练中 , 我们通过选定适当时间段手动刷新缓存 , 在演练完成后立即更改算法 , 并再次进行测试来解决此问题 。
没有演练发现的这个问题 , 我们很可能不会察觉缓存损坏的问题 。
2、为了安全反复尝试
在2019年初 , 我们计划进行十次演练 , 用来证明Slack对AWS中的区域故障和网络分区的容错能力 。 其中一个演练涉及信道服务器(Channel Server) , 负责将新发送的消息和元数据 , 广播到所有关联Slack客户端的WebSocket中 。
这次演练的目标是将25%的信道服务器受到网络分区的故障 , 并观察是否能检测到对应的故障点 , 系统是否自动会将原实例替换为备用实例 。
创建网络分区故障的第一次尝试失败了 , 问题出在提供透明传输加密的overlay网络 。 实际上 , 我们对信道服务器的隔离远超出了预期 , 与网络分区相比 , 这是断开网络连接 。 我们提早停下使信道服务器重新加入集群 , 恢复网络故障 。
第二次尝试好了很多 , 但在投入生产前就结束了 。 但这次演练提供了积极的结果 , 我们发现Consul适合管理网络分区上的路由 。 这个结果给了我们更多的信息 , 但还是结束了这次演练 , 因为虽然做了很多工作 , 最终还是没有产生任何信道服务器的故障 。
- 恐龙|世界上最重要的8种恐龙,可能与你想象的不同
- 太阳系|825亿公里外!如果外星人飞船来到太阳系,这里最有可能发现它
- 三星|流畅用三年,两千价位机型,为什么说这款最值得买?
- 德尔塔|新冠病毒“最厉害变种”来袭,或从艾滋病患者体内进化而来
- 美团|支付二维码管制,微信、支付宝躺枪,谁是最大赢家?
- 外星人绑架|贝蒂安德烈事件,美国最离奇的外星人绑架案,至今仍是谜?
- 英伟达|「资讯」NV最强AI黑科技?能将文字描述一键转为逼真画像
- MIUI|国人最期待安卓系统曝光:MIUI 13增加新功能,强化互联功能
- iphone12|它是4000左右性价比最高的iPhone之一,买它不后悔!
- CPU|本月装机推荐,适合大多数人的最佳游戏CPU,intel还是AMD?