Load-Balancing

有哪些負載均衡算法

  • April 6, 2020

我正在研究 HTTP 的不同負載平衡算法,我剛剛發現 3. Random、Round Robin 和 Weighted Round Robin。還有其他選擇嗎?

謝謝保羅

HTTP負載平衡器最常見的負載平衡算法是恕我直言:

  • 循環(有時稱為“循環中的下一個”)。
  • 加權循環- 與循環一樣,但某些伺服器在總流量中佔有較大份額。
  • 隨機
  • 源 IP雜湊。根據源 IP 地址將連接分發到後端伺服器。如果 webnode 發生故障並停止服務,則分佈會發生變化。只要所有伺服器都在執行,給定的客戶端 IP 地址將始終轉到同一個 Web 伺服器。
  • 網址雜湊。很像源 IP 散列,除了散列是在請求的 URL 上完成的。在代理記憶體前進行負載平衡時很有用,因為對給定對象的請求將始終只發送到一個後端記憶體。這避免了記憶體重複,將相同的對象儲存在多個/所有記憶體中,並增加了後端記憶體的有效容量。
  • 最少連接,加權最少連接。負載平衡器監視每個伺服器的打開連接數,並發送到最不繁忙的伺服器。
  • 最少流量,加權最少流量。負載平衡器監視來自每個伺服器的比特率,並發送到具有最少傳出流量的伺服器。
  • 最少的延遲Perlbal向後端伺服器發出一個快速的 HTTP OPTIONS 請求,並將請求發送到第一個伺服器以進行應答。

可以說,以上不是嚴格的電腦科學意義上的算法,它們是對常見方法的更一般的描述。這是 Cisco 的一篇小論文,其中更詳細地描述了他們使用的一些算法。其他供應商的實現會略有不同。

在某些極端情況下,更奇特的算法很有用——例如,影片流可能很適合“最少流量”。但一般來說,對於大多數 Web 應用程序和網站來說,最優的解決方案是:

  • 一個共享/分佈式會話系統,因此任何 web 節點都可以響應任何使用者請求(即,會話 cookie 等使用者會話數據對所有伺服器同樣可用)。
  • 使用循環(可選加權循環)或隨機分佈進行負載平衡。Round Robin 和 Random 是簡單且有彈性的算法,沒有任何“熱點”問題,即後端的負載分配在所有情況下都保持公平。

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