专栏首页Debian中国GitHub 发布10月21日系统故障分析报告

GitHub 发布10月21日系统故障分析报告

GitHub 刚刚通过官方博客发布了 21 日“挂掉”的事件分析。GitHub 指出此次事件发生的原因是在 10 月 21 日 22:52 UTC 进行日常维护——更换发生故障的 100G 光学设备时导致美国东海岸网络中心与美国东海岸数据中心之间的连接断开。

更具体地,GitHub 分析,虽然两地的连接在 43 秒内恢复,但这次短暂的中断引发了一系列事件,这才导致了长达 24 小时 11 分钟的服务降级。

为了大规模提高性能,GitHub 的应用程序将直接写入每个群集的相关主数据库,但在绝大多数情况下将读取请求委派给副本服务器的子集。GitHub 使用 Orchestrator 来管理 MySQL 集群拓扑并处理自动故障转移,Orchestrator 在此过程中考虑了许多变量,并在 Raft 共识机制之上达成共识。Orchestrator 可以实现应用程序无法支持的拓扑,因此必须注意将 Orchestrator 的配置与应用程序级别的期望保持一致。

然而 21 日,在上述网络分区中,Orchestrator 在主数据中心中一直保持活跃,根据 Raft 的共识机制,它开始了一个取消领导选举的过程。美国西海岸数据中心和美国东海岸公有云 Orchestrator 节点能够建立合规数量并开始对群集进行故障转移,以便将写入指向美国西海岸数据中心。Orchestrator 继续组织美国西海岸数据库集群拓扑,当连接恢复时,应用层立即开始将写入流量引导到西海岸站点的新当选者。

美国东海岸数据中心的数据库服务器包含一段短暂的写入时间,但尚未复制到美国西海岸的设施。由于两个数据中心中的数据库集群都包含了其它数据中心中不存在的写入,因此无法安全地将主要数据库故障转移到美国东海岸数据中心。

GitHub 工程师发现问题后进行了一系列抢救措施,“最终没有用户数据丢失,但是,几秒钟的数据库写入的手动协调仍在进行中。”

GitHub 对所有受影响的用户表示歉意,并表示“我们已经吸取了教训,并且采取了一系列急救措施,我们希望更好地确保不再发生类似情况。”

同时 GitHub 也表示接下来将解决由此导致的数据不一致问题。详细分析与事件时间线请查阅 GitHub 公告

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Adobe 正式宣布放弃 Flash

    今天,Adobe 正式宣布将放弃 Flash,而相关技术会在 2020 年底全部退役。

    Debian社区
  • GitHub 开发者呼吁 Adobe 将 Flash 开源

    在Adobe宣布到2020年让Flash播放器寿终正寝之后,现在网站开发人员Juha Linstedt发起了请愿运动,正在寻求让Adobe将Flash开源,用作...

    Debian社区
  • GitLab 11.5 正式版发布 大量安全新功能

    GitLab 11.5 正式版已发布 ,该版本带来了许多关于安全的新功能。如新的 Group Security Dashboard、Operations Das...

    Debian社区
  • Objective-C RunTime概览

    一篇文章,不可能讲完Runtime的全部,但是,分成很多篇讲,又有点「见树木不见森林」的迷糊感觉——自己就是看了很多关于Runtime的文章,看完还是「迷雾重重...

    iOS Development
  • 深入理解动态规划算法 - 凑硬币

    动态规划(Dynamic Programming)算法是计算机科学科学领域中最重要也是最常用的一个算法,巧妙的利用它可以解决很多复杂的问题,而且该算法也频繁的出...

    算法与编程之美
  • python连接SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81'

    问题描述:Python从百度地图抓取消息保存到MySQL数据中,对应数据库字段为varchar以及TEXT,字符编码utf-8。部分插入成功,部分插入失败,报错...

    学到老
  • python连接SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81'

    问题描述:Python从百度地图抓取消息保存到MySQL数据中,对应数据库字段为varchar以及TEXT,字符编码utf-8。部分插入成功,部分插入失败,报错...

    学到老
  • java进阶|MySQL数据库系列(一)数据库操作和建表操作

    后端Coder
  • LeetCode 1383. 最大的团队表现值(贪心,优先队列,难)

    公司有编号为 1 到 n 的 n 个工程师,给你两个数组 speed 和 efficiency ,其中 speed[i] 和 efficiency[i] 分别代...

    Michael阿明
  • cocos2d-x在Android平台下的音频导致的卡死

    frameworks/wilhelm/src/android/AudioPlayer_to_android.cpp:779: pthread 0x75f14a0...

    meteoric

扫码关注云+社区

领取腾讯云代金券