天天看點

haproxy 新手上路

apache、nginx之類的反向代理(轉發)功能,通常隻能用于http協定,其它協定就不好使了(注:nginx據說商業版的,支援tcp協定了)。

以下環境均為mac OSX。

一、安裝

brew install haproxy 

安裝後的路徑為:

/usr/local/Cellar/haproxy/1.6.0

安裝完成後,輸入

haproxy -version 如果能看到類似下面的輸出:

HA-Proxy version 1.6.0 2015/10/13

Copyright 2000-2015 Willy Tarreau <[email protected]>

表示安裝成功

二、http轉發配置

随便找個目錄(比如:~/work/cfg/),建立haproxy.cfg檔案(檔案名随意),參考内容如下:

主要是最後三行,表示将本機9000端口的http通路,轉發到127.0.0.1:8081端口,即通路: http://127.0.0.1:9000 相當于通路http://127.0.0.1:8081

三、啟動

haproxy -f ~/work/cfg/haproxy.cfg -d 

正常的話,會輸出下面這些:

Available polling systems :

kqueue : pref=300, test result OK

poll : pref=200, test result OK

select : pref=150, test result OK

Total: 3 (3 usable), will use kqueue.

Using kqueue() as the polling mechanism.

此時,通路http://localhost:9000/ 應該有結果 ,同時終端會有相關的資訊輸出

注:如果啟動時,提示bind某端口失敗之類的,先檢查端口是否被占用

指令 lsof -i tcp:port  (port替換成端口号,比如9000)可以檢視該端口被什麼程式占用,并顯示pid,友善kill程序

如果端口也未占用,嘗試換成一個高一些的端口,我在mac本機嘗試時,剛開始使用80或81端口,始終起不來,用上述指令查端口占用,也沒被占用,換成一個高位端口後,才正常啟動,不知道是不是個别現象。

四、http負載均衡示例

上面的配置表示,通路http://localhost:9000/時,會轉發到127.0.0.1:80或192.168.1.14:80中的一台

另外,通路 http://localhost:9000/haproxy-stats 還能看到一個統計頁面, http://localhost:9000/haproxy-test 用于測試haproxy工作是否正常

五、tcp負載均衡配置示例

注意下:8,9這二行,這表示如果某個節點挂了,重試3次以後,會轉發到其它節點,即單點故障遷移

參考文章:

<a href="http://cbonte.github.io/haproxy-dconv/configuration-1.6.html" target="_blank">http://cbonte.github.io/haproxy-dconv/configuration-1.6.html</a>

繼續閱讀