Tuesday, December 7, 2010

網站分流:簡易架設 HAProxy 伺服器

最近在玩這套 Web 的 Load Balance 軟體,其實這是之前我寫的一篇:[筆記] FreeBSD 一張網卡多重 ip 實現 Round Robin DNS Load Balancing,有網友留言給我說可以玩看看 HAProxy,這樣的確改善了很多效能,而且也是正確達到 load balance 的效果,不然用 DNS Robin DNS Load Balancing 的方式的卻沒辦法做的很好,關於 HAProxy 在 google 了一下,好像國內很少人在寫這方面的教學,我自己來寫一下筆記好了,其實我還不是對設定很熟悉,只是大概知道他的原理罷了,底下我們來看看官網的一張圖

[url=http://www.flickr.com/photos/appleboy/2603471691/][img]http://farm4.static.flickr.com/3211/2603471691_c77e333374_o.png[/img][/url]



其實原理很簡單,就是在最前面擺一台簡單的電腦架設 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

<VirtualHost 10.1.2.3>

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

</VirtualHost>

後端三台都是要加上這些設定,這樣在轉過去的時候,才會出現正確網站,大致設定這樣就可以 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伺服器叢集觀念與實做(下)


Reference: http://blog.wu-boy.com/2008/06/23/283/

No comments: