Apache 和 MySQL 的 HAProxy 平衡算法
就在最近,我負責一個使用 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
您一起通常會實現非常可預測和穩定的平衡,這種平衡與權重密切相關。