PowerDNS - 在解析之前驗證主機是否已啟動
我有 twp 名稱伺服器執行 PowerDNS 作為 ns1 和 ns2 使用主/從類型設置,這很好用。我想創建多個伺服器來提供服務(即網路、電子郵件等),然後讓 ns1 或 ns2 上的 PowerDNS(無論哪個被命中)返回與主機名關聯的多個 IP 之一,具體取決於該主機是否實際啟動並且跑步。
例如,假設我有兩個 Web 伺服器 X 和 Y。然後我在 DNS 中有兩個 A 記錄,因此 webserver.local 有時會解析為 X 的 IP,有時會解析為 Y 的 IP,從而產生循環效應。完美的。
現在,如果 X 出現故障,這仍然有效,但客戶端必須在他們有機會擊中 Y 之前暫停,這意味著他們最終會到達他們想去的地方,但速度要慢得多。如果 X 出現故障,我希望將其 IP 地址從要解析的 IP 循環列表中刪除,以便 DNS 在解析 webserver.local 時僅返回 Y 的 IP,直到修復並放置 X重新投入使用。
要求 PowerDNS 驗證主機是否已啟動並在每個請求上執行可能需要一兩秒鐘(如果可能的話),這確實會減慢 DNS 查詢速度。我的一個想法是通過 cron 檢查伺服器定期完成一項完全獨立的任務,並相應地修改 PowerDNS 配置。我當然可以從這個角度來攻擊它,但希望可能有一種更標準的方法來解決這個問題,不需要太多的定制開發。
無法確定這是 PowerDNS 內置的東西,還是有更“官方”的方式來處理這個問題,我採取了建構自己的程序的方式來執行此操作。該程序更像是一個通用的“如果主機出現故障,採取使用者定義的操作”,而不是專門針對此,使其具有更廣泛的應用程序。
我已將其公開,以防其他任何人使用: https ://github.com/hyperionworks/pulse/