Domain-Name-System

我可以使用哪種方法通過監控來自動化 DNS 故障轉移?

  • February 15, 2015

出於延遲原因,我們在全球範圍內執行多台冗餘伺服器。目前,如果一個站點出現故障,我們讓另一個站點接管該區域的唯一方法是通過 DNS。

我們希望自動執行此過程,例如,如果通過監視工具檢測到站點失敗,則通過替換/修改區域文件。

我的 Google 技能只發現了提供此服務的公司,但我們更喜歡我們自己的解決方案。我們目前使用 Nagios 進行監控,我們的名稱伺服器是 Bind。

有沒有什麼工具/方法可以做到這一點?

當然,這也是這些服務正在做的事情。:-)

這在一定程度上取決於您目前如何在全球範圍內重定向/分發您的使用者。假設結果是一些使用者從 www.example.com 重定向到 www.eu.example.com 而其他使用者分別重定向到 www.oc.example.com www.am.example.com

您可以使用您的監控解決方案,以便當 www.am.example.com 變得無響應時,不僅會觸發正常警報,而且還會更新 www.am.example.com 指向 www.eu.example.com 的更新。

一種干淨的方法是使用動態更新,這是一種通過向主伺服器發送特殊形式的 DNS 消息來添加、替換或刪除記錄的方法。這些消息的格式和含義在RFC 2136中指定。

通過在 zone 語句中包含一個allow-update或一個子句來啟用動態更新。update-policy有關詳細資訊,請查看綁定管理員參考手冊

最乾淨的可能是同時使用基於 IP 的訪問控制和 DNS 公鑰。

創建密鑰對:

dnssec-keygen -a HMAC-MD5 -b 512 -n USER nagios.example.com.

這應該會產生兩個文件,一個用於 private key ,另一個用於Knagios.exmaple.com.NNNN.privatepublic key Knagios.exmaple.com.NNNN.key

更新您的綁定配置:

key nagios.example.com. {
   algorithm HMAC-MD5;
   secret "<string with contents from Knagios.exmaple.com.NNNN.key>"; };

zone "am.example.com"
{
   type master;
   file "/etc/bind/zone/am.example.com";
   allow-update { key nagios.example.com.; };
   ...
};

nsupdate然後是一個腳本,它在使用 Bind實用程序引發警報時執行以下操作:

cat<<EOF | /usr/bin/nsupdate -k Knagios.exmaple.com.NNNN.private -v
server ns1.example.com
zone am.example.com
update delete www.am.example.com. A
update add www.am.example.com. 60 A <ip-address-of-www.eu.example.com>
send
EOF

我不確定您是否被允許對A記錄以外的任何內容使用動態更新。

引用自:https://serverfault.com/questions/667818