[FreeBSD & Linux]網站分流:簡易架設 HAProxy 伺服器

最近在玩這套 Web 的 Load Balance 軟體,其實這是之前我寫的一篇:[筆記] FreeBSD 一張網卡多重 ip 實現 Round Robin DNS Load Balancing,有網友留言給我說可以玩看看 HAProxy,這樣的確改善了很多效能,而且也是正確達到 load balance 的效果,不然用 DNS Robin DNS Load Balancing 的方式的卻沒辦法做的很好,關於 HAProxy 在 google 了一下,好像國內很少人在寫這方面的教學,我自己來寫一下筆記好了,其實我還不是對設定很熟悉,只是大概知道他的原理罷了,底下我們來看看官網的一張圖 haproxy-pmode 其實原理很簡單,就是在最前面擺一台簡單的電腦架設 HAProxy 來達成分流功能,後端擺幾台 WEB 伺服器,然後最後面在擺一台資料庫MySQL或者是其他的資料庫,然後去設定 HAProxy 看看哪個ip進來就把它導向到後端的部份,然後後端機器就是設定一下 apache 的 virtualhost,其實這樣就差不多了 第一步:架設 FreeBSD 的 HAProxy
Port:   haproxy-devel-1.3.12.2
Path:   /usr/ports/net/haproxy-devel
Info:   The Reliable, High Performance TCP/HTTP Load Balancer
Maint:  hugo@barafranca.com
B-deps:
R-deps:
WWW:    http://haproxy.1wt.eu/
進行安裝:
#
# cd /usr/ports/net/haproxy-devel
#
make install clean
第二步:設定 HAProxy 的 conf 檔
#
# vi /usr/local/etc/haproxy.conf
#
global
        maxconn         32768
        user            nobody
        group           nobody
        daemon
        nbproc          8
listen blog-balancer
        bind            140.123.107.54:80
        mode            http
        balance         roundrobin
        maxconn         32768
        clitimeout      60000
        srvtimeout      60000
        contimeout      5000
        retries         3

        server          blog1 192.168.1.1:80 weight 3 check
        server          blog2 192.168.1.2:80 weight 3 check
        server          blog3 192.168.1.3:80 weight 3 check
        option          forwardfor
        option          httpclose
        option          httplog
        option          redispatch
        option          dontlognull
上面資料,我是參考 網路大神 Gslin 大大的 wiki,其實我自己還不太瞭解怎麼設定,所以要去參考官網寫的設定教學 第三步:要在後端主機設定 apache virtualhost

ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
 
後端三台都是要加上這些設定,這樣在轉過去的時候,才會出現正確網站,大致設定這樣就可以 work 參考網站: http://haproxy.1wt.eu/ 商業服務的Rails HTTP Cluster觀念及測試 Load Balancing & QoS with HAProxy http://www.ecase.com.cn/blog/?p=14 http://wiki.gslin.org/haproxy 期刊/商業服務的Rails伺服器叢集觀念與實做(下)