跨互聯網的負載平衡 Linux 伺服器?

跨互聯網的負載平衡 Linux 伺服器?

我正在研究設定一個由三個 CentOS 5.4 機器組成的負載平衡伺服器解決方案。其中兩個盒子將駐留在一個設施中,而第三個將駐留在另一個設施中。

我目前正在努力設定 heartbeat、ldirectord、ipvsadm 來平衡機器的負載,但我不確定它是否能與

我不太熟悉所有這些工作原理背後的細節,但是當這些伺服器不都在同一個 LAN 上時,負載平衡是否可以正常工作?我不確定 heartbeat 是否使用 SNMP 發送訊號,這只能在 LAN 上運作。有沒有人嘗試過這個或找到不同的解決方案?

答案1

這是一個很快就會變得複雜的大話題。這CAP定理是一個很好的起點,因為它確定了必須做出的更高層次的選擇。

當您處理寫入量大的 Web 應用程式時,在保持資料完整性的同時在 Internet 上分配負載會變得更加困難。以讀取為中心的應用程式(搜尋!)更容易分發,因為您不必擔心寫入資料的後勤工作。

ipvs讓 Linux 本質上成為一個第 4 層交換器。我在第 2 層(ARP/乙太網路 - 連結層)上使用它取得了最大的成功,這將是我的第一選擇,但使用類似的東西可能是可行的LVS-Tun對於在廣播層上沒有連接的地理上獨立的伺服器。請注意,ipvsadm 是 ipvs 的使用者層工具,ldirectord 是管理 ipvs 資源的守護程式。

心跳已有效地成功通過起搏器。要監控其他伺服器,必須有多個連結。伺服器之間沒有串列或冗餘實體連接的風險要大得多。即使兩個站點之間心跳監控的多個實體上不同的網路連線也必然會中斷。這就是資料風險發揮作用的地方,因為自動故障轉移存在腦裂導致資料損壞的風險。沒有理想的方法來減輕這種風險。

您可以在故障轉移過程中註入更多邏輯。例如:

如果路徑 1 已關閉,路徑 2 也已關閉,則該進程未運行,且我無法執行此操作 - 然後進行故障轉移。

這降低了風險,但即便如此,仍然不一定能夠短距離實體連接伺服器。

對於靜態內容,員工可以輕鬆使用內容傳遞網絡

簡單的負載平衡和故障轉移可以使用以下方式完成循環 DNS,這是比較容易犯錯的。

邊界網關協議是一種可以在網路層實現高可用性的網路協定。

最終,只要有足夠的資金(時間/資源),就可以開發適當的 SLA 以實現高度可用性。您的預算將是您的最終限制。定義您的要求,然後看看您可以在預算內完成什麼,因為會有妥協。

我經常發現,至少在編寫大量應用程式的情況下,在同一物理前提下實現高可用性和自動故障轉移更有意義。作為災難復原計劃和 SLA 的一部分,將手動故障轉移過程轉移到實體上獨立的站點,這樣可以保持資料完整性,同時仍保持優質服務水準。

答案2

在不同位置擁有不同的伺服器應該不成問題,直到它們可以相互存取。
問題在於它們之間的頻寬以及您在其上傳輸的內容。
Heartbeat 不使用 snmp,可以是多播、單播或廣播。這是一個特定的協定(無論如何,snmp 在 lans 之間工作,它是一個 udp 協定)。
什麼樣的服務正在嘗試負載平衡?

答案3

另一個想法是實現具有高可用性的 DRBD。檢查這個網站http://www.drbd.org/home/what-is-drbd/

相關內容