2012-02-15 21 views
11

我很確定這個問題已經解決,但我找不到任何關於它的任何信息...以編程方式將節點添加到像Haproxy這樣的負載均衡器?

系統管理員如何以編程方式向現有和正在運行的負載均衡器添加新節點?比方說,我有一個負載平衡器正在運行,並且已經在兩個EC2實例之間平衡了我的API服務器,突然間出現了流量峯值,並且我需要負載平衡器中的第三個節點,但是我正在睡覺......如果我有一些東西可能監視內存的使用和一些關鍵績效指標告訴我什麼時候應該有另一個節點,甚至更好,如果它可以添加一個新的節點單獨負載平衡器...

我相信,這是可能的,甚至微不足道的node-http-proxydistribute,但我想知道這是否可能與HAproxy和/或Nginx做...我知道亞馬遜的彈性負載平衡可能是我最好的選擇,但我想要做到這一點(我想從rackspace,EC2,Joyent和其他可能的其他人那裏產生實例,因爲它很方便)。

再一次,產卵節點很容易,我想知道如何將它添加到haproxy.cfg或類似的Nginx,而無需重新加載整個代理,並以編程方式進行。巴什腳本是對我最好的選擇,但它仍然需要重新加載整個代理這是不好的,因爲它失去了聯繫......

回答

8

你在裏面有幾個問題。對於「添加節點,無需重新啓動它HAProxy的」:

我對類似的問題做的是預填充與服務器名稱的配置文件..例如web01,web02 ... web20,即使我當時只有5個Web服務器。然後在我的主機文件中,我將它們映射到Web服務器的實際ips。

要添加一個新的服務器,您只需在hosts文件中爲它創建一個條目,它將開始傳遞健康檢查並添加。

對於自動編排,它實際上取決於你的環境,你可能不得不寫一些自定義的東西來滿足你的需求。有付費的解決方案(Scalr想到)來處理業務流程。

+0

這是一個非常好的主意!謝謝! – 2012-03-15 19:32:31

7

我做什麼:我在haproxy.cfg我的後端部分中的線,說:

# new webservers here 

並配有sed腳本我喜歡的東西更新haproxy.cfg:

sed -i -e "/new webservers here/a\ server $ip_address $ip_address:12080 check maxconn 28 weight 100" 

然後重新加載haproxy。透明地工作。

+1

這是一個推薦的方法來做到這一點?對我來說似乎不實際。雖然,它的作品。 – hugofcampos 2016-06-04 18:03:15