Domain-Name-System

DNS 輪詢的替代方案

  • January 28, 2011

抱歉之前不清楚。

我們有一個 vmware 虛擬化伺服器實例,它是我們的主要生產伺服器。我在近百個獨特的頂級域上儲存了一系列基於 Web 的應用程序。為了提供網頁,我們使用 LAMP 堆棧。該伺服器正在執行我們的主要和輔助 dns 伺服器(在兩個不同的 IP 地址上,而不是用於提供 Web 內容的 IP 地址)。最後,我們還使用 exim 託管我們的郵件(pop 和 smtp)(我相信)。

最近我們遇到了一些問題,導致我們的 root fs 變為只讀,阻止 apache2 或 mysql 連接並阻止傳入電子郵件。基本上為成千上萬的客戶取消了網路存在和電子郵件。問題的性質(仍由控制下未確定)並沒有影響綁定,因此 dns 仍然可以正常解決。

從那時起,我們開始將生產網站和相關的 mysql 數據庫鏡像到輔助伺服器上。該伺服器已完全準備好生產。

我的問題是,如果我們的主生產伺服器上的 apache 失敗(無論出於何種原因)快速(如果不是自動)開始盡可能無縫地將流量轉發到輔助伺服器,那麼推薦的故障轉移方法是什麼。

DNS 輪詢對我們來說是不可取的,因為我們不希望在兩台伺服器上傳入,實際上我們只希望輔助伺服器在主伺服器無響應的情況下接收 http 請求。這部分是因為我們的鏡像過程是一種方式,對輔助伺服器的更改將反映在主伺服器中,甚至失去。

不推薦使用 DNS 循環,因為:

1-不同的伺服器可能不會受到相同數量的請求。因此,它們將以不均勻的方式載入。

2- DNS 負載平衡不考慮伺服器可用性。伺服器 DNs 記錄將保留,並可在出現故障時使用。

3- DNS 記憶體會使情況變得更糟。您無法控制客戶端的 DNS 記憶體以及介於兩者之間的任何中間 DNS 伺服器。如果您打算使您的 TTL 值更小,它可能無法按預期工作。看看這個文章。接受的答案是這樣說的Many DNS server do not honor your TTL

推薦的解決方案是安裝像 HAProxy 這樣的負載均衡器以及像 heartbeat 這樣的高可用性解決方案。此設置應安裝在兩台機器上。如果一個出現故障,另一個將接管 VIP(通過心跳)。正在執行的機器將負責檢查後端伺服器的健康狀況並分配負載(通過 haproxy)。

編輯:

如果您希望伺服器在主動-被動模式下工作,則不需要負載平衡器。您可以安裝heartbeat 和pacemaker 來監控apache、mysql 等系統資源。集群可以配置為只保留一台活動伺服器。

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