我可以使用哪種方法通過監控來自動化 DNS 故障轉移?
出於延遲原因,我們在全球範圍內執行多台冗餘伺服器。目前,如果一個站點出現故障,我們讓另一個站點接管該區域的唯一方法是通過 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.private
public keyKnagios.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
記錄以外的任何內容使用動態更新。