作家
登录

关于GitHub的DNS基础设施,你了解吗?

作者: 来源: 2017-09-13 15:47:16 阅读 我要评论

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!


在 GitHub,我们比来大年夜头改进了 DNS。这包含了我们若何与外部 DNS 供给商交互以及我们如安在内部向我们的主机供给记录。为此,我们必须设计和构建一个新的 DNS 基本举措措施,它可以跟着 GitHub 的增长扩大并跨越多个数据中间。

这个设备应用了很多年,但它并非没出缺点。很多法度榜样对于解析 DNS 萌芽异常敏感,我们碰到的任何机能或可用性问题在最好的情况下也会导致办事列队和机能降级,而最坏情况下客户会遭受办事中断。设备和代码的更改可能会导致萌芽率产生大年夜幅度的不测变更。是以超出这两台主机的扩大成为了一个问题。因为这些主机的收集设备,如不雅我们只是持续添加 IP 和主机的话存在一些本身的问题。在试图解决和解救这些问题的同时,因为缺乏测量指标和可见性,老旧的体系难以辨认问题的原因。在很多情况下,我们应用 tcpdump 来辨认有问题的流量和萌芽。另一个问题是在公共 DNS 办事器上运行,我们处于泄漏内部收集信息的风险之下。是以,我们决定建立更好的器械,并开端肯定我们对新体系的请求。

我们着手设计一个新的 DNS 基本举措措施,以改良上述包含扩大和可见性在内的运维问题,并惹人了一些额外的需求。我们欲望经由过程外部 DNS 供给商持续运行我们的公共 DNS 域,是以我们构建的体系须要与供给商无关。此外,我们欲望该体系可以或许办事于我们的内部和外部域,这意味着内部域仅在我们的内部收集上可用,除非另有特别设备,而外部域也不消分开我们的内部收集就可解析。我们欲望新的 DNS 架构不只可以基于安排的工作流进行更改,并可以经由过程我们的仓库和设备体系应用 API 主动更改 DNS 记录。新体系不克不及有任何外部依附,太依附于 DNS 功能将会陷入级联故障,这包含连接到其他数据中间和个中可能有的 DNS 办事。我们的旧体系精华存办事器和威望办事器在同一台主机上混淆应用。我们想转到具有自力角色的分层设计。最后,我们欲望体系可以或许支撑多半据中间境况,无论是 EC2 照样懊悔。

实现

为了构建这个体系,我们肯定了三类主机:缓存主机cache、边沿主机edge和威望主机authority。缓存主机作为递归解析器recursive resolver和 DNS “路由器” 缓存来自边沿层的响应。边沿层运行 DNS 威望守护法度榜样,用于响应缓存层对 DNS 区域zone的请求,其被设备为来自威望层的区域传输zone transfer。威望层作为隐蔽的 DNS 主办事器master,作为 DNS 数据的规范来源,为来自边沿主机的区域传输zone transfer供给办事,并供给用于创建、修改或删除记录的 HTTP API。

在我们的新设备中,缓存主机存在于每个数据中间中,这意味着应用主机不须要穿过数据中间界线来检索记录。缓存主机被设备为将区域zone映射到其地区region内的边沿主机,以便将我们的内部区域zone路由到我们本身的主机。未明白设备的任何区域zone精晓过互联网递归解析。

边沿主机是地区性的主机,存在我们的收集边沿 PoP(存在点Point of Presence)内。我们的 PoP 有一个或多个依附于它们进行外部连接的数据中间,没有 PoP 数据中间将无法拜访互联网,互联网也无法拜访它们。边沿主机对所有的威望主机履行区域传输zone transfer,无论它们存在什么地区region或地位location,并将这些区域存在本地的磁盘上。

以前,GitHub 的 DNS 基本举措措施相当简单直接。它包含每台办事器上本地的、只具备转发功能的 DNS 缓存办事器,以及一对被所有这些主机应用的缓存办事器和威望办事器主机。这些主机在内部收集以及公共互联网上都可用。我们在缓存守护法度榜样中设备了区域zone存根stub,以在本地进行萌芽,而不是在互联网长进行递归。我们还在我们的 DNS 供给商处设置了 NS 记录,它们将特定的内部域domain指向这对主机的公共 IP,以便我们收集外部的萌芽。

可运维性

【编辑推荐】

  1. Linux排错筹划之——破解root口令
  2. 实用即王道,超好用的Linux文件治理器推荐
  3. 25个常用的Linux iptables规矩
  4. Linux下应用autoconf和automake生成Makefile
  5. 座谈传统的Linux初始化体系的运行级别
【义务编辑:庞桂玉 TEL:(010)68476606】

迁徙到更现代的 DNS 基本举措措施的巨大年夜好处是可不雅察性。我们的旧 DNS 体系几乎没有指标,只有有限的日记。决定应用哪些 DNS 办事器的一个重要身分是它们所产生的指标的广度和深度。我们最终用 Unbound 作为缓存主机,NSD 作为边沿主机,PowerDNS 作为威望主机,所有这些都已在比 GitHub 大年夜得多的 DNS 基本架构中获得了证实。

当在我们的懊悔数据中间运行时,缓存经由过程私有的任播anycast IP 拜访,大年夜而使之可以达到比来的可用缓存主机。缓存主机已经以机架感知的方法安排,在它们之间供给了必定程度的均衡负载,并且与一些电源和收集故障模式相隔离。当缓存主机出现故障时,平日将用其进行 DNS 萌芽的办事器如今将主动路由到下一?最接近的缓存主机,以保持低延迟并供给对某些故障模式的容错。任播许可我们扩大单个 IP 地址后面的缓存数量,这与先前的设备不合,使得我们可以或许按 DNS 需求量运行尽可能多的缓存主机。

无论地区或地位若何,边沿主机应用威望层进行区域传输。我们的区域zone并没有大年夜到在每个地区region保存所有区域zone的副本成为问题。(LCTT 译注:此处原文“Our zones are not large enough that keeping a copy of all of them in every region is a problem.”,根据高低文懂得而翻译。)这意味着对于每个区域,即使某个地区处于脱机状况,或者上游办事供给商存在连接问题,所有缓存办事器都可以拜访具备所有区域的本地副本的本地边沿办事器。这种变更在面对连接问题方面已被证实是相当有弹性的,并且在不久前本来会导致客户面对停止办事的故障时代赞助保持 GitHub 可用。


  推荐阅读

  如何使用Go建开发高负载WebSocket服务器

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 嗨,大年夜家好! 我的名字是Sergey Kamardin,我是Mail.Ru的工程师。介绍起首介绍我们的故事的高低文,应>>>详细阅读


本文标题:关于GitHub的DNS基础设施,你了解吗?

地址:http://www.17bianji.com/lsqh/37392.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)