Domain-Name-System

使用兩個不同數據中心中的兩台伺服器進行簡單的冗餘設置?

  • February 11, 2014

問題範圍

這個問題完全是關於讓客戶端請求域:example.com到兩個可用伺服器之一。從那裡開始如何處理它是另一個需要解決的問題,因此不應在答案中提及。

可用工具

我可用的工具是兩台專用伺服器(server A和),它們分佈在位於另一個物理位置server B的兩個不同數據中心(data center A和)中。data center B純虛構IP 地址server A表示為a.a.a.a,的 IP 地址server B表示為b.b.b.b。兩台伺服器都帶有 Linux 發行版,這並不重要。

由於我想掌控一切,因此我不希望使用任何第三方服務(託管 DNS、CDN 等)。因此,這些是我唯一的工具。

目標

我指望的災難是氫彈摧毀了我在兩台伺服器上正確設置一周後使用的兩個數據中心之一。我希望我的域example.com始終可用,儘管我不會打擾幾秒鐘甚至幾分鐘的停機時間,因為伺服器非常可靠,它們甚至可能每年崩潰一次以上。此外,顯示“我們正忙於解決問題”的簡單頁面可以將可接受的停機時間延長到一個小時左右。

我的固定解決方案

自從我問這個問題以來已經有一段時間了,現在我有了一個合理的冗餘設置。由於它已關閉,我無法將其發佈為答案:(

兩台伺服器都具有相同的域 DNS 記錄example.com

# DNS records for both server A and server B
example.com. NS ns1a.example.com.
example.com. NS ns1b.example.com.
example.com. NS ns2a.example.com.
example.com. NS ns2b.example.com.
ns1a.example.com. A a.a.a.a
ns2a.example.com. A a.a.a.a
ns1b.example.com. A b.b.b.b
ns2b.example.com. A b.b.b.b
www.example.com. CNAME example.com.
example.com. A a.a.a.a
example.com. A b.b.b.b

兩台伺服器都執行腳本,每分鐘互相檢查可用性。兩台伺服器都是 example.com 域的名稱伺服器,因此它們都可以更改 DNS 記錄。萬一出現問題,仍然線上的伺服器會檢測到這一點,並將其他伺服器從 DNS 記錄中刪除。接下來,當另一台伺服器仍在 DNS 記錄中時,瀏覽器將在 2 秒內自動回退到另一台伺服器(使用 Mozilla Firefox 測試)!這是一個非常有用的功能。

因為server A擁有“權限”,example.com所以我不知道如何添加server B能夠控制 DNS。事實證明,您可以只為任何域添加記錄,但只有在首先使用 DNS 記錄註冊域的人將此伺服器添加為 DNS 記錄中帶有“NS”的名稱伺服器時,才會尊重它們。

我希望這對有類似問題的人有用。

不可能的。簡直就是這樣。DNS 不是為此而生的。

如果出現以下情況,您可以偽造它:

  • 你將你的 DNS TTL 保持在一個非常低的水平,基本上按照 RFC 使所有記憶體無效 - 對於大多數“需要”最小 TTL 的域來說,這不是“合法的”
  • 使用備份伺服器上的腳本檢查主伺服器是否關閉(ping 當機等),然後自動更改域中的 DNS 條目。

DNS 本身沒有 HA 機制 - 它以循環方式分發答案,並且它們被記憶體,因此通常需要 TIME 才能失敗。

HA 是通過讓兩台伺服器使用相同的 IP 來處理的——為此,您需要一個以上的 IP 地址(存在技術限制),然後使用路由協議將該 IP 轉移到另一個數據中心。

1:沒有

2:你告訴我。從邏輯上講,來自數據中心 B 的 IP 地址空間變得無法訪問。僅此而已 - DNS 沒有其他任何事情發生,人們仍然去那裡連接到伺服器。

3:你告訴我。從邏輯上講,來自數據中心 A 的 IP 地址空間變得無法訪問。僅此而已 - DNS 沒有其他任何事情發生,人們仍然去那裡連接到伺服器。

4:怎麼樣?通過將一半的人發送到 A 並將一半的人發送到 B - 不管 A 和 B 是否線上?DNS 對高可用性的規定為零。

5:不,您的註冊商什麼都不做。你去你的註冊商並把一個名字指向一個 IP 地址。通過檢查您是否足夠聰明以正確地將條目輸入數據庫,一個人“知道”正確的條目在那裡。您的註冊商可能不在乎。現在,所有權 - 這是一個法律問題。您的註冊商已將域名出售給您,並通知了該域名的根註冊機構。他們給你一個使用者名和密碼。誰“擁有”您訪問本網站的密碼?

我建議你讀一本書 DNS 是如何工作的。並且忘記解決 DNS 的可用性問題 - DNS 不是為高可用性而設計的。哦,投票結束 - 根據常見問題解答,這裡不歡迎初學者提問。在這種情況下,這不是一個好的決定,但規則是有效的。

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