Load-Balancing

跨多個靜態文件伺服器進行負載平衡以實現頻寬分配的最佳方式?

  • September 1, 2009

首先,我將向您解釋我的情況。我正在執行一個相當受歡迎的網站作為一個副項目,所以我不能真正投入大量資金。我目前只有一台帶有 HAProxy 的伺服器,它向 Apache 發送正常請求,向 Lighttpd 發送所有靜態文件請求。這非常有效,因為所有 php 和 post 請求都由 Apache 處理,而所有圖像都發送到更快的 Lighttpd(該站點主要是圖像,所以這非常重要)。不必設置子域來提供圖像會很好,因為短 URL 也非常重要,這也是我使用 HAProxy 的原因。

我找到了一個提供非常便宜的不計量頻寬的託管服務提供商,我一直在使用它,當我開始推出 100mbs 網卡可以處理的頻寬時,問題就出現了,因此需要第二台伺服器。

我已經對我的選擇進行了很多思考,所以我會向你解釋每一個。希望您能提供一些見解,了解哪個對我來說是最好的選擇,或者也許還有另一種我還沒有想到的選擇。

要求:

  • 甚至頻寬分配也是必須的。我有一個非常強大的伺服器,所以擴大規模不是一種選擇。我需要擴展以獲得更多頻寬。
  • 短網址。我真的不會設置像 img.example.com 這樣的子域來提供我的圖像。example.com/image.jpg 是現在的樣子,也是我非常希望它保留下來的樣子。但如果沒有其他辦法,那我明白了。
  • 處理請求的最近伺服器會非常好,但不是必須的。要記住的事情。

HAProxy 到負載平衡:

  • 這真的很容易做到,因為我已經在使用 HAProxy 了。但是,我認為分配頻寬時會出現問題。我可能錯了,但是HAProxy不會將請求發送到伺服器處理它的伺服器,然後通過HAProxy將其發送回客戶端嗎?因此,所有流量都通過負載均衡器返回,導致它使用的頻寬與所有伺服器的總和一樣多。

DNS 循環:

  • 這可能是我最好的選擇。只需將網站複製到多台伺服器上,然後做我現在正在做的事情。不利的一面是,如果一台伺服器出現故障,客戶端仍會發送給它。我還需要在多台伺服器上複製該站點。我有點希望我可以有一個主伺服器來處理除靜態文件之外的所有內容,然後有幾個靜態文件伺服器。我還讀到這有點像“窮人的負載平衡”,如果有一些更複雜的東西會很好。

直接伺服器返回:

  • 它看起來很複雜,但可能是一個不錯的選擇。我還能將某些 URL 發送到某些伺服器嗎?就像現在使用 HAProxy 一樣,每個以正確文件副檔名結尾的 URL 都被發送到 Lighttpd,而其他副檔名則被發送到 Apache。所以我需要類似的東西。就像,所有 php 請求都由執行平衡軟體的同一台伺服器處理,而所有 jpg 請求都發送到多個伺服器。

理想情況下,如果 HAProxy 支持 Direct Server Return,那麼我的問題就會得到解決。我也不想使用 CDN,因為它們真的很貴,而且這畢竟只是一個副項目。

你明白我的問題嗎?讓我知道我是否解釋不正確或者您需要更多資訊。

繪製應用程序的請求/響應週期圖並隔離瓶頸。您是正確的,將負載分配到許多應用程序伺服器的單個代理將需要所有應用程序伺服器的總頻寬。經典的解決方案是 RR DNS。Google、Yahoo 和 Amazon 都使用這種具有短 TTL 的技術。不久前我做了一些調查並記錄了我的發現

另一種解決方案是使用一個花哨的企業負載平衡解決方案,使用虛擬 IP 地址來平衡具有真實 IP 地址的多個應用程序伺服器之間的請求。我曾使用過 Netscaler 和 Stonesoft 產品。兩者都表現良好,但具有可怕的特質並且非常複雜。

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