Domain-Name-System

Round-Robin DNS 對於負載平衡靜態內容是否“足夠好”?

  • November 18, 2020

我們在http://sstatic.net的網站之間提供了一組共享的靜態內容。不幸的是,這個內容目前根本沒有負載平衡——它是從單個伺服器提供的。如果該伺服器有問題,所有依賴它的站點都會有效地關閉,因為共享資源是必不可少的共享 javascript 庫和圖像。

我們正在尋找方法來平衡此伺服器上的靜態內容,以避免單一伺服器依賴。

我意識到循環 DNS 充其量只是一種低端(有些人甚至可能會說ghetto)解決方案,但我不禁想知道循環 DNS 是否是靜態內容基本負載平衡的“足夠好”的解決方案?

裡面有一些關於這個的討論$$ dns $$ $$ load-balancing $$標籤,我已經閱讀了一些關於該主題的精彩文章。

我知道通過多個循環 A 記錄進行 DNS 負載平衡的常見缺點:

  • DNS 記錄通常沒有心跳或故障檢測,因此如果輪換中的給定伺服器出現故障,則必須手動從 DNS 條目中刪除其 A 記錄
  • 生存時間 (TTL) 必須設置得非常低才能使其正常工作,因為 DNS 條目在整個 Internet 中被積極記憶體
  • 客戶端電腦負責查看有多個 A 記錄並選擇正確的記錄

但是,對於我們的靜態內容,“在我們研究和實施更好的替代方案時”形式的負載平衡,輪詢 DNS 作為一個初學者是否足夠好,總比沒有好?還是在任何情況下,DNS 循環法都毫無價值?

傑夫,我不同意,負載平衡並不意味著冗餘,事實上恰恰相反。您擁有的伺服器越多,您在給定時刻發生故障的可能性就越大。這就是為什麼在做負載均衡時必須要有冗餘,但不幸的是有很多解決方案只提供負載均衡而不執行任何健康檢查,導致服務可靠性降低。

通過將負載分佈在多個點(可能在地理上分佈),DNS 循環非常適合增加容量。但它不提供故障轉移。您必須首先描述您要涵蓋的故障類型。必須使用標準 IP 地址接管機制(VRRP、CARP、…)在本地覆蓋伺服器故障。交換機故障由伺服器上到兩個交換機的彈性鏈路覆蓋。WAN 鏈路故障可以通過您和您的提供商之間的多鏈路設置來解決,使用路由協議或第 2 層解決方案(例如:多鏈路 PPP)。站點故障應該由 BGP 覆蓋:您的 IP 地址在多個站點上複製,並且您僅在它們可用的地方向網路公佈它們。

從您的問題來看,您似乎只需要提供伺服器故障轉移解決方案,這是最簡單的解決方案,因為它不涉及任何硬體,也不與任何 ISP 簽約。為此,您只需在伺服器上設置適當的軟體,這是迄今為止最便宜和最可靠的解決方案。

您問“如果 haproxy 機器出現故障怎麼辦?”。一樣的。我認識的所有使用 haproxy 進行負載平衡和高可用性的人都有兩台機器,並在它們上執行 ucarp、keepalived 或 heartbeat,以確保其中一台始終可用。

希望這會有所幫助!

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