Apache-2.2

Apache 和 MySQL 的 HAProxy 平衡算法

  • May 8, 2015

就在最近,我負責一個使用 Apache 網路伺服器和 MySQL 數據庫的現有項目。

Web 伺服器位於 HAProxy 負載均衡器後面,應用程序通過另一個 HAProxy 連接到 MySQL 從屬伺服器。

10 個網路伺服器中有 2 個是最近添加的,比舊的更強大。MySQL 從站也是如此:這 5 個從站中的 2 個擁有更多的 RAM 和 CPU。

Apache 伺服器的平衡算法是minimumconn,從屬伺服器是source。至少 MySQL 伺服器的設置我覺得很奇怪,因為在最壞的情況下,如果我正確理解HAProxy 文件,“最好的”apache(權重最大)總是可以選擇最差的 MySQL 伺服器。我會選擇調整權重的循環賽:

  • 10 為三個正常的MySQL伺服器
  • 20個更強的MySQL伺服器

而且因為 apaches 落後於 HAProxy 並有 20 秒的超時,所以我也更願意應用roundrobin

  • 10為八台普通apache伺服器
  • 20 用於更強大的 apache 伺服器

(我會使用 20 開始。我將觀看監控,稍後會對其進行調整。)

因為伺服器處於託管狀態(如:我沒有 root 訪問權限,更改請求需要一些時間)我只想對這個主題有第二個(或更多)意見:改變平衡是個好主意兩者的算法循環?如果最近沒有任何性能問題,我不會考慮這一點,這只是我認為值得調整的一個地方。

感謝您的任何/您的建議!

問候丹尼斯

source確實是一個奇怪的選擇,除非您的應用程序伺服器應該與 DB 從站具有會話持久性。不過,這要你自己弄清楚。

leastconn如果每個伺服器(應用伺服器和數據庫)的性能不是絕對穩定的,通常是一個非常好的選擇。這取決於您的應用程序和平台的詳細資訊。(例如,基於 Java 的應用伺服器可能會由於垃圾收集而出現一段時間的減速,在此期間減少其平衡負載是明智的。)

最後,是的,與roundrobin您一起通常會實現非常可預測和穩定的平衡,這種平衡與權重密切相關。

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