使用 OctoDNS 啟用 DNS 分割權威
大型 DNS 提供商在其服務中構建了多級冗餘,出現導致中斷的問題時,可以採取措施來減輕其影響。最佳選擇之一是把你的區域的權威服務分割到多個服務提供商中。
-- Ross Mcfarland
本文導航
配置
44%
同步
60%
總結
86%
編譯自https://githubengineering.com/enabling-split-authority-dns-with-octodns/
作者Ross Mcfarland
譯者geekpi
構建一個健壯的系統需要為故障而設計。作為 GitHub 的網站可靠性工程師(SRE),我們一直在尋求通過冗餘來幫助緩解問題,今天將討論最近我們所做的工作,以便支持你通過 DNS 來查找我們的伺服器。
大型DNS
[1]
提供商在其服務中構建了多級冗餘,出現導致中斷的問題時,可以採取措施來減輕其影響。最佳選擇之一是把你的區域zone的權威服務分割到多個服務提供商中。啟用分割權威split authority很簡單,你只需在域名註冊商配置兩套或多套你區域的名稱伺服器
[2]
,然後 DNS 請求將分割到整個列表中。但是,你必須在多個提供商之間對這些區域的記錄保持同步,並且,根據具體情況這可能要麼設置複雜,要麼是完全手動的過程。
上面的查詢是向TLD 名稱伺服器
[3]
詢問 的 記錄。它返回了在我們在域名註冊商中配置的值,在本例中,一共有兩個 DNS 服務提供商,每個四條記錄。如果其中一個提供商發生中斷,那麼其它的仍有希望可以服務請求。我們在各個地方同步記錄,並且可以安全地修改它們,而不必擔心數據陳舊或狀態不正確。
完整地配置分割權威的最後一部分是在兩個 DNS 服務提供商中將所有名稱伺服器作為頂層 記錄添加到區域的根中。
在 GitHub,我們有幾十個區域和數千條記錄,而大多數這些區域並沒有關鍵到需要冗餘,因此我們只需要處理一部分。我們希望有能夠在多個 DNS 服務提供商中保持這些記錄同步的方案,並且更一般地管理內部和外部的所有 DNS 記錄。所以今天我們宣布了OctoDNS
[4]
。
配置
OctoDNS 能夠讓我們重新打造我們的 DNS 工作流程。我們的區域和記錄存儲在 Git 倉庫的配置文件中。對它們的變更使用GitHub 流
[5]
,並像個站點一樣用分支部署
[6]
。我們甚至可以做個 「空」 部署來預覽哪些記錄將在變更中修改。配置文件是 yaml 字典,每個區域一個,它的頂層的鍵名是記錄名稱,鍵值是 ttl、類型和類型特定的數據。例如,當包含在區域文件 中時,以下配置將創建 的 記錄。
配置的第二部分將記錄數據的源映射到 DNS 服務提供商。下面的代碼片段告訴 OctoDNS 從 提供程序載入區域 ,並將其結果同步到 和 。
同步
一旦我們的配置完成,OctoDNS 就可以評估當前的狀態,並建立一個計劃,其中列出將需要將目標狀態與源相匹配的一組更改。在下面的例子中, 是一個新的記錄,所以所需的操作是在兩者中創建記錄。
默認情況下 處於模擬運行模式,因此不會採取任何行動。一旦我們審閱了變更,並對它們感到滿意,我們可以添加 `--doit 標誌並再次運行命令。OctoDNS 將繼續它的處理流程,這一次將在 Route53 和 Dynect 中進行必要的更改,以便創建新的記錄。
此刻,在兩個 DNS 服務提供商里我們有了相同的數據記錄,並可以輕鬆地分割我們的 DNS 請求給它們,並知道它們將提供準確的結果。當我們直接運行上面的 OctoDNS 命令時,我們的內部工作流程依賴於部署腳本和 chatops。你可以在README 的工作流程部分
[7]
中找到更多信息。
總結
我們認為大多數網站可以從分割權威中受益,並且希望用OctoDNS
[8]
,其中最大的障礙已被掃除。即使對分割權威不感興趣,OctoDNS 仍然值得一看,因為它將基礎設施即代碼
[9]
的好處帶給了 DNS。
想幫助 GitHub SRE 團隊解決有趣的問題嗎?我們很樂意加入我們。在這裡申請
[10]
。
via: https://githubengineering.com/enabling-split-authority-dns-with-octodns/
作者:Ross McFarland譯者:geekpi校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出
LCTT 譯者
geekpi
共計翻譯:535篇
貢獻時間:1210 天
※Kubernetes 是什麼?
※Oracle 終於幹掉了 Sun!
TAG:Linux中國 |