如何在 DNS 層級設定高可用性解決方案?

如何在 DNS 層級設定高可用性解決方案?

我在 namecheap 購買了域名,並在客戶端面板設置了我的個人 NS 伺服器:

ns1.example.com

ns2.example.com

1)如果伺服器 ns1 不可用,所有請求是否仍到達 ns1 還是全部到達伺服器 ns2 ?如果 ns1 或 ns2 不可用,如何設定突然切換所有請求?

2)在NS 伺服器ns1/2 之後,我有負載平衡器,以防其中一個LB 不可用,如何設定ns 伺服器來檢查此狀態(使用哪個應用程式- 綁定或其他,是否可以有一些api 或者您可以設定它將所有請求僅重定向到工作LB)?

答案1

1)如果伺服器 ns1 不可用,所有請求是否仍到達 ns1 還是全部到達伺服器 ns2 ?

不,DNS 不是這樣運作的。它預設提供負載平衡,而不是故障轉移。

DNS 處理資源記錄集。不是列表,而是集合。列表是有序的,而集合則不是。

網域名稱的名稱伺服器集包含該網域的所有權威名稱。換句話說:如果example.orgns1.example.com並且ns2.example.com則兩台伺服器在統計上將始終接收所有請求的 50%。這是不是100% forns1然後只有當它失敗時它才 100% 到ns2

因此,每個請求都有50%,但如果一個請求因任何原因停止回應,會發生什麼:那麼解析器將切換到另一個請求,但只有在查詢它之後,因為它不知道何時停止回應,並且還必須定期探測另一個請求不回應以檢測它何時重新上線。這意味著解決方案將會發生,但只會花費更多時間,因為演算法將首先: - 詢問ns1 - 等待一段時間 - 再次詢問ns1 - 等待一段時間- 在某個時刻(兩個查詢之間等待的時間量和數量)重試次數通常是可配置的,並且在每個軟體中都不同)它將切換到ns2並最終獲得答案。

此 DNS 解析來源的呼叫應用程式本身可能會逾時,因此如果發生上述情況並且花費的時間太長,它可能會停止等待答案。

如今,「高可用性 DNS」通常透過使用選播技術來提供:名稱伺服器解析為在各個位置選播的 IP 位址。由於更多的「本地」存取和自動故障轉移(但由於IP 功能,而不是特定的DNS 功能),這提供了更好的性能,因為由於BGP 的工作方式,如果某些節點沒有回复,另一個節點將選擇流量。因此,事情不會創建上面描述的超時和重試循環。

在 NS 伺服器 ns1/2 之後我有負載平衡器

我不清楚,但無論如何不要將負載平衡器或任何東西放在名稱伺服器前面。大多數情況下,它們會產生比提供解決方案更多的問題(因為它們通常實作 DNS 協定的一個非常狹窄的子集,從而產生互通性問題)。

有沒有一些api

有很多方法可以配置和使用負載平衡器,並且實際上可以將它們設定為考慮到它們所在的服務的狀態。但現階段你的問題太廣泛了,你需要更清楚,考慮到第一部分和你可能遇到的 DNS 誤解。

答案2

您使用的網域名稱系統 (DNS) 伺服器的類型對方法有很大影響。例如,在其他 DNS 伺服器(通常也是網域控制站)之間進行適當複製的 Active Directory 整合區域可提供一定程度的容錯能力。

用戶端通常被指定為在其本機 IP 配置中使用的主要、輔助 DNS 供應商,在某些情況下也指定為第三級和後續 DNS 提供者。如果用戶端尚未快取記錄(基於其生存時間 (TTL))並且在請求時無法到達其主要 DNS 供應商,它將開始透過輔助提供者繼續工作,直到達到逾時間隔。將此主要-輔助用戶端 DNS 提供者指定視為主動-被動高可用性的相對版本的正確方法。

現代負載平衡解決方案,尤其是高檔實體設備,通常具有運行狀況檢查(通常稱為“探針”),可用於檢查您正在尋找的服務的狀態。您必須參考供應商文件才能實施。但是,請記住,如果您的NS1NS2已關閉,並且您的負載平衡器的名稱記錄由客戶端指向的這些相同的DNS 提供者提供,那麼在故障的第三階段基本上依賴負載平衡器不會為您提供任何內容(除非有一些幸運的客戶端記錄快取)。

相關內容