GitHub可用性报告:2020年10月

Keith Ballinger的照片

介绍

在10月份,我们经历了一次事件,导致问题、拉请求、网络钩子、GitHub动作和GitHub页面服务的可用性状态严重下降。

10月9日世界时21:30(持续2小时32分钟)

当重新配置ZooKeeper节点作为常规升级的一部分时,新主机的引入太快,导致了第二个leader的选举,有效地引入了逻辑上截然不同的第二个ZooKeeper集群,而本应该只有一个。

当ZooKeeper主机处于这种状态时,集群中的一个Kafka代理为我们的内部后台作业系统提供动力,它连接到新成立的第二个ZooKeeper集群,并将自己选为Kafka控制器。此时,有两个截然不同的Kafka集群正在向客户端提供冲突的集群状态信息。这种不正确的状态导致大约10%的后台作业服务请求发生写操作失败,导致在我们将流量和工作容量迁移到辅助作业处理系统时作业出现备份。

在此事件中没有后台作业丢失。虽然我们在一些系统中经历了大量的队列备份,但客户端中的重试行为和冗余排队系统的存在减轻了这些问题。

为了避免将来出现此类故障,我们更新了ZooKeeper供应清单,并计划引入自动化来执行ZooKeeper和Kafka集群维护。

总之

想了解更多我们正在做的事情,请查看我们的新版本建筑GitHub博客系列,深入探讨GitHub工程组织的团队如何识别和处理改进内部开发工具和基础设施的机会。