Load-Balancing

在多個 HAProxy 之間共享連接狀態

  • September 29, 2016

我需要將我們目前基於單台伺服器的基礎架構升級為多台伺服器。基本上我們執行一個 HTTP 應用程序、MySQL 和其他服務。

我的想法是把 HAProxy 放在所有伺服器上,這樣他們就可以自己平衡/故障轉移。

像這樣的東西:

       WAN
   |         |
|------|  |------|
| HAP1 |  | HAP2 |      HAProxy servers 
|------|  |------|
  \         /
   ----X----
  /         \
|------|  |------|
| NGX1 |  | NGX2 |      Nginx webservers
|------|  |------|

這個想法是使用指向 HAP 伺服器的循環 DNS 配置公共主機名,然後將平衡到 Web 伺服器。

為了獲得不完全隨機的平衡,我希望使用leastconn算法,但問題來了:**HAP 伺服器是否可以相互共享它們如何平衡傳入連接?**我想避免兩台伺服器都考慮由於上游循環而解除安裝後端。

編輯:我想避免使用keepalived和兩個 HAP 共享的虛擬 IP,因為伺服器將位於不同的數據中心。

如果您計劃在不同的數據中心擁有主動/主動負載均衡器,那麼兩種方式都很難可靠地共享連接狀態資訊。

鑑於您關心後端伺服器上的負載作為決定選擇哪個伺服器的一種方式,因此您應該去找他們確定要發送多少流量。

值得慶幸的是,HAProxy 對此有一些指令:agent-check, agent-port.

我想weight並且agent-inter也應該包括在內,因為它們在這裡也有一些影響。

這允許您在每個後端伺服器上執行一個服務,該服務將響應一個字元串,如docs中所述,這將影響伺服器的權重。

代理幾乎可以檢查任何內容(CPU、記憶體、網路、相關服務、時間、天氣),只要它返回 HAProxy 可以使用和理解的合理值。

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