OctoDNS 的使用方法和 DNS 分割權威配置
導讀 | 建構一個健壯的系統需要為故障而設計。身為 GitHub 的網站可靠性工程師(SRE),我們一直在尋求透過冗餘來幫助緩解問題,今天將討論最近我們所做的工作,以便支援你透過 DNS 來尋找我們的伺服器。 |
大型 DNS 供應商在其服務中建構了多層冗餘,當出現導致中斷的問題時,可以採取措施來減輕其影響。最佳選擇之一是把你的區域的權威服務分割到多個服務提供者。啟用分割權威很簡單,你只需在網域註冊商配置兩套或多套你區域的名稱伺服器,然後 DNS 請求將分割到整個清單中。但是,你必須在多個提供者之間對這些區域的記錄保持同步,並且,根據具體情況這可能要么設置複雜,要么是完全手動的過程。
$ dig NS github.com. @a.gtld-servers.net. ... ;; QUESTION SECTION: ;github.com. IN NS ;; AUTHORITY SECTION: github.com. 172800 IN NS ns4.p16.dynect.net. github.com. 172800 IN NS ns-520.awsdns-01.net. github.com. 172800 IN NS ns1.p16.dynect.net. github.com. 172800 IN NS ns3.p16.dynect.net. github.com. 172800 IN NS ns-421.awsdns-52.com. github.com. 172800 IN NS ns-1283.awsdns-32.org. github.com. 172800 IN NS ns2.p16.dynect.net. github.com. 172800 IN NS ns-1707.awsdns-21.co.uk. ...
上面的查詢是向 TLD 名稱伺服器 詢問 github.com. 的 NS 記錄。它傳回了我們在網域名稱註冊商中配置的值,在本例中,一共有兩個 DNS 服務供應商,每個四筆記錄。如果其中一個提供者發生中斷,那麼其它的仍有希望可以服務請求。我們在各個地方同步記錄,並且可以安全地修改它們,而不必擔心資料陳舊或狀態不正確。
完整地配置分割權威的最後一部分是在兩個 DNS 服務提供者中將所有名稱伺服器作為頂層 NS 記錄新增至區域的根。
$ dig NS github.com. @ns1.p16.dynect.net. ... ;; QUESTION SECTION: ;github.com. IN NS ;; ANSWER SECTION: github.com. 551 IN NS ns1.p16.dynect.net. github.com. 551 IN NS ns2.p16.dynect.net. github.com. 551 IN NS ns-520.awsdns-01.net. github.com. 551 IN NS ns3.p16.dynect.net. github.com. 551 IN NS ns-421.awsdns-52.com. github.com. 551 IN NS ns4.p16.dynect.net. github.com. 551 IN NS ns-1283.awsdns-32.org. github.com. 551 IN NS ns-1707.awsdns-21.co.uk.
在 GitHub,我們有幾十個區域和數千筆記錄,而大多數這些區域並沒有關鍵到需要冗餘,因此我們只需要處理一部分。我們希望有能夠在多個 DNS 服務提供者中保持這些記錄同步的方案,並且更一般地管理內部和外部的所有 DNS 記錄。所以今天我們宣布了 OctoDNS。
配置OctoDNS 能夠讓我們重新打造我們的 DNS 工作流程。我們的區域和記錄儲存在 Git 倉庫的設定檔中。對它們的變更使用 GitHub 流,並像個網站一樣用分支部署。我們甚至可以做個 “空” 部署來預覽哪些記錄會在變更中修改。設定檔是 yaml 字典,每個區域一個,它的頂層的鍵名是記錄名稱,鍵值是 ttl、類型和類型特定的資料。例如,當包含在區域檔案 github.com.yaml 中時,下列配置將建立 octodns.github.com. 的 A 記錄。
octodns: type: A values: - 1.2.3.4 - 1.2.3.5
配置的第二部分將記錄資料的來源對應到 DNS 服務提供者。下面的程式碼片段告訴 OctoDNS 從 config 提供者載入區域 github.com,並將其結果同步到 dyn 和 route53。
zones: github.com.: sources: - config targets: - dyn - route53
一旦我們的配置完成,OctoDNS 就可以評估當前的狀態,並建立一個計劃,其中列出將需要將目標狀態與來源相符的一組變更。在下面的範例中,octodns.github.com 是一個新的記錄,所以所需的操作是在兩者中建立記錄。
$ octodns-sync --config-file=./config/production.yaml ... ******************************************************************************** * github.com. ******************************************************************************** * route53 (Route53Provider) * Create * Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0 * dyn (DynProvider) * Create * Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0 ******************************************************************************** ...
預設情況下 octodns-sync 處於類比運作模式,因此不會採取任何行動。一旦我們審閱了變更,並對它們感到滿意,我們可以添加 `--doit' 標誌並再次執行命令。 OctoDNS 將繼續它的處理流程,這次將在 Route53 和 Dynect 中進行必要的更改,以便建立新的記錄。
$ octodns-sync --config-file=./config/production.yaml --doit ...
此刻,在兩個 DNS 服務提供者裡我們有了相同的資料記錄,並且可以輕鬆分割我們的 DNS 請求給它們,並知道它們將提供準確的結果。當我們直接執行上面的 OctoDNS 命令時,我們的內部工作流程依賴部署腳本和 chatops。你可以在 README 的工作流程部分中找到更多資訊。
總結我們認為大多數網站可以從分割權威中受益,並且希望使用 OctoDNS,其中最大的障礙已被掃除。即使對分割權威不感興趣,OctoDNS 仍然值得一看,因為它將基礎設施即程式碼的好處帶給了 DNS。
想幫助 GitHub SRE 團隊解決有趣的問題嗎?我們很樂意加入我們。在這裡申請。
以上是OctoDNS 的使用方法和 DNS 分割權威配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。
