GitHub是如何改進(jìn)自身的DNS架構(gòu)的

責(zé)任編輯:editor004

作者:Sergio De Simone

2017-06-13 11:35:44

摘自:INFOQ

除了對(duì)上述問(wèn)題的改進(jìn),GitHub工程師還瞄準(zhǔn)于:增加內(nèi)部域(Zone)和外部域配置的靈活性。在GitHub設(shè)計(jì)的架構(gòu)中,有三種類(lèi)型的節(jié)點(diǎn):緩存節(jié)點(diǎn)。

據(jù)GitHub高級(jí)架構(gòu)工程師Joe Williams撰文介紹,過(guò)去數(shù)年中,GitHub一直使用的是一個(gè)簡(jiǎn)單的DNS架構(gòu)。雖然它也能適合工作需求,但現(xiàn)在GitHub已遷移到一個(gè)能更好地支持自身規(guī)模的新架構(gòu)。

Williams提及,很多應(yīng)用對(duì)DNS的解析性能或可用性十分敏感,這是GitHub采用新的DNS處理模型的一個(gè)原因。DNS會(huì)導(dǎo)致用戶性能降級(jí),甚至無(wú)法提供服務(wù)。當(dāng)使用原有的DNS架構(gòu)進(jìn)行配置和代碼更改時(shí),這個(gè)問(wèn)題亟待解決。此外,工程師也難以識(shí)別一些故障的導(dǎo)致根源,他們唯一能使用的工具是tcpdump。除了對(duì)上述問(wèn)題的改進(jìn),GitHub工程師還瞄準(zhǔn)于:

增加內(nèi)部域(Zone)和外部域配置的靈活性。除非做特殊的配置,否則內(nèi)部域?qū)ν馐遣豢梢?jiàn)的。同時(shí),從內(nèi)網(wǎng)的內(nèi)部就可以訪問(wèn)外部域。改進(jìn)緩存節(jié)點(diǎn)(Cache)和授權(quán)節(jié)點(diǎn)(Authority)間的角色隔離。支持基于部署和基于API的工作流,實(shí)現(xiàn)更改的自動(dòng)化。避免任何外部依賴,改進(jìn)可靠性。

在GitHub設(shè)計(jì)的架構(gòu)中,有三種類(lèi)型的節(jié)點(diǎn):

緩存節(jié)點(diǎn)。它部署于各數(shù)據(jù)中心內(nèi),負(fù)責(zé)向應(yīng)用提供實(shí)時(shí)數(shù)據(jù),使應(yīng)用無(wú)需跨數(shù)據(jù)中心。邊緣節(jié)點(diǎn)(Edge)。它是各數(shù)據(jù)中心本地的授權(quán)節(jié)點(diǎn),行使網(wǎng)關(guān)職責(zé),處理來(lái)自緩存節(jié)點(diǎn)的請(qǐng)求,并負(fù)責(zé)域傳送(Zone Transfer)。授權(quán)節(jié)點(diǎn)。它是DNS主服務(wù)器,管理來(lái)自邊緣節(jié)點(diǎn)的域交換,并提供創(chuàng)建、修改或刪除記錄的HTTP API。

日志功能是GitHub新DNS架構(gòu)的另一個(gè)改進(jìn)。GitHub工程師根據(jù)自身需求,選擇了對(duì)緩存節(jié)點(diǎn)使用Unbound,邊緣節(jié)點(diǎn)使用NSD,授權(quán)節(jié)點(diǎn)使用PowerDNS。

前面提到,外部域(github.com)可從內(nèi)部域(github.net)訪問(wèn),不需要與外部DNS提供商通信。這是使用Unbound實(shí)現(xiàn)的。此外,Unbound還支持在內(nèi)部DNS失敗時(shí)對(duì)外部網(wǎng)絡(luò)的訪問(wèn)。

在Williams的帖子中,還給出了更多的技術(shù)細(xì)節(jié),值得全面一讀。

查看英文原文: How GitHub Revamped its DNS Infrastructure

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)