最近在玩這套 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
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
</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:
Post a Comment